清华软件工程课件第11章_软件测试

上传人:bin****86 文档编号:54925488 上传时间:2018-09-22 格式:PPT 页数:161 大小:1.30MB
返回 下载 相关 举报
清华软件工程课件第11章_软件测试_第1页
第1页 / 共161页
清华软件工程课件第11章_软件测试_第2页
第2页 / 共161页
清华软件工程课件第11章_软件测试_第3页
第3页 / 共161页
清华软件工程课件第11章_软件测试_第4页
第4页 / 共161页
清华软件工程课件第11章_软件测试_第5页
第5页 / 共161页
点击查看更多>>
资源描述

《清华软件工程课件第11章_软件测试》由会员分享,可在线阅读,更多相关《清华软件工程课件第11章_软件测试(161页珍藏版)》请在金锄头文库上搜索。

1、软件工程,第11章 软件测试,2018/9/22,软件工程,2/161,内容摘要,软件测试基础 白盒测试 黑盒测试 测试策略 面向对象测试 测试完成标准 调试,2018/9/22,软件工程,3/161,内容摘要,软件测试基础 白盒测试 黑盒测试 测试策略 面向对象测试 测试完成标准 调试,2018/9/22,软件工程,4/161,软件测试基础,软件测试的目的 软件测试的基本原则 白盒测试和黑盒测试,2018/9/22,软件工程,5/161,有关软件测试的错误观点,“软件测试是为了证明程序是正确的,即测试能发现程序中所有的错误”。事实上这是不可能的。要通过测试发现程序中的所有错误,就要穷举所有可

2、能的输入数据。对于一个输入三个16位字长的整型数据的程序,输入数据的所有组合情况有248 3*1014,如果测试一个数据需1ms,则即使一年365天一天24小时不停地测试,也需要约1万年。,2018/9/22,软件工程,6/161,对一个具有多重选择和循环嵌套的程序,不同的路径数目可能是天文数字。例如一个小程序的流程图,它包括了一个执行20次的循环,其循环体有五个分支。这个循环的不同执行路径数达520条,如果对每一条路径进行测试需要1毫秒,那么即使一年工作365 24小时,要想把所有路径测试完,大约需3170年。,2018/9/22,软件工程,7/161,2018/9/22,软件工程,8/16

3、1,“程序测试是证明程序正确地执行了预期的功能”。实际上,一个程序不仅要完成它所需完成的功能,而且不应完成它不该做的事。如不能把边长为0、0、0的三条边判断为等边三角形。,2018/9/22,软件工程,9/161,软件测试的目的,Glen Myers给出的软件测试目的: 测试是一个为了发现错误而执行程序的过程 一个好的测试用例是指很可能找到迄今为至尚未发现的错误的测试用例 一个成功的测试是指揭示了迄今为至尚未发现的错误的测试根据这个测试目的,我们应该排除对测试的错误观点,设计合适的测试用例,用尽可能少的测试用例,来发现尽可能多的软件错误。,2018/9/22,软件工程,10/161,软件测试的

4、原则,Davis提出了一组指导软件测试的基本原则: 1.所有的测试都应可追溯到客户需求 2.应该在测试工作真正开始前的较长时间就进行测试计划 3. Pareto原则:测试中发现的80%的错误可能来自于20%的程序代码 4.测试应从“小规模”开始,逐步转向“大规模” 5.穷举测试是不可能的 6.为了达到最有效的测试,应由独立的第三方来承担测试,2018/9/22,软件工程,11/161,其他的测试原则: 1.在设计测试用例时,应包括合理的输入条件和不合理的输入条件 2.严格执行测试计划,排除测试的随意性 3.应当对每一个测试结果做全面检查 4.妥善保存测试计划、测试用例、出错统计和最终分析报告,

5、为维护提供方便 5.检查程序是否做了应做的事仅是成功的一半,另一半是检查程序是否做了不该做的事 6.在规划测试时不要设想程序中不会查出错误,2018/9/22,软件工程,12/161,白盒测试与黑盒测试,测试用例的设计是软件测试的关键所在 设计尽可能少的测试用例来发现尽可能多的错误 设计最有可能发现软件错误的测试用例,同时避免使用发现错误效果相同的测试用例 测试用例的设计方法大体可分为两类:白盒测试和黑盒测试,也称白箱测试和黑箱测试,2018/9/22,软件工程,13/161,白盒测试(又称为结构测试)把测试对象看作一个透明的盒子,测试人员根据程序内部的逻辑结构及有关信息设计测试用例,检查程序

6、中所有逻辑路径是否都按预定的要求正确地工作。 白盒测试主要用于对模块的测试,包括: 程序模块中的所有独立路径至少执行一次 对所有逻辑判定的取值(“真”与“假”)都至少测试一次 在上下边界及可操作范围内运行所有循环 测试内部数据结构的有效性等,2018/9/22,软件工程,14/161,黑盒测试(又称行为测试)把测试对象看做一个黑盒子,测试人员完全不考虑程序内部的逻辑结构和内部特性,只依据程序的需求规格说明书,检查程序的功能是否符合它的功能需求。 黑盒测试可用于各种测试,它试图发现以下类型的错误: 不正确或遗漏的功能 接口错误,如输入/输出参数的个数、类型等 数据结构错误或外部信息(如外部数据库

7、)访问错误 性能错误 初始化和终止错误,2018/9/22,软件工程,15/161,内容摘要,软件测试基础 白盒测试 黑盒测试 测试策略 面向对象测试 测试完成标准 调试,2018/9/22,软件工程,16/161,白盒测试,常用的白盒测试方法有: 逻辑覆盖测试 基本路径覆盖测试 数据流测试 循环测试,2018/9/22,软件工程,17/161,逻辑覆盖测试,语句覆盖判定覆盖条件覆盖,判定条件覆盖条件组合覆盖路径覆盖,逻辑覆盖主要考察使用测试数据运行被测程序时对程序逻辑的覆盖程度。通常希望选择最少的测试用例来满足所需的覆盖标准。主要的覆盖标准有:,2018/9/22,软件工程,18/161,例

8、:对下列子程序进行测试procedure example(y,z:real;var x:real); beginif (y1) and (z=0) then x:=x/y;if (y=2) or (x1) then x:=x+1; end;该子程序接受x、y、z的值,并将计算结果x的值返回给调用程序。 与该子程序对应的流程图如下:,2018/9/22,软件工程,19/161,2018/9/22,软件工程,20/161,该子程序有两个判定: a: (y1) and (z=0) c: (y=2) or (x1) 判定a中有两个判定条件: y1、 z=0 判定c中有两个判定条件: y=2 、“x1”

9、根据程序的执行流程不同,判定c中的“x1”的含义也不同。 当判定a为“真”时, “x1”实际是“x/y1”,即“xy”; 当判定a为“假”时, “x1”仍是“x1”。,2018/9/22,软件工程,21/161,该子程序有四条可执行路径: 路径1 sabcde , 其执行条件(L1)是a为“t”且c为“t” L1= (y1) and (z=0) and (y=2) or (x/y1) = (y1) and (z=0) and (y=2) or(y1) and (z=0) and (x y ) = (y=2) and (z=0) or(y1) and (z=0) and (x y ),2018/

10、9/22,软件工程,22/161,路径2 sace ,其执行条件(L2)是a为“f”且c为“f”) L2 = not(y1) and (z=0) and not(y=2) or (x1) = not (y1) or not (z=0) and not (y=2) and not (x1) = not (y1) and not (y=2) and not (x1)or not (z=0) and not (y=2) and not (x1) =(y1) and (y2) and (x 1)or (z 0) and (y 2) and (x 1),2018/9/22,软件工程,23/161,路径3

11、 sacde ,其执行条件(L3)是a为“f”且c为“t”) L3 = not (y1) and (z=0) and(y=2) or (x1) = not (y1) or not (z=0) and (y=2) or (x1) = not (y1) and (y=2) or not (y1) and (x1) ornot (z=0) and (y=2) ornot (z=0) and (x1) = (y 1) and (y=2) or (y 1) and (x1) or(z 0) and (y=2) or (z 0) and (x1),2018/9/22,软件工程,24/161,路径4 sab

12、ce ,其执行条件(L4)是a为“t”且c为“f”) L4 = (y1) and (z=0) andnot (y=2) or (x/y1) = (y1) and (z=0) and not (y=2) and not (x y) =(y1) and (z=0) and (y 2) and (x y),2018/9/22,软件工程,25/161,语句覆盖,语句覆盖是指选择足够的测试用例,使得运行这些测试用例时,被测程序的每个可执行语句都至少执行一次欲使每个语句都执行一次,只需执行路径L1(sabcde)即可。L1= (y=2) and (z=0) or(y1) and (z=0) and (x

13、y ) 测试用例如下:,2018/9/22,软件工程,26/161,判定覆盖,判定覆盖(也称分支覆盖)是指选择足够的测试用例,使得运行这些测试用例时,被测程序的每个判定的所有可能结果都至少执行一次(即判定的每个分支至少经过一次),2018/9/22,软件工程,27/161,欲使每个分支都执行一次,只需执行路径L3(sacde ,a为“f”且c为“t”)和L4(sabce ,a为“t”且c为“f”) 即可。 或者,执行路径L1(sabcde,a为“t”且c为“t”)和L2(sace ,a为“f”且c为“f”).,2018/9/22,软件工程,28/161,L3(sacde ,a为“f”且c为“t

14、”): (y 1) and (y=2) or (y 1) and (x1) or(z 0) and (y=2) or (z 0) and (x1) L4(sabce ,a为“t”且c为“f”): (y1) and (z=0) and (y 2) and (x y),a: (y1)and (z=0) c: (y=2) or (x1),2018/9/22,软件工程,29/161,判定覆盖将每个判定的所有可能结果都至少执行一次,所以,程序中的所有语句也必定都至少执行一次。因此,满足判定覆盖标准的测试用例也一定满足语句覆盖标准。,2018/9/22,软件工程,30/161,条件覆盖,条件覆盖是指选择足

15、够的测试用例,使得运行这些测试用例时,被测程序的每个判定中的每个条件的所有可能结果都至少出现一次,2018/9/22,软件工程,31/161,判定a中各种条件的所有可能结果:y1, y 1 ,z=0, z 0。 判定c中各种条件的所有可能结果:y=2, y 2 ,x1(或xy), x 1 (或x y) 。,a: (y1)and (z=0) c: (y=2) or (x1),2018/9/22,软件工程,32/161,条件覆盖通常比判定覆盖强,但有时虽然每个条件的所有可能结果都出现过,但判定表达式的某些可能结果并未出现。上面的二个测试用例满足了条件覆盖标准,但判定c为“假”的结果并未出现。,20

16、18/9/22,软件工程,33/161,判定/条件覆盖,判定/条件覆盖是指选择足够的测试用例,使得运行这些测试用例时,被测程序的每个判定的所有可能结果都至少执行一次,并且,每个判定中的每个条件的所有可能结果都至少出现一次显然,满足判定/条件覆盖标准的测试用例一定也满足判定覆盖、条件覆盖、语句覆盖标准。,2018/9/22,软件工程,34/161,a: (y1)and (z=0) c: (y=2) or (x1),2018/9/22,软件工程,35/161,条件组合覆盖,条件组合覆盖是指选择足够的测试用例,使得运行这些测试用例时,被测程序的每个判定中条件结果的所有可能组合都至少出现一次显然,满足条件组合覆盖标准的测试用例一定也满足判定覆盖、条件覆盖、判定/条件覆盖、语句覆盖标准。,2018/9/22,软件工程,36/161,

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > PPT模板库 > PPT素材/模板

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号