版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第四章第四章 黑盒测试及其实例设计黑盒测试及其实例设计 黑盒测试法黑盒测试法是根据被测是根据被测程序功能程序功能来进行测试,所以通常来进行测试,所以通常也称为也称为功能测试功能测试。用黑盒测试法设计测试用例,有。用黑盒测试法设计测试用例,有4 4 种常用种常用技术:技术:l 等价分类法等价分类法l 边界值分析边界值分析l 错误猜测法错误猜测法l 决策表法决策表法l 因果图法因果图法u测试的方法与技术测试的方法与技术软件测试的软件测试的策略和方法策略和方法静态测静态测试方法试方法动态测动态测试方法试方法人工测试方法人工测试方法计算机辅助静计算机辅助静态分析方法态分析方法白盒测试方法白盒测试方法黑
2、盒测试方法黑盒测试方法软件输入输入不深入代码细节的测不深入代码细节的测试方法称为试方法称为动态黑盒动态黑盒测试。测试。软件测试员充当客户软件测试员充当客户来使用。来使用。输出输出测试对象测试对象一个黑盒子一个黑盒子动态黑盒测试动态黑盒测试 戴上眼罩测试软件戴上眼罩测试软件 1.等价分类法等价分类法 所谓等价分类,就是把所有可能的输入数据(有效的和所谓等价分类,就是把所有可能的输入数据(有效的和无效的)划分成若干个无效的)划分成若干个等价类等价类( (等价类是指某个输入域的子等价类是指某个输入域的子集合。集合。 在该集合中,各个输入数据对于揭露程序中的错误在该集合中,各个输入数据对于揭露程序中的
3、错误都是等价的都是等价的) )。 因此,可以把全部输入数据合理地划分为若因此,可以把全部输入数据合理地划分为若干等价类,在每一个等价类中取一个数据作为测试的输入条干等价类,在每一个等价类中取一个数据作为测试的输入条件,这样就可以少量的代表性测试数据,来取得较好的测试件,这样就可以少量的代表性测试数据,来取得较好的测试结果。结果。WindowsWindows计算器程序实例分析计算器程序实例分析(1 1)你测试了)你测试了1+11+1,1+2,1+31+2,1+3和和1+41+4之后,还有必要测之后,还有必要测试试1+51+5和和1+61+6吗?你能放心地认为它们正确吗?吗?你能放心地认为它们正确
4、吗?(2 2)1+151+15与与1+999999999999999999999999999999991+99999999999999999999999999999999有有什么区别呢?什么区别呢?(3 3)测试计算器中)测试计算器中“菜单菜单”命令中的复制功能(单击命令中的复制功能(单击复制命令,在菜单弹出时键入复制命令,在菜单弹出时键入c c或者或者C C,或者按,或者按Ctrl+cCtrl+c, ,这几种方法在设计测试用例时可以缩减为按这几种方法在设计测试用例时可以缩减为按Ctrl+cCtrl+c组组合键合键) )注意注意:在寻找等价类划分时,考虑把软件具有相似输入、:在寻找等价类划分时
5、,考虑把软件具有相似输入、相似输出、相似操作的分在一组,这些组就是等价划分。相似输出、相似操作的分在一组,这些组就是等价划分。 是指对于程序的规格说明来说,是是指对于程序的规格说明来说,是合理的合理的 有意义的输入数据有意义的输入数据构成的集合。利用它可以检构成的集合。利用它可以检 验程序是否实现预先规定的功能和性能。验程序是否实现预先规定的功能和性能。 (1)有效等价类)有效等价类 是指对于程序的规格说明来说,是是指对于程序的规格说明来说,是不合理不合理 的的、无意义的输入数据无意义的输入数据构成的集合。程序员主构成的集合。程序员主 要利用这一类测试用例来检查程序中功能和性要利用这一类测试用
6、例来检查程序中功能和性 能的实现是否能的实现是否不符合不符合规格说明要求。规格说明要求。 (2)无效等价类)无效等价类 n 划分等价类不仅要要考虑代表划分等价类不仅要要考虑代表“有效有效”输入值输入值 的有效等价类,还需考虑代表的有效等价类,还需考虑代表“无效无效”输入值的无输入值的无 效等价类。效等价类。 采用等价分类法要注意以下两点采用等价分类法要注意以下两点: :n 每一无效等价类至少要用一个测试用例,不每一无效等价类至少要用一个测试用例,不 然就可能漏掉某一类错误,但允许若干有效等价然就可能漏掉某一类错误,但允许若干有效等价 类合用同一个测试用例,以便进一步减少测试的类合用同一个测试用
7、例,以便进一步减少测试的 次数。次数。 如何划分等价类?如何划分等价类?有效等价类有效等价类( (合理等价类合理等价类) )无效等价类无效等价类( (不合理等价类不合理等价类) ) p划分等价类的规则划分等价类的规则 (5 5个个) )(1)(1)如果输入条件规定了如果输入条件规定了取值范围取值范围,可定义一个有效等价,可定义一个有效等价 类和两个无效等价类。类和两个无效等价类。例例1.1:1.1: 输入值是学生成绩,范围是输入值是学生成绩,范围是0 0100100。0 1000 100 有效有效等价类等价类00成绩成绩100100无效等价类无效等价类 成绩成绩100100 无效等价类无效等价
8、类 成绩成绩01818岁,性别男,地区岁,性别男,地区河河南的人南的人。 答案答案: : 有效等价类:有效等价类:1 1个:年龄个:年龄1818岁岁andand性别男性别男andand地区地区河南河南 无效等价类:无效等价类:3 3个:年龄个:年龄=18=18岁,岁,or or 性别性别!男男,oror地区地区!河南河南p根据等价类创建测试用例的步骤根据等价类创建测试用例的步骤建立等价类表,列出所有划分出的等价类:建立等价类表,列出所有划分出的等价类:输入条件输入条件有效等价类有效等价类无效等价类无效等价类(1)(1)为每一个等价类规定一个唯一编号;为每一个等价类规定一个唯一编号;(2)(2)
9、设计一个新的测试用例,使其设计一个新的测试用例,使其尽可能多地覆盖尚未被尽可能多地覆盖尚未被覆盖的有效等价类,覆盖的有效等价类,重复这一步,直到所有的有效重复这一步,直到所有的有效等价类都被覆盖为止;等价类都被覆盖为止;(3)(3)设计一个新的测试用例,使其设计一个新的测试用例,使其仅覆盖一个尚未被覆盖仅覆盖一个尚未被覆盖的无效等价类,的无效等价类,重复这一步,直到所有的无效等价重复这一步,直到所有的无效等价类都被覆盖为止。类都被覆盖为止。从划分出的等价类中按以下原则设计测试用例:从划分出的等价类中按以下原则设计测试用例:p常见等价类划分测试形式常见等价类划分测试形式针对是否对无效数据进行测试
10、,可以将等价类测试分为 标准等价类测试和健壮等价类测试。标准等价类测试标准等价类测试不考虑无效数据值,测试用例使用每个等价类中的一个值。健壮等价类测试健壮等价类测试主要的出发点是考虑了无效等价类。对有效输入,测试用例从每个有效等价类中取一个值; 对无效输入,一个测试用例有一个无效值,其他值均取有效值。p使用等价类划分法测试的实例使用等价类划分法测试的实例例1 三角形问题分析:在多数情况下,是从输入域划分等价类的,但并非不能从被测程序的输出域反过来定义等价类,事实上,这对于三角形问题却是最简单的划分方法。 在三角形问题中,有四种可能的输出:等边三角形、等腰三角形、一般三角形和非三角形。利用这些信
11、息能够确定下列输出(值域)等价类。R1=a,b,c:边为a,b,c 的等边三角形R2=a,b,c:边为a,b,c 的等腰三角形R3=a,b,c:边为a,b,c 的一般三角形R4=a,b,c:边为a,b,c 不能构成三角形标准等价类测试不考虑无效数据值,测试用例使用每个等价类中的一个值。三角形问题的4个标准等价类测试用例三角形问题的7个健壮等价类测试用例例例2:2:某报表处理系统要求用户输入处理报表的日期,日期某报表处理系统要求用户输入处理报表的日期,日期限制在限制在20052005年年1 1月至月至20092009年年1212月,即系统只能对该段期间月,即系统只能对该段期间内的报表进行处理,如
12、日期不在此范围内,则显示输入错内的报表进行处理,如日期不在此范围内,则显示输入错误信息。系统日期规定由年、月的误信息。系统日期规定由年、月的6 6位数字字符组成,前位数字字符组成,前四位代表年,后两位代表月。四位代表年,后两位代表月。 如何用等价类划分法设计测试用例如何用等价类划分法设计测试用例, ,来测试程序的日期来测试程序的日期检查功能?检查功能?第一步:等价类划分第一步:等价类划分第二步:为有效等价类设计测试用例。(多个有效等第二步:为有效等价类设计测试用例。(多个有效等价类可使用一个测试用例)价类可使用一个测试用例)第三步:为每一个无效等价类设至少第三步:为每一个无效等价类设至少 设计
13、一个测试设计一个测试用例用例第一步:等价类划分第一步:等价类划分输入等价类输入等价类 有效等价类有效等价类 无效等价类无效等价类 报表日期的报表日期的类型及长度类型及长度6 6位数字字符位数字字符(1)(1)有非数字字符有非数字字符 (4)(4)少于少于6 6个数字字符个数字字符 (5)(5)多于多于6 6个数字字符个数字字符 (6)(6)年份范围年份范围在在2005200520092009之间之间 (2)(2)小于小于2005 (7)2005 (7)大于大于2009 (8)2009 (8)月份范围月份范围在在1 11212之间之间(3)(3)“报表日期报表日期”输入条件的等价类表输入条件的等
14、价类表小于小于1 (9)1 (9)大于大于12 (10)12 (10)第二步:为有效等价类设计测试用例对表中编号为第二步:为有效等价类设计测试用例对表中编号为1 1,2 2,3 3的的3 3个有效等价类用一个测试用例覆盖:个有效等价类用一个测试用例覆盖: 测试数据 期望结果 覆盖范围200705200705等价类等价类(1)(2)(3)(1)(2)(3)输入有效输入有效第三步:为每一个无效等价类设至少设计一个测试用例第三步:为每一个无效等价类设至少设计一个测试用例 不能出现相同不能出现相同的测试用例的测试用例 测试数据测试数据 期望结果期望结果 覆盖范围覆盖范围001001MAYMAY等价类等
15、价类(4)(4)输入无效输入无效2006520065等价类等价类(5)(5)输入无效输入无效20070052007005等价类等价类(6)(6)输入无效输入无效200420040505等价类等价类(7)(7)输入无效输入无效201020100505等价类等价类(8)(8)输入无效输入无效200820080000等价类等价类(9)(9)输入无效输入无效200620061313等价类等价类(10)(10)输入无效输入无效 本例的本例的1010个等价类至个等价类至少需要少需要8 8个测试用例个测试用例例3.在某网站申请免费信箱时,要求用户必须输入用户名、密码及确认密码,对每一项输入条件的要求如下:
16、用户名要求为4位以上,16位以下,使用英文字母、数字、“-”、“_”,并且首字符必须为字母或数字;密码要求为616位之间,只能使用英文字母、数字以及“-”、“_”,并且区分大小写。分析如下:分析程序的规格说明,列出等价类表(包括有效等价类和无效等价类),如表4-5所示。输入条件有效等价类编号无效等价类编号用户名416位1少于4位8多于16位9首字符为字母2首字符为除字母、数字之外的其他字符10首字符为数字3英文字母、数字、“-”、“_”组合4组合中含有除英文字母、数字、“-”、“_”之外的其他特殊字符11密码616位5少于6位12多于16位13英文字母、数字、“-”、“_”组合6组合中含有除英
17、文字母、数字、“-”、“_”之外的其他特殊字符14确认密码内容同密码相同7内容同密码相同,但字母大小写不同15表4-5 等价类表根据上述等价类表,设计测试用例如表4-6所示。测试用例用户名密码确认密码预期输出TC1abc_2000abc_123abc_123注册成功TC22000-abc123-abc123-abc注册成功TC3abc1234567812345678提示用户名错误TC4abcdefghijk1234561234567812345678提示用户名错误TC5_abc1231234567812345678提示用户名错误TC6abc&1231234567812345678提示用
18、户名错误TC7abc_1231234512345提示密码错误TC8abc_123abcdefghijk123456abcdefghijk123456提示密码错误TC9abc_123abc&123abc&123提示密码错误TC10abc_123abc_123Abc_123提示密码错误表4-6 测试用例例4. 保险公司计算保费费率的程序 某保险公司的人寿保险的保费计算方式为: 投保额保险费率 其中,保险费率依点数不同而有别,10点及10点以上保险费率为0.6%,10点以下保险费率为0.1%;而点数又是由 投保人的年龄、性别、婚姻状况和抚养人数来决定,具体规则如下:(1)分析程序规格
19、说明中给出和隐含的对输入条件的要求,列出等价类表(包括有效等价类和无效等价类)。年龄:一位或两位非零整数,值的有效范围为199性别:一位英文字符,只能取值M或F婚姻:字符,只能取值已婚或未婚抚养人数:空白或一位非零整数(19)点数 :一位或两位非零整数,值的范围为199(2)根据(1)中的等价类表,设计能覆盖所有等价类的 测试用例。输入条件输入条件有效等价类有效等价类编号编号无效等价类无效等价类编号编号年龄年龄2039岁岁14059岁岁2119岁岁6099岁岁3小于小于112大于大于9913性别性别单个英文字符单个英文字符4非英文字符非英文字符14非单个英文字符非单个英文字符15M5除除M和和
20、F之外的之外的其它单个字符其它单个字符16F6婚姻婚姻已婚已婚7除除已婚已婚和和未婚未婚之外的其它字符之外的其它字符17未婚未婚8抚养人数抚养人数空白空白9除空白和数字之外除空白和数字之外的其它字符的其它字符1816人人10小于小于11969人人11大于大于920测试用例测试用例编号编号输入数据输入数据预期输出预期输出年龄年龄性别性别婚姻婚姻抚养人数抚养人数保险费率保险费率127F未婚未婚空白空白0.6%250M已婚已婚20.6%370F已婚已婚70.1%40M未婚未婚空白空白无法推算无法推算5100F已婚已婚3无法推算无法推算699男男已婚已婚4无法推算无法推算71Child未婚未婚空白空白
21、无法推算无法推算845N已婚已婚5无法推算无法推算938F离婚离婚1无法推算无法推算1062M已婚已婚没有没有无法推算无法推算1118F未婚未婚0无法推算无法推算1240M未婚未婚10无法推算无法推算2. 2. 边界值分析法(边界值分析法(Boundary Value AnalysisBoundary Value Analysis)软件边界与悬崖很类似软件边界与悬崖很类似测试内点测试内点测试外点测试外点被测试被测试子域子域v边界值分析法与等价类划分法区别边界值分析法与等价类划分法区别(1)(1)边界值分析不是从某等价类中随便挑一个作为边界值分析不是从某等价类中随便挑一个作为代表,而是使这个等价
22、类的每个边界都要作为代表,而是使这个等价类的每个边界都要作为测试条件。测试条件。(2)(2)边界值分析不仅考虑输入条件,还要考虑输出边界值分析不仅考虑输入条件,还要考虑输出空间产生的测试情况(空间产生的测试情况(NextDateNextDate函数用例)。函数用例)。 采用边界值分析法来选择测试用例,可使采用边界值分析法来选择测试用例,可使 得被测程序能在得被测程序能在边界值及其附近边界值及其附近运行,从而更运行,从而更 有效地暴露出程序中潜藏的错误。有效地暴露出程序中潜藏的错误。边界值分析法边界值分析法 边界值分析法边界值分析法1: Rem Creat a 10 element intege
23、r array2: Rem Initialize each element to -13: Dim data(10) As Integer4: Dim i As Integer5: For i=1 To 106: data(i)= -17: Next I8: End演示边界条件缺陷的简单演示边界条件缺陷的简单BASIC程序程序 边界值设计原则边界值设计原则(1 1)如果输入条件规定了值的)如果输入条件规定了值的范围范围,则应取刚达到这个范,则应取刚达到这个范围的边界的值,以及刚刚超越这个范围边界的值作为测试围的边界的值,以及刚刚超越这个范围边界的值作为测试输入数据。输入数据。 例如,例如,如果
24、程序的规格说明中规定:如果程序的规格说明中规定:“重量在重量在1010公斤至公斤至5050公斤范围内的邮件,其邮费计算公式为公斤范围内的邮件,其邮费计算公式为 ”。作为测。作为测试用例,我们应取试用例,我们应取1010及及5050,还应取,还应取10.01,49.99,9.9910.01,49.99,9.99及及50.0150.01等。等。 (2 2)如果输入条件规定了值的)如果输入条件规定了值的个数个数,则用最大个数、最,则用最大个数、最小个数、比最小个数少一、比最大个数多一的数作为测试数小个数、比最小个数少一、比最大个数多一的数作为测试数据。据。 例如,例如,一个输入文件应包括一个输入文件
25、应包括1-2551-255个记录,则测试用例可个记录,则测试用例可取取1 1和和255255,还应取,还应取0 0及及256256等。等。 3.3.将规则将规则1 1和和2 2应用于应用于输出条件输出条件,即设计测试用例使输,即设计测试用例使输出值达到边界值及其左右的值。出值达到边界值及其左右的值。 例如,例如,一程序属于情报检索系统,要求每次一程序属于情报检索系统,要求每次”最少最少显示显示1 1条、最多显示条、最多显示4 4条情报摘要条情报摘要”,这时我们应考虑的,这时我们应考虑的测试用例包括测试用例包括1 1和和4 4,还应包括,还应包括0 0和和5 5等。等。 再如,再如,一个学生成绩
26、管理系统规定,只能查询一个学生成绩管理系统规定,只能查询95-9895-98级大学生的各科成绩,可以设计测试用例,使得查询范级大学生的各科成绩,可以设计测试用例,使得查询范围内的某一届或四届学生的学生成绩,还需设计查询围内的某一届或四届学生的学生成绩,还需设计查询9494级、级、9999级学生成绩的测试用例(不合理输出等价类)。级学生成绩的测试用例(不合理输出等价类)。l由于输出值的边界不与输入值的边界相对应,所以要检查输出值由于输出值的边界不与输入值的边界相对应,所以要检查输出值的边界不一定可能,要产生超出输出值之外的结果也不一定能做的边界不一定可能,要产生超出输出值之外的结果也不一定能做到
27、,但必要时还需试一试。到,但必要时还需试一试。(4 4)如果程序的规格说明给出的输入域或输出域是)如果程序的规格说明给出的输入域或输出域是有序有序集合集合(如顺序文件、线性表等),则应选取集合的第一(如顺序文件、线性表等),则应选取集合的第一个元素和最后一个元素作为测试用例。个元素和最后一个元素作为测试用例。 (5 5)如果程序中使用了一个内部数据结构,则应当选择)如果程序中使用了一个内部数据结构,则应当选择这个内部数据结构的边界上的值作为测试用例。这个内部数据结构的边界上的值作为测试用例。 例如,例如,如果程序中定义了一个数组,其元素下标的下如果程序中定义了一个数组,其元素下标的下界是界是0
28、 0,上界是,上界是100100,那么应选择达到这个数组下标边界,那么应选择达到这个数组下标边界的值,如的值,如0 0与与100100,作为测试用例。,作为测试用例。(6 6)分析规格说明,找出其他可能的边界条件。)分析规格说明,找出其他可能的边界条件。 程序中判断输入日期(年月)是否有效,假设使用如下语句:程序中判断输入日期(年月)是否有效,假设使用如下语句: IFIF(ReportDateReportDate=MinDateMinDate) THEN THEN 产生指定日期报表产生指定日期报表 ELSE ELSE 显示错误信息显示错误信息ENDIFENDIF如果将程序中的如果将程序中的“=
29、”误写为误写为“ ”,则上例的等价类划分中所,则上例的等价类划分中所有测试用例都不能发现这一错误,采用边界值分析法的测试用有测试用例都不能发现这一错误,采用边界值分析法的测试用例如下表所示。例如下表所示。 n对上述报表处理系统中的报表日期输入条件,以下对上述报表处理系统中的报表日期输入条件,以下用边界值分析设计测试用例。用边界值分析设计测试用例。输入输入条件条件报表日报表日期的类期的类型及长型及长度度1 1个数字字符个数字字符5 5个数字字符个数字字符7 7个数字字符个数字字符有有1 1个非数字字符个非数字字符全部是非数字字符全部是非数字字符6 6个数字字符个数字字符显示出错显示出错显示出错显
30、示出错显示出错显示出错显示出错显示出错显示出错显示出错输入有效输入有效日期日期范围范围月份月份范围范围“报表日期报表日期”边界值分析法测试用例边界值分析法测试用例测试用例说明测试用例说明测试数据测试数据期望结果期望结果选取理由选取理由5 52006520065200700520070052008.52008.5MAY-MAY-200605200605月份为月份为1 1月月月份为月份为1212月月月份月份1121220050120050120051220051220050020050020051320051320050120050120091220091220050020050020091320
31、0913输入有效输入有效输入有效输入有效显示出错显示出错显示出错显示出错输入有效输入有效输入有效输入有效显示出错显示出错显示出错显示出错在有效范围在有效范围边界上选取边界上选取数据数据仅有仅有1 1个合法字符个合法字符比有效长度少比有效长度少1 1比有效长度多比有效长度多1 1只有只有1 1个非法字符个非法字符6 6个非法字符个非法字符类型及长度均有效类型及长度均有效最小日期最小日期最大日期最大日期刚好小于最小日期刚好小于最小日期刚好大于最大日期刚好大于最大日期最小月份最小月份最大月份最大月份刚好小于最小月份刚好小于最小月份刚好大于最大月份刚好大于最大月份 边界值分析法与等价类划分法比较边界值
32、分析法与等价类划分法比较 (1)(1)等价分类法的测试数据是在各个等价类允许的值域内任意等价分类法的测试数据是在各个等价类允许的值域内任意选取的,而边界值分析的测试数据必须在边界值附近选取。选取的,而边界值分析的测试数据必须在边界值附近选取。 (2)(2)一般地说,用边界值分析法设计的测试用例比等价分类法一般地说,用边界值分析法设计的测试用例比等价分类法的代表性更广,发现错误的能力也更强。但是对边界的分析的代表性更广,发现错误的能力也更强。但是对边界的分析与确定比较复杂,要求测试人员具有更多的经验和创造性。与确定比较复杂,要求测试人员具有更多的经验和创造性。 (3)(3)还需指出,有些包含的边
33、界情况比较简单,只需要分析输还需指出,有些包含的边界情况比较简单,只需要分析输入等价类。在有些情况下,除了考察输入值边界外,还需要入等价类。在有些情况下,除了考察输入值边界外,还需要考察考察输出值输出值和其他可能存在的边界。和其他可能存在的边界。例:假定被测程序是一个计算例:假定被测程序是一个计算x x的正弦值的正弦值sinsin(x x), ,其输出其输出具有具有3 3个边界值个边界值-1-1、0 0、1 1。在选择测试用例时,应使。在选择测试用例时,应使x x的的值分别产生上述的值分别产生上述的3 3种输出种输出边界值,即选取边界值,即选取-/2-/2、0 0、/2/2作为作为x x的测试
34、数据。的测试数据。 3. 3.错误猜测法错误猜测法 所谓猜测,就是猜测被测程序在哪些地方容易所谓猜测,就是猜测被测程序在哪些地方容易 出错,然后针对可能的薄弱环节来设计测试用例。出错,然后针对可能的薄弱环节来设计测试用例。 显然它比前两种方法更多地依靠测试人员的直觉与显然它比前两种方法更多地依靠测试人员的直觉与 经验。所以一般都先用前两方法设计测试用例,然经验。所以一般都先用前两方法设计测试用例,然后再用猜测法去补充一些例子作为辅助的手段。后再用猜测法去补充一些例子作为辅助的手段。错误猜测法错误猜测法错误推测法的基本思想基本思想是:列举出程序中所有可能有的错误和容易发生错误的特殊情况,根据它们
35、选择测试用例。显然,它比前两种方法更多地依靠测试人员的直觉和经验。所以,一般都先用前两种方法设计测试用例,然后用猜错法补充一些例子作为辅助手段。根据经验来设计测试用例的方法:根据经验来设计测试用例的方法:l 例如,数据测试中的:例如,数据测试中的: 缺省值缺省值 空白空白 空值空值 零值零值 无无l 又如输入、输出数据为零是容易发生错误的情况;再如, 输入表格为空或输入表格只有一行是容易出错的情况等。例如对于一个排序程序,列出以下几项需特别测试的情况: (1)输入表为空。(2)输入表只含一个元素。(3)输入表中所有元素均相同。 (4)输入表中已排好序。l 仍以上述的报表日期为例,在已经用等价分
36、类法和边界值分析发设计过测试用例的基础上,还可用错误猜测法补充一些测试用例,例如:4. 决策表法决策表法 4.1决策表法决策表法决策表通常由四个部分组成,如图4-1所示。条件桩条件桩:列出了问题的所有条件,通常认为列出的条件的先后次序无关紧要。动作桩:动作桩:列出了问题规定的可能采取的操作,这些操作的排列顺序没有约束。条件项:条件项:针对条件桩给出的条件列出所有可能的取值。动作项:动作项:与条件项紧密相关,列出在条件项的各组取值情况下应该采取的动作。规则:规则:一种条件取值组合和与其对应的动作组合(即判定表中贯穿条件项和动作项的一列)构成了判定表中的一个规则。条件取值组合的数目就是规则的数目。
37、图4-1 决策表的组成建建立立决策决策表表的步骤:的步骤: 列出条件桩和动作桩。 确定规则的个数,用来为规则编号。若有n个原因,由于每个原因可取0或1,故有2的n次方个规则。 完成所有条件项的填写。 完成所有动作项的填写。 合并相似规则,用以对初始决策表进行简化(见书P56)。 建立了决策表后,可针对决策表中的每一列有效规则设计一个测试用例,用以对程序进行黑盒测试。决策表最突出的优点:决策表最突出的优点:能够将复杂的问题按照各种可能的情况全部列举出来,简明并避免遗漏。因此,利用决策表能够设计出完整的测试用例集合。运用决策表设计测试用例,可以将条件理解为输入,将动作理解为输出。4.2 实例分析实
38、例分析 举例:以下列问题为例给出构造决策表的具体过程。举例:以下列问题为例给出构造决策表的具体过程。 如果某产品销售好并且库存低,则增加该产品的生产;如果该产品销售好,但库存量不低,则继续生产;若该产品销售不好,但库存量低,则继续生产;若该产品销售不好,且库存量不低,则停止生产。 规则选项1234条件:C1:销售好?C2:库存低?TTTFFTFF动作:a1:增加生产a2:继续生产a3:停止生产表4-2 决策表解法如下:解法如下:l确定规则的个数。对于本题有2个条件(销售、库存),每 个条件可以有两个取值,故有22=4种规则。l列出所有的条件桩和动作桩。l填入条件项。l填入动作项,得到初始决策表
39、,如表4-2所示。 5. 5.因果图法因果图法 因果图法是借助因果图法是借助图形图形来设计测试用例的一种系来设计测试用例的一种系 统方法。它适用于被测程序具有多种输入条件,统方法。它适用于被测程序具有多种输入条件, 程序的输出又依赖于输入条件的各种组合的情况。程序的输出又依赖于输入条件的各种组合的情况。 因果图是一种简化了的因果图是一种简化了的逻辑图逻辑图,它能直观地,它能直观地 表明程序输入条件(原因)和输出动作(结果)表明程序输入条件(原因)和输出动作(结果) 之间的相互关系。之间的相互关系。5.1 5.1 因果图法因果图法在等价类划分方法和边界值方法中未考虑输入条件的各在等价类划分方法和
40、边界值方法中未考虑输入条件的各种组合,当输入条件比较多时,输入条件组合的数目会种组合,当输入条件比较多时,输入条件组合的数目会相当大。相当大。因果图法是一种帮助人们系统地选择一组高效测试用例因果图法是一种帮助人们系统地选择一组高效测试用例的方法,它既考虑了输入条件的组合关系,又考虑了输的方法,它既考虑了输入条件的组合关系,又考虑了输出条件对输入条件的依赖关系,即因果关系,其测试用出条件对输入条件的依赖关系,即因果关系,其测试用例发现错误的效率比较高。例发现错误的效率比较高。因果图方法的因果图方法的特点特点是:是:考虑输入条件的组合关系;考虑输入条件的组合关系;考虑输出条件对输入条件的依赖关系,
41、即因果关系;考虑输出条件对输入条件的依赖关系,即因果关系;测试用例发现错误的效率高;测试用例发现错误的效率高;能检查出功能说明中的某些不一致或遗漏。能检查出功能说明中的某些不一致或遗漏。 在因果图中使用4种符号分别表示4种因果关系,如图5-1所示。用直线连接左右节点,其中左节点ci表示输入状态(或称原因),右节点ei表示输出状态(或称结果)。ci和ei都可取值0或1,0表示某状态不出现,1表示某状态出现。 (a)恒等 (b)非 (c)或 (d)与图5-1 因果图的基本符号 图中左边的结点表示原因,右边的结点表示结果图中左边的结点表示原因,右边的结点表示结果原因和结果之间的关系有:原因和结果之间
42、的关系有:恒等:若恒等:若c1=1,则,则e1=1;若;若c1=0,则,则e1=0非:若非:若c1=1,则,则e1=0;若;若c1=0,则,则e1=1或:若或:若c1=1或或c2=1 或或c3=1 ,则,则e1=1;否则;否则e1=0与:若与:若c1=c2=c3=1 ,则,则e1=1;否则;否则e1=0画因果图时原因在左,结果在右,由上向下排列,并根据功能画因果图时原因在左,结果在右,由上向下排列,并根据功能说明中规定的原因和结果之间的关系,用上述符号连接起来。说明中规定的原因和结果之间的关系,用上述符号连接起来。必要时还可以引入一些必要时还可以引入一些中间结点中间结点。图5-2 约束符号图中
43、图中互斥、包含、唯一、要求互斥、包含、唯一、要求是对是对原因原因的约束,的约束,屏蔽屏蔽是对是对结果结果的约束的约束互斥:表示互斥:表示a、b、c中至多只有一个为中至多只有一个为1,即不同时为,即不同时为1包含:表示包含:表示a、b、c中至少有一个为中至少有一个为1,即不同时为,即不同时为0唯一:表示唯一:表示a、b、c中有且仅有一个中有且仅有一个1要求:表示若要求:表示若a=1 ,则要求,则要求b必须为必须为1,即不可出现,即不可出现a=1 且且b=0屏蔽(强制):表示若屏蔽(强制):表示若a=1 ,则,则b必须为必须为0,即不可出现,即不可出现a=1 且且b=1利用因果图产生测试用例的基本
44、步骤利用因果图产生测试用例的基本步骤(1)(1) 分析软件规格说明描述中,分析软件规格说明描述中,哪些是原因哪些是原因( (即即输入条件或输入条件的等价类输入条件或输入条件的等价类) ),哪些是结哪些是结果果( (即输出条件即输出条件) ),并给每个原因和结果赋予,并给每个原因和结果赋予一个标识符。一个标识符。(2)(2) 分析软件规格说明描述中的语义,找出分析软件规格说明描述中的语义,找出原因原因与结果与结果之间,之间,原因与原因原因与原因之间对应的是什么之间对应的是什么 关系关系? ? 根据这些关系,画出因果图。根据这些关系,画出因果图。 (3) (3) 由于语法或环境限制,有些原因与原因
45、之由于语法或环境限制,有些原因与原因之 间,原因与结果之间的组合情况不可能出间,原因与结果之间的组合情况不可能出 现。为表明这些特殊情况,在因果图上用现。为表明这些特殊情况,在因果图上用 一些记号一些记号标明约束或限制条件标明约束或限制条件。(4)(4) 把因果图转换成决策表。把因果图转换成决策表。(5)(5) 把决策表的每一列拿出来作为依据,设计把决策表的每一列拿出来作为依据,设计测试用例。测试用例。 从因果图生成的测试用例中包括了所有输入数据的取从因果图生成的测试用例中包括了所有输入数据的取TRUETRUE与与FALSEFALSE情况,构成的测试用例数目达到最少,且测试情况,构成的测试用例
46、数目达到最少,且测试用例数目随输入数据数目的增加而线性地增加。用例数目随输入数据数目的增加而线性地增加。图5-3 因果图法示例5.2因果图法测试用例因果图法测试用例 某软件规格说明中包含这样的要求:输入的第一个字符必须是A或B,第二个字符必须是一个数字,在此情况下进行文件的修改;但如果第一个字符不正确,则给出信息L;如果第二个字符不是数字,则给出信息M。 解法如下:解法如下:(1)分析程序的规格说明,列出原因和结果。原因:C1-第一个字符是A C2-第一个字符是B C3-第二个字符是一个数字结果:e1-给出信息Le2-修改文件e3-给出信息M(2)将原因和结果之间的因果关系用逻辑符号连接起来,
47、得到因果图,如图5-4所示。编号为11的中间节点是导出结果的进一步原因。图5-4 因果图示例图5-5 具有E约束的因果图 因为C1和C2不可能同时为1,即第一个字符不可能既是A又是B,在因果图上可对其施加E约束,得到具有约束的因果图,如图5-5所示。(3)将因果图转换成决策表,如表5-1所示。(4)设计测试用例。表5-1中的前两种情况,因为原因1和原因2不可能同时为1,所以应排除这两种情况。根据此表,可以设计出6个测试用例,如表5-2所示。 规则规则选项选项12345678条件条件C111110000C211001100C31010101011111100动作动作e1000011e210100
48、0e3010101不可能不可能11测试用例测试用例A5A#B9B?X2Y%表5-1 决策表 表5-2 测试用例 编号输入数据预期输出TC1A5修改文件TC 2A#给出信息MTC 3B9修改文件TC 4B?给出信息MTC 5X2给出信息LTC 6Y%给出信息L和信息M 例例2 2 :某电力公司有:某电力公司有A A、B B、C C、D D四类收费标准四类收费标准, ,并规定:并规定: 居民用电居民用电 100100度度/ /月月 按按A A类收费类收费 100100度度/ /月月 按按B B类收费类收费 动力用电动力用电 1000010000度度/ /月,非高峰,月,非高峰,B B类收费类收费
49、1000010000度度/ /月,非高峰,月,非高峰,C C类收费类收费 1000010000度度/ /月,月, 高峰,高峰,C C类收费类收费 1000010000度度/ /月,月, 高峰,高峰,D D类收费类收费 输入条件(原因)输入条件(原因) 输出动作(后果)输出动作(后果)c1居民用电居民用电 e1 按按A类收费类收费c2动力用电动力用电 e2 按按B类收费类收费c3 100度度/月月 e3 按按C类收费类收费c410000度度/月月 e4 按按D类收费类收费c5高峰用电高峰用电 设计测试用例的步骤设计测试用例的步骤:1. 列举所有存在的输入条件和输出结果。列举所有存在的输入条件和输
50、出结果。2. 根据输入条件和输出条件生成决策表。根据输入条件和输出条件生成决策表。把因果图转换为决策表把因果图转换为决策表组合条件组合条件条件条件( (原因原因) ) 动作动作( (结果结果) )e1e1e2e2e3e3c1c1c2c2c3c31 12 23 34 45 56 61 1- -1 11 1- -0 0- -1 11 1- - - -1 11 10 00 00 00 01 10 00 00 00 01 11 10 0c4c41 10 01 10 0c5c50 00 01 11 1e4e40 00 00 01 11 10 00 01 10 00 00 00 0测试用例测试用例-1 1列列 居民电居民电,90,90度度/ /月月 A A2 2列列 居民电居民电,110,110度度/ /月月 B B3 3列列 动力电动力电, ,非高峰非高峰,8000,8000度度/ /月月 B B4 4列列 动力电动力电, ,非高峰非高峰,1.2,1.2万度万度/ /月月 C C5 5列列 动力电动力电, , 高峰高峰,0.9,0.9万度万度/ /月月 C
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年校园旗杆更换安装合同
- 老年CRRT患者的护理难点与应对措施
- 仙桃职业学院《英语听说(2)》2024-2025学年第一学期期末试卷
- 四川省乐山十校高2026届高一上物理期末复习检测模拟试题含解析
- 社区康复护理常见问题与解决策略
- 肾前性尿毒症的护理
- Unit 2 Festivals and holidays单词讲解和练习(解析版)
- 2026中考英语语法复习分类训练:一般过去时100题(中考试题+中考模拟)原卷版
- 细微之处见真情:护理操作中的温暖细节
- 2026年高考数学一轮复习:幂函数与二次函数(讲义)原卷版
- 国企的笔试题库及答案
- DB23-T 727-2025 用水定额用水定额
- 2025年汽车维修:丽驰
- 小学古诗复习课件
- 社区糖尿病健康教育
- 隐私协议书模板
- 【MOOC】美术鉴赏-河南理工大学 中国大学慕课MOOC答案
- 全国中学生英语能力竞赛(NEPCS)高一组决赛(含答案和听力)
- 合同履行情况(自查)检查记录表
- 人教版高中英语全部单词表(常用)
- 《现代汉语修辞》PPT课件(完整版)
评论
0/150
提交评论