软件工程 第四部分软件编程与软件测试--软件测试方法与过程(黑盒测试+白盒测试) (1)_第1页
软件工程 第四部分软件编程与软件测试--软件测试方法与过程(黑盒测试+白盒测试) (1)_第2页
软件工程 第四部分软件编程与软件测试--软件测试方法与过程(黑盒测试+白盒测试) (1)_第3页
软件工程 第四部分软件编程与软件测试--软件测试方法与过程(黑盒测试+白盒测试) (1)_第4页
软件工程 第四部分软件编程与软件测试--软件测试方法与过程(黑盒测试+白盒测试) (1)_第5页
已阅读5页,还剩104页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 黑盒测试黑盒测试 白盒测试白盒测试 测试策略测试策略 面向对象测试面向对象测试 测试完成标准测试完成标准 调试调试3软件测试的软件测试的策略和方法策略和方法静态测试方法静态测试方法动态测试方法动态测试方法 人工测试方法人工测试方法计算机辅助静计算机辅助静态分析方法态分析方法白盒测试方法白盒测试方法黑盒测试方法黑盒测试方法4静态测试:静态测试: 基本特征是在对软件进行分析、检查和审阅,不实际基本特征是在对软件进行分析、检查和审阅,不实际运行被测试的软件。运行被测试的软件。 静态测试约可找出静态测试约可找出303070%70%的逻辑设计错误的逻辑设计错误. . 对对需求规格说明书需求规格说明书、

2、软件设计说明书软件设计说明书、源程序源程序做检查做检查和审阅和审阅 包括:包括:是否符合标准和规范;是否符合标准和规范;通过结构分析、流图分析、符号执行指出软件缺陷。通过结构分析、流图分析、符号执行指出软件缺陷。 5动态测试:动态测试: 通过运行软件来检验软件的动态行为和运行结果的正通过运行软件来检验软件的动态行为和运行结果的正确性。确性。 动态测试的两个基本要素:动态测试的两个基本要素:被测试程序被测试程序测试数据(测试用例)测试数据(测试用例)动态测试方法: (1) 选取定义域有效值选取定义域有效值,或定义域外无效值;或定义域外无效值; (2) 对已选取值决定对已选取值决定预期的结果;预期

3、的结果; (3) 用选取值执行程序;用选取值执行程序; (4) 执行结果执行结果与与预期的结果预期的结果相比相比,不吻和程序有错不吻和程序有错。测试用例测试用例ID目的目的前提前提输入输入预期输出预期输出后果后果执行历史执行历史日期日期 结果结果 版本版本 执行人执行人 测试用例的设计是软件测试的关键所在测试用例的设计是软件测试的关键所在 设计尽可能少的测试用例来发现尽可能多设计尽可能少的测试用例来发现尽可能多的错误的错误 设计最有可能发现软件错误的测试用例,设计最有可能发现软件错误的测试用例,同时避免使用发现错误效果相同的测试用同时避免使用发现错误效果相同的测试用例例 测试用例的设计方法大体

4、可分为两类:白测试用例的设计方法大体可分为两类:白盒测试和黑盒测试盒测试和黑盒测试,也称白箱测试和黑箱,也称白箱测试和黑箱测试测试7动态测试技术动态测试技术1 1、白盒测试白盒测试(White Box Testing)2 2、黑盒测试黑盒测试(Black Box Testing) 如果知道产品的内部工作过程,可以通过测试来检验产如果知道产品的内部工作过程,可以通过测试来检验产品内部动作是否按照规格说明书的规定正常进行品内部动作是否按照规格说明书的规定正常进行 - 称为称为白盒测试。白盒测试。 如果已经知道了产品应该具有的功能,可以通过测试来如果已经知道了产品应该具有的功能,可以通过测试来检验是

5、否每个功能都能正常使用检验是否每个功能都能正常使用 - 称为黑盒测试。称为黑盒测试。8也叫也叫玻璃盒测试玻璃盒测试(Glass Box Testing)、结构测试结构测试 对软件的过程性细对软件的过程性细节做细致的检查。这节做细致的检查。这一方法是把测试对象一方法是把测试对象看作一个打开的盒子,看作一个打开的盒子,它允许测试人员利用它允许测试人员利用程序内部的逻辑结构程序内部的逻辑结构及有关信息及有关信息,来设计,来设计或选择或选择测试用例,测试用例,对对程序所有程序所有逻辑路径逻辑路径进进行测试。行测试。白盒测试白盒测试(White Box Testing)白盒测试白盒测试的内容的内容对程序

6、模块的所有对程序模块的所有独立独立执行路径执行路径至少测试一次至少测试一次对所有的对所有的逻辑判定逻辑判定,取,取“真真”与取与取“假假”的两种情况的两种情况都能至少测试一次。都能至少测试一次。 在循环的边界和运行边在循环的边界和运行边界限内执行循环体界限内执行循环体 测试内部数据结构的有测试内部数据结构的有效性。效性。 9黑盒测试又称黑盒测试又称行为测试行为测试,把测试,把测试对象看做一个黑盒子,测试人员对象看做一个黑盒子,测试人员完全不考虑程序内部的逻辑结构完全不考虑程序内部的逻辑结构和内部特性,只依据程序的需求和内部特性,只依据程序的需求规格说明书,规格说明书,检查程序的功能是检查程序的

7、功能是否符合它的功能需求否符合它的功能需求。已知产品。已知产品的功能设计规格,可以进行测试的功能设计规格,可以进行测试证明每个实现了的功能是否符合证明每个实现了的功能是否符合要求。要求。 黑盒测试黑盒测试(Black Box Testing)黑盒测试黑盒测试的内容的内容不正确或遗漏的功能不正确或遗漏的功能接口错误,如输入接口错误,如输入/ /输出输出参数的个数、类型等参数的个数、类型等数据结构错误或外部信息数据结构错误或外部信息( (如外部数据库如外部数据库) )访问错误访问错误性能错误性能错误软件软件初始化和终止错误初始化和终止错误 软件测试基础软件测试基础 白盒测试白盒测试 测试策略测试策

8、略 面向对象测试面向对象测试 测试完成标准测试完成标准 调试调试 黑盒测试法是根据被测黑盒测试法是根据被测程序功能程序功能来进行来进行测试,所以通常也称为测试,所以通常也称为功能测试功能测试。用黑盒。用黑盒测试法设计测试用例,有测试法设计测试用例,有5 5 种常用技术:种常用技术:等价类划分等价类划分边界值分析边界值分析比较测试比较测试错误猜测错误猜测因果图因果图 由于不能穷举所有可能的输入数据来进行测试,所以只能选择少量有代表性的输入数据,来揭露尽可能多的程序错误 等价类划分等价类划分方法将所有可能的输入数据划分成若干个等价类,然后在每个等价类中选取一个代表性的数据作为测试用例等价类等价类是

9、指输入域的某个子集,该子集中的每个输入是指输入域的某个子集,该子集中的每个输入数据对揭露软件中的错误都是等效的,测试等价类的数据对揭露软件中的错误都是等效的,测试等价类的某个代表值就等价于对这一类其他值的测试。也就是某个代表值就等价于对这一类其他值的测试。也就是说,如果该子集中的某个输入数据能检测出某个错误,说,如果该子集中的某个输入数据能检测出某个错误,那么该子集中的其他输入数据也能检测出同样的错误;那么该子集中的其他输入数据也能检测出同样的错误;反之,如果该子集中的某个输入数据不能检测出错误,反之,如果该子集中的某个输入数据不能检测出错误,那么该子集中的其他输入数据也不能检测出错误。那么该

10、子集中的其他输入数据也不能检测出错误。 等价类划分方法把输入数据分为有效输入数据和无效输入数据 有效输入数据指符合规格说明要求的合理的输入数据,主要用来检验程序是否实现了规格说明中的功能 无效输入数据指不符合规格说明要求的不合理或非法的输入数据,主要用来检验程序是否做了规格说明以外的事 在确定输入数据等价类时,常常还要分析输出数据的等价类,以便根据输出数据等价类导出输入数据等价类。14 是指对于程序的规格说明来说,是是指对于程序的规格说明来说,是合理的有意义的合理的有意义的输入数据输入数据构成的集合。利用它可以检验程序是否实现预先构成的集合。利用它可以检验程序是否实现预先规定的功能和性能。在具

11、体问题中,有效等价类可以是一规定的功能和性能。在具体问题中,有效等价类可以是一个,也可以是多个。个,也可以是多个。 有效等价类有效等价类 是指对于程序的规格说明来说,是是指对于程序的规格说明来说,是不合理的,是无不合理的,是无意义的输入数据意义的输入数据构成的集合。测试员主要利用这一类测试构成的集合。测试员主要利用这一类测试用例来检查程序中功能和性能的实现是否用例来检查程序中功能和性能的实现是否不符合不符合规格说明规格说明要求。在具体问题中,无效等价类至少应有一个,也可能要求。在具体问题中,无效等价类至少应有一个,也可能有多个有多个 无效等价类无效等价类 确定等价类根据软件的规格说明,对每一个

12、输入条件(通常是规格说明中的一句话或一个短语)确定若干个有效等价类和若干个无效等价类。 可使用如下表格输入条件有效等价类 无效等价类确定等价类的规则: (1) 如果输入条件规定了取值范围,则可以确定一个有效等价类(输入值在此范围内)和两个无效等价类(输入值小于最小值及大于最大值)例如,规定输入的考试成绩在0.100之间,则有效等价类是“0 成绩 100”,无效等价类是“成绩 0”和“成绩 100”。(2) 如果输入条件规定了值的个数,则可以确定一个有效等价类(输入值的个数等于规定的个数)和两个无效等价类(输入值的个数小于规定的个数和大于规定的个数)例如,规定输入构成三角形的3条边,则有效等价类

13、是“输入边数 = 3”,无效等价类是“输入边数 3”和“输入边数 3”。(3) 如果输入条件规定了输入值的集合(即离散值),而且程序对不同的输入值做不同的处理,那么每个允许的值都确定为一个有效等价类,另外还有一个无效等价类(任意一个不允许的值)。例如,规定输入的考试成绩为优、良、中、及格、不及格,则可确定5个有效等价类和一个无效等价类。(4) 如果输入条件规定了输入值必须遵循的规则,那么可确定一个有效等价类(符合此规则)和若干个无效等价类(从各个不同的角度违反此规则)。例如,在Pascal语言中对变量标识符规定为“以字母开头的串”。那么有效等价类是“以字母开头的串”,而无效等价类有“以数字开头

14、的串”、“以标点符号开头的串”等。(5) 如果输入条件规定输入数据是整型,那么可以确定三个有效等价类(正整数、零、负整数)和一个无效等价类(非整数)。(6) 如果输入条件规定处理的对象是表格,那么可以确定一个有效等价类(表有一项或多项)和一个无效等价类(空表)。以上只是列举了一些规则,实际情况往往是千变万化的,在遇到具体问题时,可参照上述规则的思想来划分等价类。 设计测试用例在确定了等价类之后,建立等价类表,列出所有划分出的等价类。并为每个有效等价类和无效等价类编号。 输入条件有效等价类 无效等价类 利用等价类设计测试用例的步骤: (1)为每一个等价类规定一个唯一的编号。 (2) 设计一个新的

15、测试用例,使其尽可能多地覆盖尚未被覆盖的有效等价类,重复这一步,直到所有的有效等价类都被覆盖为止; (3) 为每个无效等价类设计一个新的测试用例。测试数据期望结果覆盖范围例例: :某报表处理系统要求用户某报表处理系统要求用户输入输入处理报表处理报表 的的日期日期,日期限制在,日期限制在20032003年年1 1月至月至20082008年年 1212月,即系统只能对该段期间内的报表月,即系统只能对该段期间内的报表 进行处理,如日期不在此范围内,则显进行处理,如日期不在此范围内,则显 示输入错误信息。示输入错误信息。 系统日期规定由年、月的系统日期规定由年、月的6 6位数字字符组位数字字符组 成,

16、前四位代表年,后两位代表月。成,前四位代表年,后两位代表月。 如何用等价类划分法设计测试用例如何用等价类划分法设计测试用例, , 来来测试程序的日期检查功能?测试程序的日期检查功能?第一步:等价类划分第一步:等价类划分输入条件输入条件 有效等价类有效等价类 无效等价类无效等价类 报表日期的报表日期的类型及长度类型及长度6 6位数字字符位数字字符(1)(1)有非数字字符有非数字字符 (4)(4)少于少于6 6个数字字符个数字字符 (5)(5)多于多于6 6个数字字符个数字字符 (6)(6)年份范围年份范围在在2003200320082008之间之间 (2)(2)小于小于2003 2003 (7)

17、(7)大于大于2008 2008 (8)(8)月份范围月份范围在在1 11212之间之间(3)(3)“报表日期报表日期”输入条件的等价类表输入条件的等价类表小于小于1 1 (9)(9)大于大于12 12 (10)(10)第二步:为有效等价类设计测试用例 测试数据 期望结果 覆盖范围200306200306等价类等价类(1)(2)(3)(1)(2)(3)输入有效输入有效对表中编号为对表中编号为1,2,31,2,3的的3 3个有效等价类用一个测个有效等价类用一个测试用例覆盖:试用例覆盖:(1)(1)6 6位数字字符位数字字符(2)(2)年在年在2003200320082008之间之间 (3)(3)

18、月在月在1 11212之间之间第三步:为每一个无效等价类设至少 设计一个测试用例 测试数据 期望结果 覆盖范围003003MAYMAY等价类等价类(4)(4)输入无效输入无效2003520035等价类等价类(5)(5)输入无效输入无效20030052003005等价类等价类(6)(6)输入无效输入无效200120010505等价类等价类(7)(7)输入无效输入无效200920090505等价类等价类(8)(8)输入无效输入无效200320030000等价类等价类(9)(9)输入无效输入无效200320031313等价类等价类(10)(10)输入无效输入无效不能出现相同不能出现相同的测试用例的测

19、试用例本例的本例的1010个等价类至个等价类至少需要少需要8 8个测试用例个测试用例例例: :对招生考试系统对招生考试系统“输入学生成绩输入学生成绩”子模块子模块 设计测试录入准考证号的测试用例设计测试录入准考证号的测试用例准考证号数据格式定义:共准考证号数据格式定义:共6 6位数字组成,其中位数字组成,其中第一位为专业代号第一位为专业代号: :1 1- -行政专业行政专业, ,2 2- -法律专业,法律专业,3 3- -财经专业财经专业后后5 5位为考生顺序号,编码范围为:位为考生顺序号,编码范围为: 行政专业准考证号码为行政专业准考证号码为: :1 110001100011 1112151

20、1215 法律专业准考证号码为法律专业准考证号码为: :2 210001100012 21200612006 财经专业准考证号码为财经专业准考证号码为: :3 310001100013 31401514015 准考证号码的等价类划分准考证号码的等价类划分 有效等价类有效等价类: : (1) 110001 (1) 110001 111215111215 (2) 210001 (2) 210001 212006212006 (3) 310001 (3) 310001 314015314015 无效等价类无效等价类: : (4) - (4) - 110000110000 (5) 111216 (5)

21、 111216 210000210000 (6) 212007 (6) 212007 310000310000 (7) 314016 (7) 314016 + + 练习1: 根据下面给出的规格说明,利用等价类划分的方法,给出足够的测试用例。 一个程序读入三个整数。把此三个数值看成是一个三角形的三个边。这个程序要打印出信息,说明这个三角形是三边不等的、是等腰的、还是等边的。解答: 设三角形的3条边分别A,B,C。如果它们能够构成三角形的3条边,必须满足:A0,B0,C0,且A+BC,B+CA,A+CB。 如果是等腰的,还要判断A=B,或B=C,或A=C。 如果是等边的,则需判断是否A=B,且B=

22、C,且A=C。解答: 设三角形的3条边分别A,B,C。如果它们能够构成三角形的3条边,必须满足:A0,B0,C0,且A+BC,B+CA,A+CB。 如果是等腰的,还要判断A=B,或B=C,或A=C。 如果是等边的,则需判断是否A=B,且B=C,且A=C。解答: 设三角形的3条边分别A,B,C。如果它们能够构成三角形的3条边,必须满足:A0,B0,C0,且A+BC,B+CA,A+CB。 如果是等腰的,还要判断A=B,或B=C,或A=C。 如果是等边的,则需判断是否A=B,且B=C,且A=C。课后作业:课后作业:城市的电话号码由两部分组成。这两部分的名称和内容分别是:地区码地区码:以0开头的三位或

23、者四位数字(包括0);电话号码电话号码:以非0、非1开头的七位或者八位数字。假定被调试的程序能接受一切符合上述规定的电话号码,拒绝所有不符合规定的号码,就可用等价分类法来设计它的调试用例。请为写出所有可能的有效等价类和无效等价类,并为所有的分类设计一个测试用例。 采用边界值分析法来选择测试用例,可使得被测程序能在边界值及其附近运行,从而更有效地暴露程序中潜藏的错误。这里所说的边界值是指,相对与输入等价类和输出等价类而言,稍高于或稍低于其边界值的一些特定情况。 针对边界值设计测试用例时,应注意遵循以下几条原则:1.如果输入条件规定了取值范围,或是规定了值的个数,则应以该范围的边界内及刚刚超出范围

24、的边界外的值,或是分别取最大,最小个数及稍小于最小,稍大于最大个数作为测试用例。例如:某一个问题规格说明规定:“某输入文件可包含1至255个记录.”,则测试用例可取1和255,还应取0及256等。 针对边界值设计测试用例时,应注意遵循以下几条原则:2.针对规格说明的每个输出条件使用前面的第1条原则。 例如:情报检索系统要求每次最多显示4条情报摘要,这时,我们应考虑的测试用例包括1和4,还应包括0和5等。 针对边界值设计测试用例时,应注意遵循以下几条原则:3.如果程序规格说明中提到的输入或输出域是个有序的集合(如顺序文件,表格等),就应注意选取有序集的第一个和最后一个元素作为测试用例。(1)等价

25、分类法的测试数据是在各个等价类允许的值域内任意选取的,而边界值分析不是从某等价类中随便挑一个作为代表,边界值分析法的测试数据必须在边界值附近选取。(2)一般来说,用边界值分析法设计的测试用例要比等价分 类法的代表性更广,发现错误的能力也更强。但是对边 界的分析与确定比较复杂,它要求测试人员具有更多的 经验。被测试被测试子子 域域测试内点测试内点测试外点测试外点 如果在悬崖峭壁边如果在悬崖峭壁边可以自信地安全行走,可以自信地安全行走,平地就不在话下。平地就不在话下。 如果软件在能力达如果软件在能力达到极限时能够运行,那到极限时能够运行,那么在正常情况下就不会么在正常情况下就不会出什么问题出什么问

26、题。软件边界与悬崖很类似输入输入条件条件报表日报表日期的类期的类型及长型及长度度5 5个数字字符个数字字符7 7个数字字符个数字字符6 6个数字字符个数字字符有有1 1个非数字字符个非数字字符全部是非数字字符全部是非数字字符显示出错显示出错显示出错显示出错输入有效输入有效显示出错显示出错显示出错显示出错日期日期范围范围月份月份范围范围“报表日期报表日期”边界值分析法测试用边界值分析法测试用例例测试用例说明测试用例说明测试数据测试数据 期望结果期望结果选取理由选取理由2003520035200300520030052003052003052003.52003.5MAY-MAY-月份为月份为1 1

27、月月月份为月份为1212月月月份月份11212200301200301200312200312200300200300200313200313200301200301200812200812200212200212200901200901输入有效输入有效输入有效输入有效显示出错显示出错显示出错显示出错输入有效输入有效输入有效输入有效显示出错显示出错显示出错显示出错在有效范围在有效范围边界上选取边界上选取数据数据比有效长度少比有效长度少1 1比有效长度多比有效长度多1 1类型及长度均有效类型及长度均有效只有只有1 1个非法字符个非法字符6 6个非法字符个非法字符最小日期最小日期最大日期最大日期刚

28、好小于最小日期刚好小于最小日期刚好大于最大日期刚好大于最大日期最小月份最小月份最大月份最大月份刚好小于最小月份刚好小于最小月份刚好大于最大月份刚好大于最大月份 通常,可由二支软件开发队伍,根据相同的需求规格说明分别开发二个软件版本,然后,用相同的测试用例对二个版本的软件分别进行测试,比较二个版本软件的测试结果,如果测试结果相同,则可认为二个版本的软件都是正确的,如果测试结果不同,则要分析各个版本,以发现错误的所在。这种测试称为比较测试或称为背靠背测试(backtoback testing)。大多数情况下,可用自动化工具来进行比较测试。 值得注意的是,比较测试并不能保证软件没有错误,如果规格说明

29、本身有错,那么所有的版本都可能反映这种错误。 另外,如果各个版本产生相同的但都不正确的结果,那么比较测试也无法发现这种错误。错误猜测是一种凭直觉和经验推测某些可能存在的错误,从而针对这些可能存在的错误设计测试用例的方法。错误猜测法的基本思想是:列举出程序中所有可能的错误和容易发生错误的特殊情况,然后根据这些猜测设计测试用例。 没有没有确定的步骤,很大程度上是凭经验确定的步骤,很大程度上是凭经验进行的进行的。 例如输入数据为零或输出数据为零是容易发生错误的情况,所以可选择输入值为零的例子,以及使输出值为零的例子; 又如输入表格为“空”或输入表格只有一行是较易出错误的情况,所以可选择表示这些情况的

30、例子。【示例】测试一个对线性表(比如数组)进行排序的程序,可推测列出以下几项需要特别测试的情况:u 输入线性表为空;u 表中只有一个元素;u 输入表中所有元素已排好序;u 输入表已按逆序拍好;u 输入表中部分或全部元素相同。 在等价类划分方法和边界值方法中未考虑输入条件的各种组合,当输入条件比较多时,输入条件组合的数目会相当大 因果图方法是一种帮助人们系统地选择一组高效测试用例的方法,它既考虑了输入条件的组合关系,又考虑了输出条件对输入条件的依赖关系,即因果关系,其测试用例发现错误的效率比较高。 因果图方法的特点是:考虑输入条件的组合关系;考虑输入条件的组合关系;考虑输出条件对输入条件的依赖关

31、系,考虑输出条件对输入条件的依赖关系,即因果关系;即因果关系;测试用例发现错误的效率高;测试用例发现错误的效率高;能检查出功能说明中的某些不一致或遗能检查出功能说明中的某些不一致或遗漏。漏。 用因果图设计测试用例的步骤:(1) 分割功能说明书 将输入条件分成若干组,然后分别对每个组使用因果图,这样可减少输入条件组合的数目。如测试编译程序时,可以将每个语句作为一组。 (2) 识别“原因”和“结果”,并加以编号 “原因”是指输入条件或输入条件的等价类;“结果”是指输出条件或系统变换。如,更新主文件就是一种系统变换。 每个原因和结果都对应于因果图中的一个结点,当原因或结果成立(或出现)时,相应的结点

32、的值为1,否则为0。(3) 根据功能说明中规定的原因与结果之间的关系画出因果图 因果图的基本符号如下:ba恒等恒等ba非非 abcd或或abcd 与与 图中左边的结点表示原因,右边的结点表示结果 原因和结果之间的关系有:恒等:若恒等:若a=1,则,则b=1;若;若a=0,则,则b=0非:若非:若a=1,则,则b=0;若;若a=0,则,则b=1或:若或:若a=1或或b=1 或或c=1 ,则,则d=1;否则;否则d=0与:若与:若a=b=c=1 ,则,则d=1;否则;否则d=0 画因果图时原因在左,结果在右,由上向画因果图时原因在左,结果在右,由上向下排列下排列,并根据功能说明中规定的原因和结果之

33、间的关系,用上述符号连接起来。必要时还可以引入一些中间结点。(4) 根据功能说明在因果图中加上约束条件 因果图的约束条件如下图所示:要求要求RbabaM屏蔽屏蔽互斥互斥abcE包含包含abcI唯一唯一abcO 图中互斥、包含、唯一、要求是对原因的约束,屏蔽是对结果的约束互斥:表示互斥:表示a、b、c中至多只有一个为中至多只有一个为1,即不,即不同时为同时为1包含:表示包含:表示a、b、c中至少有一个为中至少有一个为1,即不同,即不同时为时为0唯一:表示唯一:表示a、b、c中有且仅有一个中有且仅有一个1要求:表示若要求:表示若a=1 ,则要求,则要求b必须为必须为1,即不可,即不可出现出现a=1

34、 且且b=0屏蔽:表示若屏蔽:表示若a=1 ,则,则b必须为必须为0,即不可出现,即不可出现a=1 且且b=1(5) 根据因果图画出判定表(决策表) 列出满足约束条件的所有原因组合,写出每种原因组合下的结果(如有的话)原原因因允许的原因组合允许的原因组合中间中间结点结点各种原因组合下中间结点的值各种原因组合下中间结点的值结结果果各种原因组合下的结果值各种原因组合下的结果值(6)为判定表的每一列设计一个测试用例,有一个处理单价为5角钱的饮料自动售货机软件,其规格说明如下: 饮料自动售货机允许投入5角或1元的硬币,用户可通过“橙汁”和“啤酒”按钮选择饮料,售货机还装有一个表示“零钱找完”的指示灯,

35、当售货机中有零钱找时指示灯暗,当售货机中无零钱找时指示灯亮。当用户投入5角硬币并押下“橙汁”或“啤酒”按钮后,售货机送出“橙汁”或“啤酒” 。当用户投入1元硬币并押下“橙汁”或“啤酒”按钮后,如果售货机有零钱找,则送出相应的饮料,并退还5角硬币;如果售货机没有零钱找,则饮料不送出,并且退还1元硬币。(1) 分析规格说明,列出原因和结果规格说明中的红色部分是输入条件(原因),蓝色部分是输出条件(结果)。 由于“售货机有零钱找”是在投入1元硬币时判断是否能找零钱的依据,所以也可把它看作是一个输入条件,即原因。与之对应的结果是售货机指示灯亮(或暗)。 原因 结果(1)售货机有零钱找(21)售货机“零

36、钱找完”灯亮(2)投入1元硬币(22)退还1元硬币(3)投入5角硬币(23)退还5角硬币(4)押下“橙汁”按钮(24)送出“橙汁”饮料(5)押下“啤酒”按钮(25)送出“啤酒”饮料(2) 画出因果图。所有原因结点列在左边,所有结果结点列在右边。 其中中间结点的含义如下: (11)投入1元硬币且押下饮料按钮 (12)押下“橙汁”或“啤酒”按钮 (13)应找5角硬币且售货机有零钱找 (14)钱已付清 (3) 由于原因 2 与 3 ,4 与 5 不能同时发生,分别加上约束条件E。(4) 根据因果图画出判定表(5) 根据判定表设计测试用例 最后,驱除无效用例,合并判定表,写出对应测试最后,驱除无效用例

37、,合并判定表,写出对应测试用例即可。用例即可。练习:某软件规格说明书包含这样的要求:第一列字符必须是A或B,第二列字符必须是一个数字,在此情况下进行文件的修改,但如果第一列字符不正确,则给出信息L;如果第二列字符不是数字,则给出信息M。请根据题目完成以下操作:(1)要求画出因果图;(2)并根据因果图建立判定表;练习:某软件规格说明书包含这样的要求:第一列字符必须是A或B,第二列字符必须是一个数字,在此情况下进行文件的修改,但如果第一列字符不正确,则给出信息L;如果第二列字符不是数字,则给出信息M。请根据题目完成以下操作:(1)要求画出因果图;(2)并根据因果图建立判定表;作业:作业:作业:作业

38、:63/161黑盒测试选择黑盒测试选择n 1.在任何情况下都在任何情况下都必须选择边界值分析方法必须选择边界值分析方法。经验表。经验表明用这种方法设计出测试用例发现程序错误的能力最明用这种方法设计出测试用例发现程序错误的能力最强;强;n 2.必要时用必要时用等价类划分法等价类划分法补充一些测试用例;补充一些测试用例;n 3.用用错误推测法错误推测法再追加一些测试用例;再追加一些测试用例;n 4.如果程序的功能说明中含有输入条件的组合情况,如果程序的功能说明中含有输入条件的组合情况,则可选用则可选用因果图法因果图法。 软件测试基础软件测试基础 黑盒测试黑盒测试 测试策略测试策略 面向对象测试面向

39、对象测试 测试完成标准测试完成标准 调试调试n 白盒测试,有时也称为玻璃盒测试,它关注软件产品的内部细节和逻辑结构,即把被测的程序看成是一个透明的盒子。白盒测试利用构件层设计的一部分而描述的控制结构来生成测试用例。白盒测试需要对系统内部结构和工作原理有一个清楚的了解。 白盒测试示意图白盒测试示意图常用的白盒测试方法有: 代码检查法 静态结构分析 程序插桩技术 逻辑覆盖法 基本路径法 数据流测试 循环测试n 代码检查法 代码检查法包括桌面检查、代码审查和走查等。它主要检查代码和设计的一致性,代码对标准的遵循,可读性,代码逻辑表达正确性,代码结构合理性等方面;n 静态结构分析法 静态结构分析主要是

40、以图的形式表现程序的内部结构,供测试人员对程序结构进行分析。静态结构分析是一种对代码机械性的、程式化的特性进行分析的方法。在静态结构分析中,测试者通过使用测试工具分析程序源代码的系统结构、数据接口、内部控制逻辑等内部结构,生成函数调用关系图、模块控制流图、内部文件调用关系图、子程序表、宏和函数参数表等各类图形图表n 程序插桩技术 程序插桩技术是借助往被测程序中插入操作来实现测试目的的方法,即向源程序中添加一些语句,实现对程序语句的执行、变量的变化等情况进行检查。例如想要了解一个程序在某次运行中所有可执行语句被覆盖的情况,或是每个语句的实际执行次数,就可以利用程序插桩技术。最简单的插桩:在程序中

41、插入打印最简单的插桩:在程序中插入打印printf(“”););语句。语句。 语句覆盖语句覆盖 判定覆盖判定覆盖 条件覆盖条件覆盖 判定条件覆盖判定条件覆盖 条件组合覆盖条件组合覆盖 路径覆盖路径覆盖逻辑覆盖法以程序内在的逻辑结构为基逻辑覆盖法以程序内在的逻辑结构为基础,础,根据程序的流程图根据程序的流程图设计测试用例。逻辑设计测试用例。逻辑覆盖主要考察使用测试数据运行被测程序时覆盖主要考察使用测试数据运行被测程序时对程序逻辑的覆盖程度。对程序逻辑的覆盖程度。通常希望选择最少通常希望选择最少的测试用例来满足所需的覆盖标准的测试用例来满足所需的覆盖标准。主要的。主要的覆盖标准有:覆盖标准有:1、

42、用流程图描述程序、用流程图描述程序(流程图、(流程图、N-S图、图、PAD图)图)2、运用逻辑覆盖法设计测试用例、运用逻辑覆盖法设计测试用例覆盖种类覆盖种类需满足条件需满足条件测试数据测试数据预期结果预期结果开始开始(A1)AND(B=0)(A=2)OR(X1)结束结束X=X/AX=X+1FFTTabdcevoid sampal(float A, float B, float X) if (A1)&(B=0) ) X /=A; if (A=2)|(X1) ) X+=1;printf(“%d,%d,%d”,A,B,X);例:对下列子程序进行测试例:对下列子程序进行测试 覆盖标准覆盖标准

43、: 使得程序中使得程序中每个语句每个语句至少都能被执行一次。至少都能被执行一次。满足语句覆盖的情况是:满足语句覆盖的情况是: 执行路径:执行路径:aceace选择用例:选择用例:(2,0,4),(2,0,3)(2,0,4),(2,0,3)用例格式用例格式: :由由输入数据输入数据和和预期的输出结预期的输出结果果两部分组成:两部分组成: 输入输入(A,B,X)(A,B,X),输出,输出(A,B,X)(A,B,X)aA1ANDB=0X=X/AA=2ORX1X=X+1bcdeYNYN程序中除判定外,还有两条语句。程序中除判定外,还有两条语句。覆盖种类覆盖种类需满足条件需满足条件测试数据测试数据预期结

44、果预期结果语句覆盖语句覆盖A1ANDB=0A=2ORX12 2,0 0,4 42 2,0 0,3 3覆盖标准:覆盖标准: 使得程序中使得程序中每个判定每个判定至少为至少为TRUE TRUE 或或FALSEFALSE各一次。各一次。覆盖情况:共有两个判定,应执行路径:覆盖情况:共有两个判定,应执行路径:ace ace 和和 abdabd,或或 acdacd 和和 abeabe选择用例,选择用例, 两组用例中两组用例中任选择其一任选择其一 (2,0,4),(2,0,3) ace(2,0,4),(2,0,3) ace (1,1,1),(1,1,1) (1,1,1),(1,1,1) abdabd (2

45、,1,1),(2,1,2) (2,1,1),(2,1,2) abeabe (3,0,3),(3,1,1) (3,0,3),(3,1,1) acdacdA1ANDB=0X=X/AA=2ORX1X=X+1abcdeYNYN覆盖种类覆盖种类需满足条件需满足条件测试数据测试数据预期结果预期结果判定覆盖判定覆盖A1ANDB=0A=2ORX12 2,0 0,4 42 2,0 0,3 3A1, A1, B=0, B0: A1, A1, B=0, B0判定二判定二: A=2, A2, X1, X1: A=2, A2, X1, X1选择用例:选择用例: (2,0,4),(2,0,3)(2,0,4),(2,0,3

46、) (1,1,1),(1,1,1)(1,1,1),(1,1,1)注意注意:(1,0,3),(1,0,4) :(1,0,3),(1,0,4) (abeabe) (2,1,1),(2,1,2) (2,1,1),(2,1,2) (abeabe)满足条件覆盖,但不满足判定覆盖。满足条件覆盖,但不满足判定覆盖。A1ANDB=0X=X/AA=2ORX1X=X+1abcdeYNYN判定一判定一判定二判定二覆盖种类覆盖种类需满足条件需满足条件测试数据测试数据预期结果预期结果条件覆盖:条件覆盖:以下以下8种情种情况 各 出 现况 各 出 现一次:一次:A1, A1, A1,B=0, A1,B=0, B0B0A=

47、2, A2, A=2, A2, X1, X1X1, X1A1,B=0A=2,X12 2,0 0,4 42 2,0 0,3 3A1A1,B00X1,A2X1,A21,1,11,1,1覆盖标准:覆盖标准: 同时满足判定覆盖和条件覆盖同时满足判定覆盖和条件覆盖。即使得程。即使得程序中每个判定至少为序中每个判定至少为TRUE TRUE 或或 FALSEFALSE各一次,各一次,同时使得判定中的每个条件获得各种可能的同时使得判定中的每个条件获得各种可能的结果。结果。应满足以下覆盖情况:应满足以下覆盖情况: 条件覆盖条件覆盖: A1, A1, B=0, B0: A1, A1, B=0, B0A=2, A2

48、, X1, X1A=2, A2, X1, X1 判定覆盖:判定覆盖:ace ace 和和 abdabd或或 acdacd 和和 abeabe选择用例:选择用例: (2,0,4),(2,0,3)(2,0,4),(2,0,3)(ace)ace) (1,1,1),(1,1,1) (1,1,1),(1,1,1) (abdabd) )A1ANDB=0X=X/AA=2ORX1X=X+1abcdeYNYN覆盖种类覆盖种类需满足条件需满足条件测试数据测试数据预期结果预期结果判定判定/条件覆盖:条件覆盖:每 个 判 定每 个 判 定至 少 为 真至 少 为 真或 假 各 一或 假 各 一次,次,并且并且以下以下

49、8种情种情况 各 出 现况 各 出 现一次:一次:A1, A1, A1,B=0, A1,B=0, B0B0A=2, A2, A=2, A2, X1, X1X1, X1判定一为真,判定一为真,判定二为真;判定二为真;覆盖条件:覆盖条件:A1,B=0A=2,X12 2,0 0,4 42 2,0 0,3 3判定一为假,判定一为假,判定二为假;判定二为假;覆盖条件:覆盖条件:A1A1,B00X1,A2X1,A21,1,11,1,1A1X=X/AA=2X=X+1abcdeB=0X1YNYNYNYN虽然采用虽然采用判定判定/条件覆盖条件覆盖一般比前一般比前面几种覆盖标准要好,但若考虑在编面几种覆盖标准要好

50、,但若考虑在编译系统下执行时,译系统下执行时,对条件对条件“AND”和和“OR”的处理情况,部分路径未被执的处理情况,部分路径未被执行。行。例如,红线所标注的路径未被执行。例如,红线所标注的路径未被执行。例如:没有考虑例如:没有考虑A1, B0 B0,A2A2,X1X1这这种条件组合的情况。种条件组合的情况。编译系统下的执行情况考虑到程序在编译状态下的执行情考虑到程序在编译状态下的执行情况,可采用最深的一种覆盖标准况,可采用最深的一种覆盖标准条件条件组合覆盖。组合覆盖。ANDOR判定判定/条件覆盖条件覆盖选择用例:选择用例: (2,0,4),(2,0,3)(2,0,4),(2,0,3)(ace

51、) ace) A1 A1 ,B=0, A=2 B=0, A=2 ,X1 X1 (1,1,1),(1,1,1) (1,1,1),(1,1,1) (abdabd) ) A1, B0 ,A2, X1 A1, B0 ,A2, X1 覆盖标准:覆盖标准: 使得每个判定中使得每个判定中条件的各种可能组合条件的各种可能组合都都至少出现一次。至少出现一次。满足以下覆盖情况:满足以下覆盖情况:A1,B=0A1,B0A1,B0A1,B=0A=2,X1A=2,X1A2,X1A2,X1选择用例:选择用例:(2,0,4),(2,0,3) (2,0,4),(2,0,3) 覆盖情况 (2,1,1),(2,1,2) (2,1

52、,1),(2,1,2) 覆盖情况 (1,0,3),(1,0,4) (1,0,3),(1,0,4) 覆盖情况 (1,1,1),(1,1,1) (1,1,1),(1,1,1) 覆盖情况 判定一判定二显然,条件组合覆盖所测试的情况最多,但是选择用例较多,相对难度也大些。显然,条件组合覆盖所测试的情况最多,但是选择用例较多,相对难度也大些。 编译系统下的执行情况A1X:=X/AA=2X:=X+1abcdeB=0X1YNYNYNYN覆盖种类覆盖种类需满足条件需满足条件测试数据测试数据预期结果预期结果条件组合覆盖:条件组合覆盖:条件的各种可能组合都至少条件的各种可能组合都至少出现一次:出现一次:判定一:判

53、定一:A1,B=0A1,B0A1,B0A1,B=0判定二:判定二:A=2,X1A=2,X1A2,X1A2,X12 2,0 0,4 42 2,0 0,3 3 2,1,12,1,2 1,0,31,0,4 1,1,11,1,1 路径覆盖是指选择足够的测试用例,使得运行这些测试用例时,被测程序的每条可能执行到的路径都至少经过一次(如果程序中包含环路,则要求每条环路至少经过一次) 覆盖标准: 被测程序的每条可能执行到的路径都至少经过一次。路径覆盖应执行路径:ace,acd,abe ,abd选择用例,每个路径选择一个用例(2,0,4),(2,0,3) ace(3,0,3),(3,0,1) acd (2,1

54、,1),(2,1,2) abe(1,1,1),(1,1,1) abd A1 AND B=0X=X/A A=2 OR X1X=X+1abcdeYNYN覆盖种类覆盖种类需满足条件需满足条件测试数据测试数据预期结果预期结果路径覆盖:路径覆盖:每条可能执行每条可能执行到的路径都至到的路径都至少经过一次:少经过一次:ace,acdacd,abe,abdabdace2 2,0 0,4 42 2,0 0,3 3acdacd3,0,33,0,1abe2,1,12,1,2abdabd1,1,11,1,1 路径覆盖实际上考虑了程序中各种判定结果的所有可能组合,但它未必能覆盖判定中条件结果的各种可能情况。因此,它是

55、一种比较强的覆盖标准,但不能替代条件覆盖和条件组合覆盖标准。 一般情况下,这几种覆盖法的覆盖率是不一样的,其中路径覆盖的覆盖率最高,语句覆盖的覆盖率最低。发现错误的能力覆盖标准含 义(弱)语句覆盖每条语句至少执行一次判定覆盖每一判定的每个分支至少执行一次条件覆盖每一判定中的每个条件,分别按“真”、“假”至少各执行一次判定/条件覆盖同时满足判定覆盖和条件覆盖的要求条件组合覆盖求出判定中所有条件的各种可能组合值,每一可能的条件组合至少执行一次(强)路径覆盖程序中每一条可能的路径至少执行一次输入输入A,B,C,D(A0)AND(B0)X=A-BX=A+B(CA)OR(D 0)5. 6. if(0=

56、=iType)7. x=y+2; break;8. else9. if (1= =iType)10.x=y+10;11. else12. x=y+20;13. 14. 第一步:画出其程序流程图和对应的控制流图第一步:画出其程序流程图和对应的控制流图G。467810111314467148101113程序流程图 控制流图对应上面图中的环形复杂度,对应上面图中的环形复杂度,计算如下:(三种方法任选计算如下:(三种方法任选一种)一种) 流图中有流图中有四四个区域;个区域; V(G)=10条边条边-8结点结点+2=4; V(G)=3个判定结点个判定结点+1=4。4671481011132134第二步:

57、计算环路复杂度第二步:计算环路复杂度V(G)。根据上面的计算方法,可得出四个独立的路根据上面的计算方法,可得出四个独立的路径径。(一条独立路径是指,和其他的独立路一条独立路径是指,和其他的独立路径相比,至少引入一个新处理语句或一个新径相比,至少引入一个新处理语句或一个新判断的程序通路。判断的程序通路。V(G)V(G)值正好等于该程序的值正好等于该程序的独立路径的条数。独立路径的条数。)路径路径1:4-14路径路径2:4-6-7-14路径路径3:4-6-8-10-13-4-14路径路径4:4-6-8-11-13-4-144671481011132134第三步:找出程序线性无关的基本路径集第三步:

58、找出程序线性无关的基本路径集根据上一步分析得到的独立路径,去根据上一步分析得到的独立路径,去设计输设计输入数据入数据使称序分别执行到上面四条路径,并使称序分别执行到上面四条路径,并写出写出预期结果预期结果。路径路径1:4-14输入数据输入数据:iRecordNum0,或者,或者取取iRecordNum 0)5. 6. if(0= =iType)7. x=y+2; break;8. else9. if(1= =iType)10. x=y+10;11. else12. x=y+20;13. 14. 第四步:第四步:生成测试用例,以保证每一条路径可以被测试。生成测试用例,以保证每一条路径可以被测试。

59、程序代码:程序代码:1)#include2)main()3)4)int A,B,C;5)printf(请输入三角形的三条边:请输入三角形的三条边:);6)scanf(%d %d %d,&A,&B,&C);7)if(A0&B0&C0)&(A+B)C&(A+C)B&(B+C)A)8)9) if(A=B&A=C)10)printf(该三角形是等边三角形!该三角形是等边三角形!n);11)else12)if(A=B&B!=C)|(B=C&B!=A)|(A=C&A!=B)13)printf(该三角形是等腰三角形!该三角形是等腰三角形!n);14)else15)printf(该三角形是普通三角形!该三角形是普通三角形!n);16)17)else18)19) printf(ERROR!n);20)return main();21)22)程序流程图:程序流程图:107开始开始19917121314151620结束结束1122107开始开始19917121314151620结束结束1122第一步:画出其程序流程图和对应的控制流图第一步:画出其程序流程图和对应的控制流图G。计算环路复杂度计算环路复杂度:图中域的个数为图中域的个数为4;V(G)=E-N+2=11-9+2=4;V(G)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论