软件工程(第2版)第13章-软件测试

上传人:清晨86****784 文档编号:213903843 上传时间:2021-11-22 格式:PPT 页数:160 大小:2.71MB
返回 下载 相关 举报
软件工程(第2版)第13章-软件测试_第1页
第1页 / 共160页
软件工程(第2版)第13章-软件测试_第2页
第2页 / 共160页
软件工程(第2版)第13章-软件测试_第3页
第3页 / 共160页
软件工程(第2版)第13章-软件测试_第4页
第4页 / 共160页
软件工程(第2版)第13章-软件测试_第5页
第5页 / 共160页
点击查看更多>>
资源描述

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

1、软件工程软件工程第第1313章章 软件测试软件测试复旦大学计算机科学技术学院 软件工程(第二版)内容摘要内容摘要软件测试基础白盒测试黑盒测试测试策略面向对象测试测试完成标准调试2复旦大学计算机科学技术学院 软件工程(第二版)内容摘要内容摘要 软件测试基础软件测试基础白盒测试黑盒测试测试策略面向对象测试测试完成标准调试3复旦大学计算机科学技术学院 软件工程(第二版)软件测试基础软件测试基础软件测试的目的软件测试的基本原则白盒测试和黑盒测试4复旦大学计算机科学技术学院 软件工程(第二版)有关软件测试的错误观点有关软件测试的错误观点 “软件测试是为了证明程序是正确的,即测试能发现程序中所有的错误”要

2、通过测试发现程序中的所有错误,就要穷举所有可能的输入数据,这是不可能的 对于一个输入三个16位字长的整型数据的程序,输入数据的所有组合情况有248 3*1014,如果测试一个数据需1ms,则即使一年365天每天24小时不停地测试,也需要约1万年5复旦大学计算机科学技术学院 软件工程(第二版)对一个具有多重选择和循环嵌套的程序,不同的路径数目可能是天文数字例如一个小程序的流程图,它包括了一个执行20次的循环,其循环体有五个分支。这个循环的不同执行路径数达520条,如果对每一条路径进行测试需要1毫秒,那么即使一年工作365 24小时,要想把所有路径测试完,大约需3170年6复旦大学计算机科学技术学

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

4、现尽可能多的软件错误9复旦大学计算机科学技术学院 软件工程(第二版)软件测试的原则软件测试的原则Davis提出了一组指导软件测试的基本原则:1.所有的测试都应可追溯到客户需求2.应该在测试工作真正开始前的较长时间就进行测试计划3. Pareto原则:测试中发现的80%的错误可能来自于20%的程序代码4.测试应从“小规模”开始,逐步转向“大规模”5.穷举测试是不可能的6.为了达到最有效的测试,应由独立的第三方来承担测试10复旦大学计算机科学技术学院 软件工程(第二版)其他的测试原则:1.在设计测试用例时,应包括合理的输入条件和不合理的输入条件2.严格执行测试计划,排除测试的随意性3.应当对每一个

5、测试结果做全面检查4.妥善保存测试计划、测试用例、出错统计和最终分析报告,为维护提供方便5.检查程序是否做了应做的事仅是成功的一半,另一半是检查程序是否做了不该做的事6.在规划测试时不要设想程序中不会查出错误11复旦大学计算机科学技术学院 软件工程(第二版)白盒测试与黑盒测试白盒测试与黑盒测试 测试用例的设计是软件测试的关键所在 设计尽可能少的测试用例来发现尽可能多的错误 设计最有可能发现软件错误的测试用例,同时避免使用发现错误效果相同的测试用例 测试用例的设计方法大体可分为两类:白盒测试和黑盒测试,也称白箱测试和黑箱测试12复旦大学计算机科学技术学院 软件工程(第二版)白盒测试(又称为结构测

6、试)把测试对象看作一个透明的盒子,测试人员根据程序内部的逻辑结构及有关信息设计测试用例,检查程序中所有逻辑路径是否都按预定的要求正确地工作 白盒测试主要用于对模块的测试,包括:程序模块中的所有独立路径至少执行一次对所有逻辑判定的取值(“真”与“假”)都至少测试一次在上下边界及可操作范围内运行所有循环测试内部数据结构的有效性等13复旦大学计算机科学技术学院 软件工程(第二版) 黑盒测试(又称行为测试)把测试对象看做一个黑盒子,测试人员完全不考虑程序内部的逻辑结构和内部特性,只依据程序的需求规格说明书,检查程序的功能是否符合它的功能需求 黑盒测试可用于各种测试,它试图发现以下类型的错误:不正确或遗

7、漏的功能接口错误,如输入/输出参数的个数、类型等数据结构错误或外部信息(如外部数据库)访问错误性能错误初始化和终止错误14复旦大学计算机科学技术学院 软件工程(第二版)内容摘要内容摘要软件测试基础 白盒测试白盒测试黑盒测试测试策略面向对象测试测试完成标准调试15复旦大学计算机科学技术学院 软件工程(第二版)白盒测试白盒测试常用的白盒测试方法有:逻辑覆盖测试基本路径覆盖测试数据流测试循环测试16复旦大学计算机科学技术学院 软件工程(第二版)逻辑覆盖测试逻辑覆盖测试 语句覆盖 判定覆盖 条件覆盖 判定条件覆盖 条件组合覆盖 路径覆盖逻辑覆盖主要考察使用测试数据运行被逻辑覆盖主要考察使用测试数据运行

8、被测程序时对程序逻辑的覆盖程度。通常测程序时对程序逻辑的覆盖程度。通常希望选择最少的测试用例来满足所需的希望选择最少的测试用例来满足所需的覆盖标准。主要的覆盖标准有:覆盖标准。主要的覆盖标准有:17复旦大学计算机科学技术学院 软件工程(第二版)例:对下列子程序进行测试procedure example(y,z:real;var x:real);begin if (y1) and (z=0) then x:=x/y; if (y=2) or (x1) then x:=x+1;end; 该子程序接受x、y、z的值,并将计算结果x的值返回给调用程序与该子程序对应的流程图如下:18复旦大学计算机科学技

9、术学院 软件工程(第二版)入口s(y1)and(z=0)a(y=2)or(x1)c返回ebx=x/yftdx=x+1ft19复旦大学计算机科学技术学院 软件工程(第二版)该子程序有两个判定:a: (y1) and (z=0) c: (y=2) or (x1) 判定a中有两个判定条件: y1、 z=0判定c中有两个判定条件: y=2 、x1 根据程序的执行流程不同,判定c中的“x1”的含义也不同当判定a为“真”时, “x1”实际是“x/y1”,即“xy”当判定a为“假”时, “x1”仍是“x1”20复旦大学计算机科学技术学院 软件工程(第二版)该子程序有四条可执行路径:路径1 sabcde ,

10、其执行条件(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 )seacbdtffta:(y1)and(z=0)c:(y=2)or(x1)21复旦大学计算机科学技术学院 软件工程(第二版)路径2 sace ,其执行条件(L2)是a为“f”且c为“f”)L2 = not(y1) and (z=0) and not(y=2) or (x1)= n

11、ot (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)seacbdtffta:(y1)and(z=0)c:(y=2)or(x1)22复旦大学计算机科学技术学院 软件工程(第二版)路径3 sacde ,其执行条件(L3)是a为“f”且c为“t”)L3 = not (y1) and (z=0) and

12、 (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) or not (z=0) and (y=2) or not (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)seacbdtffta:(y1)and(z=0)c:(y=2)or(x1)23复旦大学计算机科学技术学院 软件工程(第二版)路径4 sabce ,其执行条件(L4)是a为“t

13、”且c为“f”)L4 = (y1) and (z=0) and not (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)seacbdtffta:(y1)and(z=0)c:(y=2)or(x1)24复旦大学计算机科学技术学院 软件工程(第二版)语句覆盖语句覆盖 语句覆盖是指选择足够的测试用例,使得运行这些测试用例时,被测程序的每个可执行语句都至少执行一次 欲使每个语句都执行一次,只需执行路径sabcde即可,其条件是: L1= (y=2) and (z=0

14、) or (y1) and (z=0) and (x y )测试用例如下:测试数据预期结果x=4,y=2,z=0 x=3seacbdtffta:(y1)and(z=0)c:(y=2)or(x1)25复旦大学计算机科学技术学院 软件工程(第二版)判定覆盖判定覆盖 判定覆盖(也称分支覆盖)是指选择足够的测试用例,使得运行这些测试用例时,被测程序的每个判定的所有可能结果都至少执行一次(即判定的每个分支至少经过一次) 26复旦大学计算机科学技术学院 软件工程(第二版)欲使每个分支都执行一次,只需执行路径sacde(a为“f”且c为“t” ,即条件L3 )和sabce( a为“t”且c为“f” ,即条件

15、L4) 即可 或者,执行路径sabcde(a为“t”且c为“t” ,即条件L1)和sace (a为“f”且c为“f” ,即条件L2)seacbdtffta:(y1)and(z=0)c:(y=2)or(x1)27复旦大学计算机科学技术学院 软件工程(第二版)L3(sacde ,a为“f”且c为“t”):(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)seacbdtffta:(y1)and(z=

16、0)c:(y=2)or(x1)测试数据预期结果路径acx=1,y=2,z=1x=2sacdeftx=3,y=3,z=0 x=1sabcetf28复旦大学计算机科学技术学院 软件工程(第二版) 判定覆盖将每个判定的所有可能结果都至少执行一次,所以,程序中的所有语句也必定都至少执行一次。因此,满足判定覆盖标准的测试用例也一定满足语句覆盖标准 29复旦大学计算机科学技术学院 软件工程(第二版)条件覆盖条件覆盖 条件覆盖是指选择足够的测试用例,使得运行这些测试用例时,被测程序的每个判定中的每个条件的所有可能结果都至少出现一次 30复旦大学计算机科学技术学院 软件工程(第二版)判定a中各种条件的所有可能结果:y1, y 1 ,z=0, z 0判定c中各种条件的所有可能结果:y=2, y 2 ,x1(或xy), x 1 (或x y) seacbdtffta:(y1)and(z=0)c:(y=2)or(x1)测试数据预期结果路径覆盖的条件x=1,y=2,z=0 x=1.5sabcdey1, z=0, y=2,x x y yx=2,y=1,z=1x=3sacdey y 1 1,z z 0 0, y y

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 高等教育 > 大学课件

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