软件质量保证与测试 第三章 软件测试方法._第1页
软件质量保证与测试 第三章 软件测试方法._第2页
软件质量保证与测试 第三章 软件测试方法._第3页
软件质量保证与测试 第三章 软件测试方法._第4页
软件质量保证与测试 第三章 软件测试方法._第5页
已阅读5页,还剩143页未读 继续免费阅读

下载本文档

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

文档简介

1、 软件测试方法和技术软件测试方法和技术第第3章章 软件测试的方法软件测试的方法第第3 3章章 软件测试的方法软件测试的方法3.1 基于直觉和经验基于直觉和经验的的方法方法3.2 基于输入域的方法基于输入域的方法3.3 基于基于组合及其优化组合及其优化的的技术技术3.4 基于基于逻辑覆盖逻辑覆盖的方法的方法3.5 基于基于故障模式的测试故障模式的测试方法方法3.6 基于基于模型的测试模型的测试方法方法3.7 形式化形式化方法方法黑盒黑盒测试测试和白盒和白盒测试方法测试方法Ad-hocAd-hoc和和ALACALAC法法错误推测法错误推测法等价类划分法等价类划分法边界值边界值分析法分析法判定表判定

2、表方法方法因果图法因果图法正交试验法正交试验法功能图法功能图法语句覆盖语句覆盖判定覆盖判定覆盖条件覆盖条件覆盖判定条件覆盖判定条件覆盖条件组合覆盖条件组合覆盖基本路径覆盖基本路径覆盖黑盒黑盒测试测试方法方法白盒白盒测试测试方法方法白盒测试的优、缺点白盒测试的优、缺点白盒测试的优点有:1)迫使测试人员去仔细思考软件的实现2)可以检测代码中的每条分支和路径3)揭示隐藏在代码中的错误4)对代码的测试比较彻底5)最优化白盒测试的缺点有:1)昂贵2)无法检测代码中遗漏的路径和数据敏感性错误3)不验证规格的正确性4黑盒测试的优、缺点黑盒测试的优、缺点黑盒测试的优点有:1)比较简单,不需要了解程序内部的代码

3、及实现;2)与软件的内部实现无关;3)从用户角度出发,能很容易的知道用户会用到哪些功能,会遇到哪些问题;4)基于软件开发文档,所以也能知道软件实现了文档中的哪些功能;5)在做软件自动化测试时较为方便。黑盒测试的缺点有:1)不可能覆盖所有的代码,覆盖率较低,大概只能达到总代码量的30%;2)自动化测试的复用性较低。53.1 3.1 基于直觉和经验的方法基于直觉和经验的方法Ad-hoc测试方法和测试方法和ALAC测试测试 错误推测法错误推测法 基于直觉和经验基于直觉和经验推推测程序中所有可能存在的各种错误,测程序中所有可能存在的各种错误,从而有针对性地设计测试用例。从而有针对性地设计测试用例。3.

4、1.1 Ad-hoc3.1.1 Ad-hoc测试和测试和ALACALAC测试测试Ad-hoc 原意是指原意是指 “特定的,一次性的特定的,一次性的”,这里指,这里指“随随机的,自由的机的,自由的”测试。强调测试人员根据自己的经测试。强调测试人员根据自己的经验,不受测试用例的束缚,放开思路、灵活的对软验,不受测试用例的束缚,放开思路、灵活的对软件进行功能和性能抽查。件进行功能和性能抽查。随机测试可以作为严格意义上的测试方法的一种补充手随机测试可以作为严格意义上的测试方法的一种补充手段,有时能发现一些隐藏比较深的缺陷,可以达到段,有时能发现一些隐藏比较深的缺陷,可以达到出人意料的效果。出人意料的效

5、果。8ALAC,是,是Act-like-a-customer(像像客户那样做)的简写客户那样做)的简写,该该方法是一种基于客户使用产品的知识开发出来的测试方方法是一种基于客户使用产品的知识开发出来的测试方法,它的出发点是著名的法,它的出发点是著名的Pareto 80/20规律规律。3.1.1 Ad-hoc3.1.1 Ad-hoc测试和测试和ALACALAC测试测试3.1.2 3.1.2 错误推测法错误推测法错误推测法错误推测法是测试者根据经验、知识和直觉来发是测试者根据经验、知识和直觉来发现软件错误,来推测程序中可能存在的各种错误,现软件错误,来推测程序中可能存在的各种错误,从而有针对性的进行

6、测试从而有针对性的进行测试。 单元测试中发现的模块错误;单元测试中发现的模块错误; 产品的以前版本曾经发现的错误;产品的以前版本曾经发现的错误; 输入数据为输入数据为0 0或字符为空;或字符为空; 当软件要求输入时当软件要求输入时( (比如在文本框中比如在文本框中),),不是没有输入不是没有输入正确的信息,而是根本没有输入任何内容,单单按正确的信息,而是根本没有输入任何内容,单单按了了EnterEnter键;键; 3.2 3.2 基于输入域的测试基于输入域的测试方法方法3.2.1 3.2.1 等价类划分方法等价类划分方法all inputsi1i4i2i3确定等价类确定等价类的六条原则的六条原

7、则in rangegreater than rangeless than rangevaluegreater than valueless than value例:例: 输入值是学生成绩,范围是输入值是学生成绩,范围是0100。有效等价类:有效等价类: 0成绩成绩100无效等价类:无效等价类: 成绩成绩100(2 2)在输入条件规定了输入值的集合或者规定了在输入条件规定了输入值的集合或者规定了“必须如何必须如何”的条件的情况下,可以确立一个有效等价类和一个无效等价的条件的情况下,可以确立一个有效等价类和一个无效等价类。类。not member of setmember of set确定等价类的

8、六条原则确定等价类的六条原则 例:例:程序的输入条件是程序的输入条件是x=10 有效等价类:有效等价类: x=10 无效等价类:无效等价类: x10(3 3)在输入条件是一个布尔量的情况下,可确定一个有在输入条件是一个布尔量的情况下,可确定一个有效等价类和一个无效等价类。效等价类和一个无效等价类。BooleanNon-Boolean 例:例:程序的输入条件是程序的输入条件是BOOL x=true 有效等价类:有效等价类: x=true 无效等价类:无效等价类: x=false确定等价类的六条原则确定等价类的六条原则确定等价类确定等价类的六条原则的六条原则例:例:输入条件说明学历可为输入条件说明

9、学历可为:专科、本科、硕士、博士四种专科、本科、硕士、博士四种之一。之一。有效等价类:专科、本科、硕士、博士有效等价类:专科、本科、硕士、博士无效等价类:其它任何学历无效等价类:其它任何学历(5 5)例:例:校内电话号码拨外线为校内电话号码拨外线为9开头开头有效等价类:有效等价类: 9外线号码外线号码无效等价类:无效等价类: 非非9开头外线号码开头外线号码 9非外线号码非外线号码 确定等价类的六条原则确定等价类的六条原则(6 6)确定等价类的六条原则确定等价类的六条原则根据等价类创建测试用例的步骤根据等价类创建测试用例的步骤第一步:划分等价类第一步:划分等价类建立等价类表,列出所有划分出的等价

10、类,并为每个等价建立等价类表,列出所有划分出的等价类,并为每个等价类规定一个唯一的编号。类规定一个唯一的编号。第二步:为有效等价类设计测试用例第二步:为有效等价类设计测试用例a)a) 设计一个新的测试用例,使其尽可能多地覆盖尚未覆盖设计一个新的测试用例,使其尽可能多地覆盖尚未覆盖的有效等价类;的有效等价类;b)b) 重复重复a)a),最后使得所有有效等价类均被测试用例所覆盖;,最后使得所有有效等价类均被测试用例所覆盖;第三步:为每一个无效等价类至少设计一个测试用例第三步:为每一个无效等价类至少设计一个测试用例a)a) 设计一个新的测试用例,使其只覆盖一个无效等价类;设计一个新的测试用例,使其只

11、覆盖一个无效等价类;b)b) 重复重复a)a)使所有无效等价类均被覆盖。使所有无效等价类均被覆盖。输入条件输入条件有效等价类有效等价类无效等价类无效等价类等价类划分法举例等价类划分法举例3.2.2 3.2.2 边界值分边界值分析法析法 确定边界情况(输入或输出等价类的边界)确定边界情况(输入或输出等价类的边界) 选取正好等于、刚刚大于或小于边界值作为测试数据选取正好等于、刚刚大于或小于边界值作为测试数据与等价划分的区别与等价划分的区别2122常见的边界值常见的边界值确定边界值的方法确定边界值的方法(1 1)如果输入条件规定了值的范围,则应取刚达到这个范如果输入条件规定了值的范围,则应取刚达到这

12、个范围的边界的值,以及刚刚超越这个范围边界的值作为围的边界的值,以及刚刚超越这个范围边界的值作为测试输入数据。测试输入数据。a ab b例如:例如:如果程序的规格说明中规定:如果程序的规格说明中规定:重量在重量在10公斤至公斤至50公斤范围内的邮件,其邮费计算公式为公斤范围内的邮件,其邮费计算公式为。作为。作为测试用例,我们应取测试用例,我们应取10及及50,还应取,还应取10.01,49.99,9.99及及50.01等。等。24(2 2)如果输入条件规定了值的个数,则用最大个数、最小如果输入条件规定了值的个数,则用最大个数、最小个数、比最小个数少一、比最大个数多一的数作为测试个数、比最小个数

13、少一、比最大个数多一的数作为测试数据。数据。a ab b确定边界值的方法确定边界值的方法例如:例如:一个输入文件应包括一个输入文件应包括1255个记录,则测试用例个记录,则测试用例可取可取1和和255,还应取,还应取0及及256等。等。(3 3)如果程序的规格说明给出的输入域或输出域是有序集如果程序的规格说明给出的输入域或输出域是有序集合,则应选取集合的第一个元素和最后一个元素作为测合,则应选取集合的第一个元素和最后一个元素作为测试用例。试用例。确定边界值的方法确定边界值的方法例例1:某程序的规格说明要求计算出某程序的规格说明要求计算出“每月保险金扣除额每月保险金扣除额为为0至至1165.25

14、元元”,其测试用例可取,其测试用例可取0.00、0.01、1165.24、1165.25,还可取,还可取-0.01及及116526等。等。例例2:一程序属于情报检索系统,要求每次一程序属于情报检索系统,要求每次最少显示最少显示1条、最多显示条、最多显示4条情报摘要条情报摘要,这时我们应考虑的测试用,这时我们应考虑的测试用例包括例包括1和和4,还应包括,还应包括0和和5等。等。 (4 4)如果程序中使用了一个内部数据结构,则应当选择如果程序中使用了一个内部数据结构,则应当选择这个内部数据结构的边界上的值作为测试用例。这个内部数据结构的边界上的值作为测试用例。26确定边界值的方法确定边界值的方法边

15、界值附近的数据确定的几种方法边界值附近的数据确定的几种方法项项边界值边界值测试用例的设计思路测试用例的设计思路字符起始-1个字符/结束+1个字符假设一个文本输入区域允许输入1个到255个 字符,输入1个和255个字符作为有效等价类;输入0个和256个字符作为无效等价类,这几个数值都属于边界条件值。数值最小值-1/最大值+1假设某软件的数据输入域要求输入5位的数据值,可以使用10000作为最小值、99999作为最大值;然后使用刚好小于5位和大于5位的 数值来作为边界条件。空间小于空余空间一点/大于满空间一点例如在用U盘存储数据时,使用比剩余磁盘空间大一点(几KB)的文件作为边界条件。数值的边界值

16、校验数值的边界值校验项项范围或值范围或值位(bit)0 或 1字节(byte)0 255字(word)065535(单字)或 04294967295(双字)千(K)1 024兆(M)1 048 576吉(G)1 073 741 824太(T)1 099 511 627 77628ASCII TableCharacter ASCII ValueCharacter ASCII ValueNullSpace/0129;A0324748495057586465BYZabyz66899091969798121122123字符的边界值校验字符的边界值校验rem create a 10 element in

17、teger arrayrem initialize each element to-1dim data(10) as integerdim I as integerfor i=1 to 10data(i) =-1next iend30例例1 data(0)=0 data(1)=-1data(2)=-1 data(3)=-1data(4)=-1 data(5)=-1 data(6)=-1 data(7)=-1 data(8)=-1 data(9)=-1data(10)=-1 正常值(有效类)正常值(有效类): X1 = 123123边界值边界值: X2 = 12345边界值边界值: X3 = 1

18、234567边界值边界值: X4 = 1边界值边界值: X5 = 0无效类的值无效类的值: X6 = -123123无效类的值无效类的值: X7 = asdasd例例2 测试测试 限制性用户输入:限制性用户输入:6位正整数位正整数无效值无效值: X8 = 000123 X9 = asd123 X10 = Empty例例3 3Test cases :任意的正常值任意的正常值: 随机选择几个选项随机选择几个选项 边界值边界值: 选择所有选项选择所有选项 边界值边界值: 一个都不选一个都不选边界值边界值: 选择一个选项选择一个选项33边界值分析法其他案例边界值分析法其他案例作业:作业: 加法器加法器

19、 C语言源程序:计算两个l-l00之间整数的和。 要求:1)用等价类划分法分析其等价类,用边界值法找出边界值,并设计相应的测试用例。2)分析输出,找出错误。答案答案#includevoid main(void)int a;/加数int b;/加数int c;/和while(l)printf(请输入两个1-100之间的整数:);fflush(stdin);/清空输入缓冲区scanf(%d%d,&a,&b);if(a1&a1&b3.3.3 两两组合(两两组合(Pair-wise)方法)方法在不可能对所有条件组合进行覆盖、遍历的情况下,如在不可能对所有条件组合进行覆盖、遍历的情况下,如何用最少的工作

20、量发现最多的缺陷,即何用最少的工作量发现最多的缺陷,即“测试性价比测试性价比”问题。问题。 PairwisePairwise测试方法能有效的提高测试方法能有效的提高“测试性价比测试性价比”。PairwisePairwise测试方法能够有效的应对复杂环境下的测试。测试方法能够有效的应对复杂环境下的测试。Pair-wise方法方法p 大部分缺陷是在两个变量取值冲突的测试时被发现的。大部分缺陷是在两个变量取值冲突的测试时被发现的。p 不仅仅是在所有的组合情况下才会发现所有的测试缺不仅仅是在所有的组合情况下才会发现所有的测试缺陷。陷。p Pair-wisePair-wise不需要测试所有的组合,而是测

21、试所有的不需要测试所有的组合,而是测试所有的“Pair-wisePair-wise”即可。即可。 Pair-wise可以显著地减少测试用例的数目,同时保证较高的测试质量。52Pair-wise方法方法输入参数的个数每个参数值的个数测试用例数(无Pair-wise)测试用例数(用Pair-wise)4334=819133313=15943231520101020180Pair-wisePair-wise方法举例方法举例53工具:PICT下载:/tools.aspPICTPICT工具的使用说明工具的使用说明Pair-wise方法工具软件方法工具软件例:例

22、:P4755运行结果:登录:未登录,第一次登录,正常登录会员状态:非会员,会员,vip会员,雇员折扣:没有,假日95折,会员9折,vip会员8折物流方式:标准,快递,加急onlinebuy.txt例如:例如:微软微软PowerpointPowerpoint程序的打印测试,也需要考虑程序的打印测试,也需要考虑4 4个个因素,每个因素也有多个选项。因素,每个因素也有多个选项。 打印范围分:全部、当前幻灯片、给定范围打印范围分:全部、当前幻灯片、给定范围 打印内容分:幻灯片、讲义、备注页、大纲视图打印内容分:幻灯片、讲义、备注页、大纲视图 打印颜色打印颜色/ /灰度分灰度分: : 彩色、灰度、黑白彩

23、色、灰度、黑白 打印效果分:幻灯片加框和幻灯片不加框。打印效果分:幻灯片加框和幻灯片不加框。 在许多应用系统的测试工作中,不会象判断三角形那在许多应用系统的测试工作中,不会象判断三角形那样简单,输入条件的因素很多,而且每个因素也不能简单样简单,输入条件的因素很多,而且每个因素也不能简单用用“是是”和和“否否”来回答。来回答。测试组合会变得很多,如果按照传统的测试方法,会导测试组合会变得很多,如果按照传统的测试方法,会导致很大的测试工作量致很大的测试工作量 。3.3.4 3.3.4 正交实验法正交实验法正交实验设计方法正交实验设计方法依据依据GaloisGalois理论,从大量的(实验)数据(测

24、试例)中挑选理论,从大量的(实验)数据(测试例)中挑选适量的、有代表性的点(条件组合),从而合理地安排实适量的、有代表性的点(条件组合),从而合理地安排实验(测试)的一种科学实验设计方法验(测试)的一种科学实验设计方法 正交表正交表1231111212232124221L L4 4(2 23 3)L L8 8(2 27 7)12345671111111121112222312211224122221152121212621221217221122182212112l 因子数:条件因素的个因子数:条件因素的个数。数。l 水平数:各因子的取值水平数:各因子的取值个数。个数。L L行数行数(水平数(

25、水平数因子数因子数)L L9 9(3 34 4)1234111112122231333421235223162312731328321393321正交表的正交性(以正交表的正交性(以L L9 9 (3 (34 4 ) )为例)为例)正交表的特点:正交表的特点:p 每每个列中,个列中,“1”、“2”、“3”出现出现的次数相的次数相同。同。p 任任意两列,其横方向形成的九个数意两列,其横方向形成的九个数字对中字对中,恰,恰好(好(1,1)、()、(1,2)、)、(1、3)、()、(2,1)、()、(2,2)、()、(2,3)、()、(3,1)、()、(3,2)、()、(3、3)出现的次数相)出现的

26、次数相同。同。这这两点称为正交两点称为正交性。性。均衡分散,整齐可比,代表性均衡分散,整齐可比,代表性强,效率强,效率高。高。均衡分散:试验点在试验范围内排列规均衡分散:试验点在试验范围内排列规律整律整齐。齐。整齐可比:试验点在试验范围内散布均整齐可比:试验点在试验范围内散布均匀匀 。1234111112122231333421235223162312731328321393321L9(34)正交表例例1 1员工号(员工号(IDID):填,不填):填,不填员工姓名(员工姓名(NameName) :填,不填:填,不填员工邮件地址(员工邮件地址(Mail AddressMail Address)

27、:填,不填:填,不填例例1 1:设有设有3 3个独立的查询条件,以获得特定员工的个人个独立的查询条件,以获得特定员工的个人信息。信息。例例2 2例例2 2:用户登录界面,包括用户名、密码、校验码。用户登录界面,包括用户名、密码、校验码。各个元素的取值:各个元素的取值:用户名:不填、填写错误信息、填写正确信息用户名:不填、填写错误信息、填写正确信息密码:不填、填写错误信息、填写正确信息密码:不填、填写错误信息、填写正确信息校验码:不填、填写错误信息、填写正确信息校验码:不填、填写错误信息、填写正确信息p 3 3因子因子3 3水平水平p 全面试验法:试验次数为全面试验法:试验次数为3 33 3=2

28、7=27,即取每个因子所有水,即取每个因子所有水平的组合。平的组合。p 正交试验法:试验次数要求不少于正交试验法:试验次数要求不少于 3 3* *(3-13-1)+1 = 7+1 = 7。p 利用现有的正交表公式,可选用利用现有的正交表公式,可选用L L9 9(3 34 4),试验次数为),试验次数为4 4* *(3-13-1)+1 = 9+1 = 9。63所在列1234因子用户名密码校验码D1不填不填不填-2不填填写错误信息 填写错误信息-3不填填写正确信息 填写正确信息-4填写错误信息不填填写错误信息-5填写错误信息 填写错误信息 填写正确信息-6填写错误信息 填写正确信息不填-7填写正确

29、信息不填填写正确信息-8填写正确信息 填写错误信息不填-9填写正确信息 填写正确信息 填写错误信息-例例2 2正交实验方法工具软件正交实验方法工具软件正交设计助手正交设计助手 v3.1 v3.1OrthogonalityOrthogonality Experiment Assistant II Experiment Assistant II v3.1 v3.1新建工程新建工程新建实验新建实验小结小结黑盒方法黑盒方法静态静态动态动态其它其它多因素多因素单因素单因素等价类划分边界值分析因果分析法判定表法正交试验法Pair-wise方法功能图有限状态机错误推测法。3.43.4 基于逻辑覆盖的方法基于

30、逻辑覆盖的方法3.4.0 语句覆盖3.4.1 判定覆盖3.4.2 条件覆盖3.4.3 判定-条件覆盖3.4.4 条件组合覆盖3.4.5 基本路径覆盖逻辑覆盖逻辑覆盖 vs.vs. 路径覆盖路径覆盖3.4.0 3.4.0 语句覆盖语句覆盖p语句覆盖法的基本思想是设计若干测试用例语句覆盖法的基本思想是设计若干测试用例,运行被测程序,使程序中的每个可执行语,运行被测程序,使程序中的每个可执行语句至少被执行一次句至少被执行一次程序源代程序源代码:码:1. dim a, b as integer2. dim c as double3. if (a 0 and b 0) then4. c = c / a5

31、. end if6. if (a 1 or c 1) then7. c = c + 18. end if9. c = b + c示例:语句覆盖可发现的问题示例:语句覆盖可发现的问题(a, b ,c)= (1, 1, 2)3689IFIFENDIFENDIFfeicbad457jh程序控制流程序控制流图:图:覆盖路径:覆盖路径:abdefhi程序源代程序源代码:码:1. dim a, b as integer2. dim c as double3. if (a 0 or b 0) then4. c = c / a5. end if6. if (a 1 or c 1) then7. c = c +

32、 18. end if9. c = b + c(a, b ,c)= (1, 1, 2)and3689IFIFENDIFENDIFfeicbad457jh程序控制流程序控制流图:图:覆盖路径:覆盖路径:abdefhi示例:语句覆盖不能发现的问题示例:语句覆盖不能发现的问题优点:优点:可以很直观地从源代码得到测试用例,可以很直观地从源代码得到测试用例,无须细分每条判定表达式无须细分每条判定表达式 缺点:缺点:语句覆盖常是语句覆盖常是“最弱的覆盖最弱的覆盖”,不考虑,不考虑各种分支的组合,不能发现其中的逻辑错误。各种分支的组合,不能发现其中的逻辑错误。假如只要求达到语句覆盖,那么换来的确实测假如只要

33、求达到语句覆盖,那么换来的确实测试效果不明显,很难更多地发现代码中的问题。试效果不明显,很难更多地发现代码中的问题。语句覆盖的优缺点语句覆盖的优缺点3.4.1 3.4.1 判定覆盖判定覆盖p判定覆判定覆盖盖的的基本思想是设计若干用例,运行被测基本思想是设计若干用例,运行被测程序,使得程序中每个判断的取真分支和取假分程序,使得程序中每个判断的取真分支和取假分支至少经历一次,即判断真假值均曾被满足。支至少经历一次,即判断真假值均曾被满足。p一个判定代表着程序一个判定代表着程序的一个分支的一个分支,所,所以判定覆盖以判定覆盖也被称为也被称为分支覆盖分支覆盖。示示例例 测试用例测试用例: a=2,b=

34、1,c=6 a=-2,b=-1,c=-3 测试用例测试用例: a=1,b=1,c=0 a=2,b=-1,c=6判定覆盖的优缺点判定覆盖的优缺点优点:优点:判定覆盖具有比语句覆盖更强的测试判定覆盖具有比语句覆盖更强的测试能力。同样判定覆盖也具有和语句覆盖一样的简能力。同样判定覆盖也具有和语句覆盖一样的简单性,无须细分每个判定就可以得到测试用例。单性,无须细分每个判定就可以得到测试用例。缺点:缺点:往往大部分的判定语句是由多个逻辑往往大部分的判定语句是由多个逻辑条件组合而成,若仅仅判断其整个最终结果,而条件组合而成,若仅仅判断其整个最终结果,而忽略每个条件的取值情况,必然会遗漏部分测试忽略每个条件

35、的取值情况,必然会遗漏部分测试路径。判定覆盖仍是弱的逻辑覆盖。路径。判定覆盖仍是弱的逻辑覆盖。743.4.2 3.4.2 条件覆盖条件覆盖p条件覆盖条件覆盖的基本思想是设计若干测试用例,执的基本思想是设计若干测试用例,执行被测程序以后,要使每个判断中每个条件的行被测程序以后,要使每个判断中每个条件的可能取值至少满足一次。可能取值至少满足一次。(a0 and b0) a0b0 示示例例 判断判断M表达式表达式: 条条件件 a0 取真取真 记为记为 T1 条件条件 a0 取假取假 记为记为 F1 条条件件 b0 取真取真 记为记为 T2 条件条件 b0 取假取假 记为记为 F2 判断判断N表达式表

36、达式: 条条件件 a1 取真取真 记为记为 T3 条件条件 a1 取假取假 记为记为 F3 条条件件 c1 取真取真 记为记为 T4 条件条件 c1取取 假假 记为记为 F4测试用例测试用例覆盖条覆盖条件件具体取具体取值条件值条件a=2b=-1c=-2T1, F2, T3,F4a0b1c=1a=-1b=2c=3F1, T2, F3, T4a0a1它覆盖了判定它覆盖了判定M的的N分支和判断分支和判断N N的的Y分支。分支。示例示例优点:优点:增加了对条件判定情况的测试。增加了对条件判定情况的测试。缺点:缺点:条件覆盖不一定包含判定覆盖。条件覆盖不一定包含判定覆盖。例如,上面设计的用例就没有覆盖判

37、断例如,上面设计的用例就没有覆盖判断M M的的Y Y分分支和判断支和判断N N的的N N分支。条件覆盖只能保证每个条件至分支。条件覆盖只能保证每个条件至少有一次为真或假,而不考虑所有的判定结果。少有一次为真或假,而不考虑所有的判定结果。条件覆盖的优缺点条件覆盖的优缺点3.4.3 3.4.3 判判定定- -条条件覆盖件覆盖p判定判定-条件覆盖条件覆盖是判定和条件覆盖设计方法的交集是判定和条件覆盖设计方法的交集,即设计足够的测试用例,使得判断条件中的所有,即设计足够的测试用例,使得判断条件中的所有条件可能取值至少执行一次,同时,所有判断的可条件可能取值至少执行一次,同时,所有判断的可能结果至少执行

38、一能结果至少执行一次。次。判定判定条件覆盖条件覆盖按按照判定条件覆盖照判定条件覆盖的要求,设计的测试用的要求,设计的测试用例要满足如下条件:例要满足如下条件:(1)所有条件可能)所有条件可能至少执行一次取值;至少执行一次取值;(2)所有判断的可)所有判断的可能结果至少执行一次。能结果至少执行一次。判断判断M判断判断N示例示例判断判断M判断判断N测试用例测试用例覆盖覆盖条件条件覆盖判断覆盖判断a=2b=1c=6T1, T2,T3, T4M的的Y分分支支N的的Y分支分支a=-1b=-2c=-3F1, F2, F3, F4M的的N分分支支N的的N分支分支判定判定- -条件覆盖的优缺点条件覆盖的优缺点

39、优点优点 :能同时满足判定、条件两种覆盖标准。能同时满足判定、条件两种覆盖标准。缺点缺点 :未考虑条件的组合情况。未考虑条件的组合情况。3.4.4 3.4.4 条件组合覆盖条件组合覆盖条件组合覆盖条件组合覆盖的基本思想是通的基本思想是通过执行足够的测试过执行足够的测试用例,使得程序中每个判定的所有可能的条件取值用例,使得程序中每个判定的所有可能的条件取值组合都至少出现一次。组合都至少出现一次。示例示例设设计计组合条件组合条件如表所示:如表所示:编号编号覆盖条件取值覆盖条件取值判定条件取值判定条件取值 具体条件取值具体条件取值1T1,T2M取取Ya0,b02T1,F2M取取Na0,b=03F1,

40、T2M取取Na04F1,F2M取取Na= 0,b1,c16T3,F4N取取Ya1,c=17F3,T4N取取Ya18F3,F4N取取Na=1,c 0 )5 6 If ( iType=0 )7x=y+2;8 else9 If ( iType=1 )10 x=y+10;11 else12 x=y+20;13 14 (1)画出控制流图)画出控制流图(2)计算)计算环路复杂环路复杂度度(3)导出独立路径(用语句)导出独立路径(用语句编号表示)编号表示)(4)设计测试用例)设计测试用例例题例题(1)画出控制流图:)画出控制流图:(2)计算计算环路复杂环路复杂度:度: 10(条边)(条边)- 8(个节点)(

41、个节点)+ 2 = 4(3)导出独立路径(用语句编号表示)导出独立路径(用语句编号表示) 路径路径1:414 路径路径2:46713 414 路径路径3:4691013414 路径路径4:4691213414467910121314例例题解答题解答输入数据输入数据预期输出预期输出测试用例测试用例1irecordnum = 0itype = 0 x = 0y = 0测试用例测试用例2irecordnum = 1itype = 0 x = 2y = 0测试用例测试用例3irecordnum = 1itype = 1x = 10y = 0测试用例测试用例4irecordnum = 1itype =

42、2x = 20y = 0(4)设计测试用例:)设计测试用例:例例题解答题解答习题习题1 1Int IsLeap(int year) if (year % 4 = 0) 1 if (year % 100 = 0) 2 if (year % 400 =0) 3 leap = 1; 4 else leap = 0; 5 else leap = 1; 6else leap = 0; 7return leap; 8(1)画出画出控制流图控制流图(2)请计算环行复杂请计算环行复杂度度V(G)(3)导出基本路径导出基本路径(4)设计测试用例设计测试用例106习题习题1 1解答解答(1)控制流图(见右)控制流

43、图(见右)(2)环行复杂度环行复杂度V(G): V(G)=10-8+2=4(3)基本路径集基本路径集: 1-7-8 1-2-6-8 1-2-3-4-8 1-2-3-5-8107(4)设计测试用例:设计测试用例:测试用例测试用例4 4个:个:10011001:满足不被:满足不被4 4整除的路径整除的路径 19961996:满足能被:满足能被4 4不能被不能被100100整除的路径整除的路径20002000:满足能被:满足能被400400整除的路径整除的路径18001800:满足不能被:满足不能被400400整除的路径整除的路径 下下面是选择排序的程序,其中面是选择排序的程序,其中datalist

44、是数据表,它有两个是数据表,它有两个数据成员:一是元素类型为数据成员:一是元素类型为Element的数组的数组V,另一个是数,另一个是数组大小组大小n。算法中用到交换两数组元素内容的操作。算法中用到交换两数组元素内容的操作Swap( ): void SelectSort ( datalist list ) /对表对表list.V0到到list.Vn-1进行排序进行排序, n是表当前长度。是表当前长度。 for ( int i = 0; i list.n-1; i+ ) int k = i; /在在list中找具有最小关键码的对象中找具有最小关键码的对象 for ( int j = i+1; j

45、 list.n; j+) if ( list.Vj list.Vk ) k = j; /当前具最小关键码的对象当前具最小关键码的对象 if ( k != i ) Swap ( list.Vi, list.Vk ); /交换交换 习题习题2 2(1)路径)路径1,3(2)路径)路径1,2,4,6(3)路径)路径1,2,4,7(4)路径)路径1,2,5,8,3(5)路径)路径1,2,5,9,3习题习题2 2解答解答补充一:循环测试补充一:循环测试n目标目标: : 在循环内部及边界上执行测试在循环内部及边界上执行测试 (1)简单循环)简单循环 (2)嵌套循环)嵌套循环 (3)串接循环)串接循环 (4

46、)不规则循环)不规则循环补充一:循环测试补充一:循环测试1. 简简单循环单循环(迭代次数迭代次数n) 完全跳过循环完全跳过循环 只经过循环一次只经过循环一次 经过循环两次经过循环两次 经过循环经过循环m( m R) Q=Q-R; else R=R-Q; return Q; 程序插桩技术程序插桩技术在程序入口处插入在程序入口处插入对计数器对计数器C(i)的初的初始化语句始化语句在程序出口处在程序出口处加入打印语句加入打印语句 为记录该程序为记录该程序中语句的执行次中语句的执行次数,使用插桩技数,使用插桩技术插入语句:术插入语句: C( C(i i)=C()=C(i i)+1)+1其中其中: :i

47、 i=1,2,6=1,2,6 插桩之后的流插桩之后的流程图如右图。程图如右图。程序插桩技术程序插桩技术 如果我们在程序的入口如果我们在程序的入口处还插入了对计数器处还插入了对计数器C(C(i i) )初始化的语句,在初始化的语句,在出口处插入了打印这些出口处插入了打印这些计数器的语句,就构成计数器的语句,就构成了完整的插桩程序。它了完整的插桩程序。它就能记录并输出在各程就能记录并输出在各程序点上语句的实际执行序点上语句的实际执行次数。次数。 右右图为插桩之后的程序,图为插桩之后的程序,箭头所指为插入的语句。箭头所指为插入的语句。源程序的语句已略去。源程序的语句已略去。设计插桩程序时需要考虑的问

48、题包括:设计插桩程序时需要考虑的问题包括: 探测哪些信息;探测哪些信息; 在程序的什么部位设置探测点;在程序的什么部位设置探测点; 需要设置多少个探测点;需要设置多少个探测点; 程序中特定部位插入某些用以判断变量特性程序中特定部位插入某些用以判断变量特性的语句。的语句。第第1 1个个问题:问题:具体具体问题具体分析。问题具体分析。第第2 2个个问题:问题:在在实际测试通常在下面一些部位设置实际测试通常在下面一些部位设置探测点:探测点: 程序块的第程序块的第1 1个可执行语句之前个可执行语句之前 for,dofor,do ,do- ,do-while,dowhile,do until until

49、 等循环语句处。等循环语句处。if, else if,if, else if, elseelse及及end ifend if等条件语句各分等条件语句各分支处。支处。输入输入/ /输出语句之后。输出语句之后。函数、过程、子程序调用语句之后。函数、过程、子程序调用语句之后。returnreturn语句之后语句之后gotogoto语句之后语句之后第第3 3个个问题:问题:需要需要考虑如何设置最少探测点方案。考虑如何设置最少探测点方案。第第4 4个个问题:问题:是是如何在程序中特定部位插入断言语如何在程序中特定部位插入断言语句。在应用程序插桩技术时,可在程序中特定部句。在应用程序插桩技术时,可在程序中

50、特定部位插入某些用以判断变量特性的语句,使得程序位插入某些用以判断变量特性的语句,使得程序执行中这些语句得以证实执行中这些语句得以证实。3.5 功功能能图法图法 状态迁移图状态迁移图用于表示输入数据序列以及相应的输用于表示输入数据序列以及相应的输出数据,在状态迁移图中,由输入数据和当前状出数据,在状态迁移图中,由输入数据和当前状态决定输出数据和后续状态。态决定输出数据和后续状态。 逻辑功能模型逻辑功能模型用于表示在状态输入条件和输出条用于表示在状态输入条件和输出条件之间的对应关系。逻辑功能模型只适合于描述件之间的对应关系。逻辑功能模型只适合于描述静态说明,输出数据仅由输入数据决定。静态说明,输

51、出数据仅由输入数据决定。3.5 功能图法功能图法例:例:书书P58P58如何设计测试用例?如何设计测试用例? 从状态迁移图导出整体的测试用例,以覆盖从状态迁移图导出整体的测试用例,以覆盖系统(程序)控制的逻辑路径系统(程序)控制的逻辑路径。 从从功能逻辑模型(判定表或因果图)导出局功能逻辑模型(判定表或因果图)导出局部测试用例,覆盖各个状态的各种输入数据部测试用例,覆盖各个状态的各种输入数据的组合。的组合。的测试的测试用用例。例。 功功能图法是综合运用黑盒方法和白盒方法来设计能图法是综合运用黑盒方法和白盒方法来设计测试用例,即整体上选用白盒方法测试用例,即整体上选用白盒方法路径覆盖、路径覆盖、

52、分支和条件覆盖等,而局部上选用的是黑盒方法分支和条件覆盖等,而局部上选用的是黑盒方法判定判定表表或因果图方法或因果图方法 。补充:黑盒测试补充:黑盒测试- -场景测试场景测试p 现在的软件几乎都是用事件触发来控制流程的。现在的软件几乎都是用事件触发来控制流程的。p 事件触发时的情景并形成了场景,而同一事件不事件触发时的情景并形成了场景,而同一事件不同的触发顺序和处理结果就形成了事件流。同的触发顺序和处理结果就形成了事件流。p这种在软件设计方面的思想可以引入到软件测试这种在软件设计方面的思想可以引入到软件测试中,可以生动地描绘出事件触发时的情景,有利于中,可以生动地描绘出事件触发时的情景,有利于

53、设计测试用例,同时使测试用例更容易理解和执行。设计测试用例,同时使测试用例更容易理解和执行。 图中,有一个基本流和四个备选流。图中,有一个基本流和四个备选流。每个可能路径,可以确定不同的用例每个可能路径,可以确定不同的用例场景。从基本流开始,再将基本流和场景。从基本流开始,再将基本流和备选流结合起来,可以确定以下用例备选流结合起来,可以确定以下用例场景:场景:p 场景场景1:基本流:基本流 p 场景场景2:基本流:基本流 备选流备选流1p 场景场景3:基本流:基本流 备选流备选流1 备选流备选流2 p 场景场景4:基本流:基本流 备选流备选流3 p 场景场景5:基本流:基本流 备选流备选流3

54、备选流备选流1 p 场景场景6:基本流:基本流 备选流备选流3 备选流备选流1 备选流备选流2p 场景场景7:基本流:基本流 备选流备选流4p 场景场景8:基本流:基本流 备选流备选流3 备选流备选流4补充:场景测试补充:场景测试例如:例如:在线购物实例在线购物实例。用户进入一个在线购物网站用户进入一个在线购物网站进行购物,选购物品后,进行在线购买,这时需要进行购物,选购物品后,进行在线购买,这时需要使用帐号登录,登录成功后,进行付钱交易,交易使用帐号登录,登录成功后,进行付钱交易,交易成功后,生成订购单,完成整个购物过程。成功后,生成订购单,完成整个购物过程。步骤:步骤:第一步第一步:确定基

55、本流和备选流确定基本流和备选流。第二步第二步:根据基本流和备选流来确定场景根据基本流和备选流来确定场景。第三步第三步:设计设计测试测试用例用例第四步第四步:设计数据设计数据场景测试例题场景测试例题第一步第一步:确定基本流和备选流确定基本流和备选流场景测试例题场景测试例题第二步第二步:根据基本流和备选流来确定场景根据基本流和备选流来确定场景场景测试例题场景测试例题第第三步三步:设计设计测试测试用例用例 对于每一个场景都需要确定测试用例。可以采用矩对于每一个场景都需要确定测试用例。可以采用矩阵或阵或判定判定表来确定和管理测试用例。表来确定和管理测试用例。场景测试例题场景测试例题第四步第四步:设计数

56、据设计数据,把数据填入上面的用例表中。把数据填入上面的用例表中。说明:说明:以上写到的测试用例只是购物的一部分测试用例。以上写到的测试用例只是购物的一部分测试用例。可以在写完后继续进行补充和扩展,达到比较好的覆盖。可以在写完后继续进行补充和扩展,达到比较好的覆盖。 场景测试例题场景测试例题3.6 测试用例构成及设计测试用例构成及设计1 1、测试用例的定义、测试用例的定义 测试用例(测试用例(TEST CASE)是为了高效率地发现软是为了高效率地发现软件缺陷而精心设计的少量测试数据。实际测试中,件缺陷而精心设计的少量测试数据。实际测试中,由于无法达到穷举测试,所以要从大量输入数据中由于无法达到穷

57、举测试,所以要从大量输入数据中精选有代表性或特殊性的数据来作为测试数据精选有代表性或特殊性的数据来作为测试数据。 好好的测试用例应该能发现尚未发现的软件缺陷。的测试用例应该能发现尚未发现的软件缺陷。2 2、为什么要编写和记录测试用例、为什么要编写和记录测试用例 有助于提高测试用例的质量;有助于提高测试用例的质量; 为项目团队内的沟通提供基础;为项目团队内的沟通提供基础; 使测试用例能够得到复用;使测试用例能够得到复用; 为测试用例集的改进提供基础。为测试用例集的改进提供基础。3.6 测试用例构成及设计测试用例构成及设计3 3、测试用例的编制要素、测试用例的编制要素n编号编号n简要说明简要说明n

58、优先级优先级n前置条件及运行准备前置条件及运行准备n运行步骤运行步骤n预期运行结果预期运行结果n测试数据测试数据n与其他测试案例的关系与其他测试案例的关系3.6 测试用例构成及设计测试用例构成及设计测试用例包含的要素测试用例包含的要素(1 1)用例编号)用例编号:每个测试用例都有唯一的标识号,:每个测试用例都有唯一的标识号,用以区别其他测试用例。测试用例的编号有一定的用以区别其他测试用例。测试用例的编号有一定的规则,比如系统测试用例的编号这样定义规则:规则,比如系统测试用例的编号这样定义规则: PROJECT1-ST-001 PROJECT1-ST-001 ,命名规则是,命名规则是项目名称项目

59、名称测试测试阶段类型(系统测试阶段)阶段类型(系统测试阶段)编号编号。定义测试用例。定义测试用例编号,便于查找测试用例,便于测试用例的跟踪。编号,便于查找测试用例,便于测试用例的跟踪。(2 2)测试项:)测试项:指明并简单描述本测试用例是用来测指明并简单描述本测试用例是用来测试哪些项目、子项目或软件特性的。试哪些项目、子项目或软件特性的。 例如例如“计算器程序加法运算的上限溢出处理计算器程序加法运算的上限溢出处理”测试用例包含的要素测试用例包含的要素(3 3)优先级)优先级:定义测试用例的优先级别,可粗略地:定义测试用例的优先级别,可粗略地分为分为“高高”和和“低低”两个级别,也可以分为两个级别,也可以分为“高高”、“中中”、“低低”三个级别。一般来说,软件需求的三个级别。一般来说,软件需求的优先级和测试用例的优先级一致。即如果软件需求优先级和测试用例的优先级一致。即如果软件需求的优先级为的优先级为“高高”,那么针对该需求的测试用例的,那么针对该需求的测试用例的优先级也为优先级也为“高高”;反之亦然。;反之亦然。(4 4)测试环境)测试环境:描述执行测试用例所需要的具体测:描述执行测试用

温馨提示

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

评论

0/150

提交评论