软件工程模型与方法12、软件测试.ppt
《软件工程模型与方法12、软件测试.ppt》由会员分享,可在线阅读,更多相关《软件工程模型与方法12、软件测试.ppt(107页珍藏版)》请在课桌文档上搜索。
1、软件工程模型与方法Models&Methods of Software Engineering,本章内容,12.1 软件测试基础12.2 软件测试方法与技术12.3 软件测试过程12.4 面向对象的测试方法12.5 程序的静态分析方法12.6 软件调试方法12.7 软件测试工具12.8 软件的可靠性,12.1 软件测试基础,本节内容12.1.1 软件测试概述12.1.2 软件的可测试性12.1.3 软件测试的对象12.1.4 软件测试信息流12.1.5 软件测试步骤12.1.6 软件测试流程12.1.7 软件测试与软件开发各阶段的关系12.1.8 程序错误的分类,12.1.1 软件测试概述,软
2、件测试是为了发现错误而执行程序的过程。软件测试在软件生存期中横跨两个阶段:单元测试 综合测试 软件测试的目的:测试是程序的执行过程,目的在于发现错误,而不是证明软件的正确 一个好的测试用例在于能发现至今未发现的错误 一个成功的测试是发现了至今未发现的错误的测试。,12.1.1 软件测试概述,软件测试的原则:应当尽早地和不断地进行软件测试 测试用例应由测试输入数据和与之对应的预期输出结果这两部分组成程序员应避免测试自己的程序 在设计测试用例时,应当包括合理的输入条件和不合理的输入条件 充分注意测试中的群集现象 严格执行测试计划,排除测试的随意性 应当对每一个测试结果做全面检查 妥善保存测试计划,
3、测试用例,出错统计和最终分析报告,为维护提供方便。,12.1.2 软件的可测试性,影响软件可测试性的因素:可操作性:运行的越好,被测试的效率越高 可观察性:所看见的就是所测试的 可控制性:对软件的控制越好,测试越能被自动执行与优化 可分解性:通过控制测试范围,能够更快地分解问题,执行更灵巧的再测试 简单性:需要测试的内容越少,测试的速度越快 稳定性:改变越小,对测试的破坏越小 易理解性:得到的信息越多,进行的测试越灵巧,12.1.3 软件测试的对象,软件测试并不等于程序测试,应该贯穿于软件开发的整个期间。需求分析、概要设计、详细设计以及程序编码等各个阶段所得到的文档,都应该成为测试的对象。为了
4、把握各个环节的正确性,人们需要进行各种确认和验证工作:确认(Validation):是一系列的活动和过程,其目的是证实在一个给定的外部环境中软件的逻辑正确性。需求规格说明的确认程序的确认 验证(Verification):试图证明在软件生存期各个阶段,以及阶段间的逻辑协调性、完备性和正确性。,12.1.3 软件测试的对象,12.1.4 软件测试信息流,软件配置:包括软件需求规格说明、软件设计规格说明、源代码等 测试配置:包括测试计划、测试用例、测试驱动程序等 测试工具:测试工具为测试的实施提供某种服务。,12.1.5 软件测试步骤,12.1.6 软件测试流程,理解测试需求编写测试计划 设计测试
5、方案 开发测试用例 执行软件测试 评估测试效果 编写测试文档,软件测试文档,软件测试计划:根据系统/子系统需求规格说明定义的软件配置项,说明测试项目、测试用例、测试人员,使软件测试能有效地管理和控制。软件测试说明:测试项目的具体分析,区分自动测试和手工测试;构造测试平台;定义测试过程。软件测试记录:执行软件测试用例,记录测试结果。软件问题报告:软件测试的结果汇总,分析软件的质量和存在的问题,并通知开发单位。软件问题处理报告:开发单位根据问题处理得出的解决方法,软件重新提交测试。软件测试报告:是整个测试的总结性文档。,12.1.7软件测试与软件开发各阶段的关系,12.1.8 软件错误的分类,按错
6、误的影响和后果分类:较小错误:只对系统输出有一些非实质性影响。如,输出的数据格式不合要求等。中等错误:对系统的运行有局部影响。如输出的某些数据有错误或出现冗余。较严重错误:系统的行为因错误的干扰而出现明显不合情理的现象。比如开出了0.00元的支票,系统的输出完全不可信赖。严重错误:系统运行不可跟踪,一时不能掌握其规律,时好时坏。非常严重的错误:系统运行中突然停机,其原因不明,无法软启动。最严重的错误:系统运行导致环境破坏,或是造成事故,引起生命、财产的损失。,12.1.8 软件错误的分类,按错误的性质和范围分类:(1)功能错误:规格说明错误;功能错误;测试错误;测试标准引起的错误;(2)系统错
7、误:外部/内部接口错误;硬件结构错误;操作系统错误;软件结构错误;控制与顺序错误;资源管理错误;(3)加工错误:算术与操作错误;初始化错误;控制和次序错误;静态逻辑错误;(4)数据错误:动态/静态数据错误;数据内容错误;数据结构错误;数据属性错误;(5)代码错误:语法错误;打字错误;对语句或指令不正确理解所产生的错误。,12.1.8 软件错误的分类,按软件生存期阶段分类(1)问题定义(需求分析)错误:由于需求分析没有准确定义用户要求(2)规格说明错误:规格说明与问题定义不一致;(3)设计错误:设计与规格说明不相符(4)编码错误:编码未很好实现设计结果,包括:数据使用类错误、控制流错误、界面错误
8、、输入输出错误等。,12.2 软件测试方法与技术,本节内容12.2.1 测试技术分类12.2.2 白盒测试技术12.2.3 黑盒测试技术12.2.4 测试方法选择的综合策略12.2.5 针对专门环境和应用的测试,12.2.1 测试技术分类,软件测试技术从大的方面可以分为两类:静态测试:对软件进行分析、检查和审阅,不实际运行被测试的软件。约可找出3070%的逻辑设计错误 动态测试:通过运行软件来检验软件的动态行为和运行结果的正确性 黑盒测试:已知产品的功能设计规格,可以进行测试证明每个实现了的功能是否符合要。白盒测试:已知产品的内部工作过程,可以通过测试证明每种内部操作是否符合设计规格的要求。,
9、黑盒测试,黑盒测试:在不考虑程序内部结构和内部特征的情况下,根据软件产品的功能设计规格说明,在计算机上进行测试,以证实每个实现了的功能是否符合要求。又叫做功能测试、数据驱动测试或基于规格说明的测试。黑盒测试主要是为了发现以下几类错误:功能错误或遗漏 输入和输出接口的正确性 数据结构或外部信息访问错误 性能要求满足情况 初始化或终止性错误,白盒测试,白盒测试:指根据软件产品的内部工作过程,在计算机上进行测试,以证实每种内部操作是否符合设计规格要求,所有内部成分是否已经过检查。又称为结构测试、逻辑驱动测试或基于程序的测试。白盒测试方法主要对程序模块进行如下检查:程序模块所有独立执行路径至少测试一次
10、 所有逻辑判定分支至少测试一次 循环边界和运行界限内执行情况 程序内部数据结构的有效性,黑盒测试与白盒测试的比较,测试用例的选择,唯一能够保证程序正确的测试方法就是“穷举测试”,但是对于一般的软件系统,无论是黑盒测试还是白盒测试,可能的测试用例都是天文数字。,假设一个程序P有输入X和Y及输出Z,字长为32位的计算机上运行。如果X、Y只取整数,考虑把所有的X、Y值都作为测试数据,测试数据组(Xi,Yi)的最大可能数目为:232232264。如果程序P测试一组X、Y数据需要1毫秒,且一天工作24小时,一年工作365天,要完成264组测试,需要5亿年。,测试用例的选择,任何软件开发项目都要受到期限、
11、费用、人力和机时等条件的限制,实行穷举测试工作量过大,实施起来是不现实的。为了节省时间和资源,提高测试效率,必须从数量极大的可用测试用例中精心地挑选少量的测试数据,使得采用这些测试数据能够达到最佳的测试效果,于是人们对如何挑选有效的测试用例进行了研究,下面就分别介绍几种行之有效的测试用例设计方法。,12.2.2白盒测试技术,基本白盒测试技术:1.逻辑覆盖2.基本路径测试3.控制结构测试,1.逻辑覆盖,逻辑覆盖是以程序内部的逻辑结构为基础的设计测试用例的一种白盒测试技术。可分为:语句覆盖判定覆盖判定条件覆盖条件组合覆盖路径覆盖,语句覆盖,语句覆盖:语句覆盖就是设计若干个测试用例,运行被测程序,使
12、得每一可执行语句至少执行一次。这种覆盖又称为点覆盖,它使得程序中每个可执行语句都得到执行。测试用例:A=2,B=0,X=4语句覆盖是最弱的逻辑覆盖准则。,判定覆盖,判定覆盖:判定覆盖就是设计若干个测试用例,运行被测程序,使得程序中每个判断的取真分支和取假分支至少经历一次。测试用例:A=3,B=0,X=3 可覆盖a、c、d分支A=2,B=1,X=1 可覆盖a、b、e分支判定覆盖只比语句覆盖稍强一些,但还是很弱。,条件覆盖,条件覆盖:条件覆盖就是设计若干个测试用例,运行被测程序,使得程序中每个判断的每个条件的可能取值至少执行一次。,判定条件覆盖,判定条件覆盖:判定条件覆盖就是设计足够的测试用例,使
13、得判断中每个条件的所有可能取值至少执行一次,同时每个判断本身的所有可能判断结果至少执行一次。,多重条件覆盖,多重条件覆盖:多重条件覆盖就是设计足够的测试用例,运行被测程序,使得每个判断的条件结果的所有可能取值组合至少执行一次。,路径测试,路径测试:路径测试就是设计足够的测试用例,覆盖程序中所有可能的路径;路径测试是最强的覆盖准则。,2.基本路径测试,路径测试是最强的覆盖准则,但实际上,一个不太复杂的程序,路径数都是非常庞大的,所以真正做到完全路径覆盖是很困难的,必须把覆盖路径数目压缩到一定限度。基本路径测试是在程序控制流图的基础上,通过分析控制构造的环路复杂性,导出基本可执行路径集合,从而设计
14、测试用例的方法。,基本路径测试步骤,导出程序流程图的拓扑结构-控制流图 计算控制流图G的环路复杂度V(G)确定只包含独立路径的基本路径集设计测试用例,导出程序的控制流图,复合条件表达式,如果判断语句中是复合条件,即由一个或多个逻辑运算符:or,and,nand,nor连接的逻辑表达式,则需要将判断改为一系列单条件的嵌套判断。,计算程序环路复杂性,进行程序的基本路径测试时,程序的环路复杂性给出了程序基本路径集合中的独立路径条数,这是确保程序中每个可执行语句至少执行一次所必需的测试用例数目的上界。所谓独立路径,是指包括一组以前没有处理的语句或条件的一条路径。通常环路复杂性可用以下三种方法求得:将环
15、路复杂性定义为控制流图中的区域数。设E为控制流图的边数,N为图的结点数,则定义环路复杂性为 V(G)EN2。若设P为控制流图中的判定结点数,则有 V(G)P1。,基本路径集,path1:1-11path2:1-2-3-4-5-10-1-11path3:1-2-3-6-8-9-10-1-11path4:1-2-3-6-7-9-10-1-11,导出测试用例,采用基本路径法导出测试用例的步骤为:以详细设计或源代码为基础,导出程序的控制流图;计算得到的控制流图G的环路复杂性V(G);确定现行无关的路径基本集;利用逻辑覆盖方法生成测试用例,确保基本路径集中每条路径的执行。,3.控制结构测试,关于分支结构
16、路径数的讨论,嵌套型分支若有n个判定语句,则需要n+1个测试用例,连锁型分支若有n个判定语句,则需要2n个测试用例,减少测试用例,为减少测试用例的数目,可采用试验设计法,抽取部分路径进行测试。1)设耦合型分支结构中有n个判定,计算满足关系式 n+12m 的最小自然数m;2)设t=2m,取正交表Lt,并利用它设计测试数据。,条件测试的策略,程序中的条件分为简单条件和复合条件。简单条件是一个布尔变量或一个关系表达式(可加前缀NOT);复合条件由简单条件通过逻辑运算符(AND、OR、NOT)和括号连接而成。如果条件出错,至少是条件中某一成分有错。条件中可能的出错类型有:布尔运算符错、布尔变量错、布尔
17、括号错、关系运算符错、算术表达式错。,BRO 测试法,BRO(分支与关系运算符)测试法可以发现多个布尔运算符或关系运算符错,以及其它错误。BRO策略引入条件约束的概念。设有n个简单条件的复合条件C,其条件约束为D=(D1,D2,Dn),其中Di(1in)是条件C中第i个简单条件的输出约束。如果在C的执行过程中,其每个简单条件的输出都满足D中对应的约束,则称条件C的条件约束D由C的执行所覆盖。特别地,布尔变量或布尔表达式的输出约束必须是真(t)或假(f);关系表达式的输出约束为符号、=、。,循环测试,简单循环测试,对于简单循环,测试应包括以下几种。其中的 n 表示循环允许的最大次数。零次循环:从
18、循环入口直接跳到循环出口。一次循环:查找循环初始值方面的错误。二次循环:检查在多次循环时才能暴露的错误。m次循环:此时的mn,也是检查在多次循环时才能暴露的错误。最大次数循环、比最大次数多一次的循环、比最大次数少一次的循环。,嵌套循环测试,对于嵌套循环,不能将简单循环的测试方法简单地扩大到嵌套循环,下面给出一种有助于减少测试数目的测试方法。除最内层循环外,从最内层循环开始,置所有其它层的循环为最小值;对最内层循环做简单循环的全部测试。测试时保持所有外层循环的循环变量为最小值。另外,对越界值和非法值做类似的测试。逐步外推,对其外面一层循环进行测试。测试时保持所有外层循环的循环变量取最小值,所有其
19、它嵌套内层循环的循环变量取“典型”值。反复进行,直到所有各层循环测试完毕。对全部各层循环同时取最小循环次数,或者同时取最大循环次数。对于后一种测试,由于测试量太大,需人为指定最大循环次数。,连锁与非结构循环测试,对于连锁循环,要区别两种情况。如果各个循环互相独立,则连锁循环可以用与简单循环相同的方法进行测试。但如果几个循环不是互相独立的,则需要使用测试嵌套循环的办法来处理。对于非结构循环,应该使用结构化程序设计方法重新设计测试用例。,12.2.3黑盒测试技术,等价类划分边界值分析错误推测法因果图法,1.等价类划分,等价类划分是一种典型的黑盒测试方法。该方法是把所有可能的输入数据划分为若干部分,
20、从每一部分中选取少数有代表性的数据作为测试用例。所谓等价类是指某个输入域的子集合,在该子集合中,各个输入数据对于揭露程序中的错误都是等效的。并合理地假定:测试某等价类的代表值就等价于对这一类其它值的测试。采用等价类方法测试系统步骤:划分等价类确定测试用例,划分等价类,等价类的划分有两种不同的情况:有效等价类:是指对于程序规格说明来说,是合理的,有意义的输入数据构成的集合。利用它,可以检验程序是否实现了规格说明预先规定的功能和性能。无效等价类:是指对于程序规格说明来说,是不合理的,无意义的输入数据构成的集合。利用它,可以检查程序中功能和性能的实现是否有不符合规格说明要求的地方。,划分等价类的原则
21、,按区间划分,可得一有二无;按数值集合划分,可得一有一无;如果输入条件是一个布尔量,可得一有一无 按数值划分,可得多有一无;按限制条件或规则划分,可得一有多无;如果已划分的等价类中各元素在程序中的处理方式不同,进一步划分成更小的等价类。,确定测试用例,形成等价类表,每一等价类有一个唯一的编号;设计一个测试用例,使其尽可能多地覆盖尚未覆盖的有效等价类,重复这一步骤,直到所有有效等价类均被测试用例所覆盖。设计一新测试用例,使其只覆盖一个无效等价类,重复这一步骤直到所有无效等价类均被覆盖。,2.边界值分析,人们从长期的测试工作经验得知,大量的错误是发生在输入或输出范围的边界上,而不是在输入范围的内部
22、。通常输入等价类与输出等价类的边界,就是应着重测试的边界情况。应当选取正好等于,刚刚大于,或刚刚小于边界的值作为测试数据,而不是选取等价类中的典型值或任意值作为测试数据。,边界值分析法原则,如果输入条件规定了值的范围,则应选取刚达到这个范围的边界值,以及刚刚超过这个范围的边界值作为测试输入数据 如果输入条件规定了值的个数,则用最大个数、最小个数、比最大个数多1、比最小个数少1的数作为测试用例 如果输出结果限定在某个范围内,则应选取测试用例,使输出结果刚刚达到这个范围的边界值,或刚刚超过这个边界值 如果输出结果规定了个数,则选用使输出结果为最大个数、最小个数、比最大个数多1、比最小个数少1的数作
23、为测试用例 如果输入与输出是有序集合,则应选取集合的第一个元素和最后一个元素作为测试用例 如果程序中使用了一个内部数据结构,则应当选择这个内部数据结构的边界的值作为测试用例 分析规格说明书,找到其他可能的边界条件进行测试。,3.错误推测法,错误推测法的基本想法是:列举出程序中所有可能有的错误和容易发生错误的特殊情况,根据它们选择测试用例。例如:输入输出为0输入表格为空排序中输入空、一个数据、相等数据、顺序数据、逆序数据等情况,4.因果图法,在测试时必须考虑输入条件的各种组合,可能的组合数将是天文数字。因此必须考虑使用一种适合于描述对于多种条件的组合,相应产生多个动作的形式来考虑设计测试用例,这
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 软件工程 模型 方法 12 软件 测试
链接地址:https://www.desk33.com/p-235724.html