




版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、第2章 基于需求的测试生成 讲解人:林青霞讲解人:林青霞引言引言 设计测试输入和相应的预期输出(即设计测试用例),是任何设计测试输入和相应的预期输出(即设计测试用例),是任何测试机构最基本的技术活动之一。常用的测试设计策略有:基测试机构最基本的技术活动之一。常用的测试设计策略有:基于于需求需求的测试生成,基于的测试生成,基于模型模型的测试生成和基于的测试生成和基于代码代码的测试生的测试生成等成等。 软件需求是设计测试的软件需求是设计测试的基本出发点基本出发点,需求规范可以是非正式的,需求规范可以是非正式的规范、严格的规范或形式化的规范,也可以是这三种规范的混规范、严格的规范或形式化的规范,也可
2、以是这三种规范的混合体。需求规范的形式化程度越高,则越有机会进行自动化测合体。需求规范的形式化程度越高,则越有机会进行自动化测试。试。 软件输入域是测试设计的依据,可从非正式的和严格的需求规软件输入域是测试设计的依据,可从非正式的和严格的需求规范中提取出来。范中提取出来。2.2 2.2 测试用例选择问题测试用例选择问题 关键关键:如何构造测试用例集合,使得该集合能够尽可能多地发现软件中存在的缺陷。 软件输入域:软件输入域:指软件在执行过程中可能接收的全部合法输入的集合。 穷举测试:穷举测试:指测试人员逐个地使用输入域中的所有元素对软件实施测试。 例:例:1.y=x+3 xZ,x1,12 2.y
3、=x+3 x1,12基于需求的测试用例选择方法基于需求的测试用例选择方法等价类划分等价类划分边界值分析边界值分析类别划分法类别划分法因果因果图分析图分析基于谓词的测试生成基于谓词的测试生成2.3 2.3 等价类划分等价类划分 对输入范围进行划分,把所有可能的输入数据,即程序输入域划分为若干个互不相交的子集,称为等价类,然后从每个等价类中选取少数具有代表性的数据作为测试用例。 一个软件的全部输入的集合至少分成两个子集:一个包含所有正常和合法的输入(E);另一个包含所有异常和非法输入(U)。这两个集合可进一步划分为若干子集。 概括: (1)交集为空 (2)并集为全集 (3)分为有效等价类和无效等价
4、类2.3.2 2.3.2 关系与等价类的划分关系与等价类的划分 关系:关系:一个n元组的集合。 例:方法addList计算并返回一个整数列表之和,其对应的关系可定义为:addList:LZ 其中,L是包含所有整数列表的集合,Z是整数集。 在划分输入域时,常常采用下面的关系:R:II, 其中,I为输入域,R为I上的关系,R定义了一个等价类,该等价类是I的子集。 例例2.3 方法gprice以食品名称作为输入,查询商品价格数据库并返回相应食品的单价(等价类pF);若无该食品,则返回错误信息(等价类pNF)。pF和pNF都是gprice输入域I的子集,同时,二者形成了对输入域I的一个划分,有pFUp
5、NF=I和pFpNF=。2.3.2 2.3.2 关系与等价类的划分关系与等价类的划分 例例2.3 方法gprice以食品名称作为输入,查询商品价格数据库并返回相应食品的单价(等价类pF);若无该食品,则返回错误信息(等价类pNF)。pF和pNF都是gprice输入域I的子集,同时,二者形成了对输入域I的一个划分,有pFUpNF=I和pFpNF=。商品单价milk2.99tomato0.99cola3.992.3.3 2.3.3 变量的等价类变量的等价类类别类别等价类等价类示例示例约束约束等价类代表等价类代表取值范围取值范围(range)一个取值范围内的等价类;两个取值范围外的等价类speed6
6、0,90)age:int;0age12050,75,100 -10,75,130字符串字符串(string)合法字符串的类和非法字符串的类fname:string;,Sue,Sue2,Too Long a name枚举枚举(enumeration)每个取值对应一个等价类auto_colorred,blue,greenup:boolenred,blue,greentrue,false数组数组(array)合法数组等价类,空数组等价类和大于期望长度数组的等价类Java array:int aName=new int 3 ,-10,20,-9,0,12,15复合数据类型复合数据类型(compound
7、 data type):包含两个或两个以上相互独立的属性的输入数据2.3.4 2.3.4 一一元划分和多元划分元划分和多元划分 一元化分:一元化分:每次只考虑一个输入变量,每个输入变量形成对输入域的一个划分。 多元化分:多元化分:将所有输入变量的笛卡尔积视为程序的输入域I,并定义I上的关系R。 例 假设某软件的输入为整型数据x和y,其取值范围为3x7和5y9。采用一元化分,可产生6个等价类: E1:x7 E4:y9 若将x和y的笛卡尔积视为软件的输入域,可产生9个等价类: E1:x3,y5 E2:x3,5y9 E3:x9 E4:3x7,y9 E7:x7,y7,5y9 E9: x7,y9 采用多
8、元化分方法得到的测试用例,往往比采用一元化分方法得到的测试用例更能充分地测试被测软件,但其等价类数量会随输入变量个数的增加而成指数增长。2.3.5 2.3.5 等价类划分的完整过程等价类划分的完整过程 步骤步骤1 确定输入域确定输入域 认真分析需求并确定所有输入、输出变量,以及变量类型和变量使用条件。 步骤步骤2 等价类划分等价类划分 将每个变量的取值集合划分为互不相交的子集,则每个子集对应一个等价类,所有等价类构成了对输入域的一个划分。 步骤步骤3 组合等价类组合等价类 可采用多元化分方法,将等价类组合起来。(也可忽略该步骤:直接根据那些为单个变量定义的等价类选择测试用例,但可能无法获得高效
9、的测试用例。) 步骤步骤4 确定不可测的等价类确定不可测的等价类 有些输入数据组合在实际测试过程中是无法生成的,包含这种数据的等价类就是不可测等价类。2.3.6 2.3.6 等价类划分实例等价类划分实例例例 NextDateNextDate(Y Y,M M,D D),),Y1900,2100 M1,12 D1,31Y1900,2100 M1,12 D1,31(1)d+(1)d+(2)m+,d=1(2)m+,d=1(3)y+,m=1,d=1(3)y+,m=1,d=1有效等价类有效等价类y y: 平年平年 , 闰年闰年 m m:22,1212,1,3,5,7,8,101,3,5,7,8,10,4,
10、6,9,114,6,9,11d d:1,21,2,2727,2828,2929,3030,3131无效等价类无效等价类y y:yy1900 ,yy2100 , 小数小数 m m:mm1 ,mm12 , 小数小数 d d:dd1 ,dd31 , 小数小数 弱一般等价类测试弱一般等价类测试强一般等价类测试强一般等价类测试弱健壮等价类测试弱健壮等价类测试强健壮等价类测试强健壮等价类测试2.3.7 GUI2.3.7 GUI设计与等价类设计与等价类 GUI(Graphical User Interface,图形用户接口)是指采用图形方式显示的计算机操作用户界面。与早期计算机使用的命令行界面相比,图形界面
11、对于用户来说在视觉上更易于接受,操作更加简便。 精心的GUI设计能实现对输入域的限制,通常存在两种GUI:一种能够阻止所有的变量接受非法输入;另一种允许部分变量接受非法输入。设计测试用例时必须考虑GUI的具体实现,合理的GUI设计可以大大降低测试用例的数量。2.4 2.4 边界值分析边界值分析 边界值分析是一种有效的测试用例选择方法,可以发现位于等价类边界处的软件缺陷。通常在设计测试用例时,同时采用边界值分析和等价类划分两种方法。其生成测试用例的主要步骤如下: 步骤步骤1 使用一元划分方法划分输入域。 步骤步骤2 为每种划分确定边界,也可利用输入变量之间的特定关系确定边界。 步骤步骤3 设计测
12、试用例,确保每个边界值至少出现在一个测试输入数据中。 注意:注意:确定边界时需要仔细考虑个输入变量之间的关系,进而找出不明显的边界;使用单个变量等价类的笛卡尔积所构成的输入域划分,将获得更多的测试用例。(min-,min,min+,nom,max-,max,max+)2.5 2.5 类别划分法类别划分法 类别划分法是一种从软件需求生成测试用例的系统化方法,包含手工和自动完成的步骤。其步骤如下: 步骤步骤1 分析功能规范分析功能规范 确定所有能够独立测试的功能模块,对于大的软件系统而言,功能模块可能对应于可独立测试的各个子系统,而子系统又可以进一步分为可独立测试的子模块。 步骤步骤2 确定类别确
13、定类别 对各被测模块的功能规范进行分析,确定相应的输入、环境中的对象以及各个参数和环境对象的特征。2.5 2.5 类别划分法类别划分法 步骤步骤3 类别划分类别划分 根据每个类别中各不同情况,对功能模块进行测试 。 步骤步骤4 确定约束条件确定约束条件 对某功能模块的测试 ,包括对该模块各参数、环境对象所有选项的组合的测试。由于输入参数间必须满足某些约束条件,因此有一部分的选项组合是无法实现的。 步骤步骤5 编编(重重)写测试规范写测试规范 采用具有严格语法的测试规范语言编写测试规范。 步骤步骤6 处理测试规范处理测试规范 对测试生成的若干个测试框架进行分析,找出框架中以相同方式测试被测软件的
14、冗余内容。2.5 2.5 类别划分法类别划分法 步骤步骤7 评价生成器的输出评价生成器的输出 检查步骤6所生成的各测试框架中是否包含冗余用例以及是否缺少某些用例,进而转入步骤5。 步骤步骤8 生成测试脚本生成测试脚本 从测试框架产生的测试用例要被组合成测试脚本(即一组测试用例),通常将环境设置相同的测试用例编为一组,这样可以提高测试驱动器执行测试用例的效率。2.6 2.6 因果图分析因果图分析 等价类划分法和边界值分析方法都是着重考虑输入条件,如果程序输入之间没有什么联系,采用等价类划分和边界值分析是一种比较有效的方法。 但如果输入之间有关系,例如,约束关系、组合关系,这种关系用等价类划分和边
15、界值分析是很难描述的,测试效果难以保障。因此必须考虑使用一种,因果图正是在此背景下提出的。2.6 2.6 因果图分析因果图分析 因果图也称作依赖关系模型,主要用于描述软件输入条件(即“原因”)与软件输出条件(即“结果”)之间的依赖关系。“原因”是指软件需求中能影响软件输出的任意输入条件;“结果”是指软件对某些输入条件的组合所做出的响应。 利用因果图方法生成测试用例的一般过程为: 1)仔细研读软件需求规范,确定原因和结果,并赋予唯一的标识。 2)用因果图描述原因与结果之间的依赖关系。 3)将因果图转换为一个有限入口的判定表。 4)根据判定表生成测试用例。2.6.1 2.6.1 因果图中的基本符号
16、因果图中的基本符号 因果关系(实线 原因在左,结果在右)恒等 非或与2.6.1 2.6.1 因果图中的基本符号因果图中的基本符号 原因之间的约束关系(虚线)互斥E包含I唯一OR要求M屏蔽2.6.2 2.6.2 创建因果图创建因果图 创建因果图的两个步骤: 1.确定哪些是原因,哪些是结果,明确因果关系和约束关系。 2.构造因果图,表达提取到的依赖关系。 例:某个软件的规格说明中包含这样的要求: “第一列字符必须是A或B,第二列字符必须是一个数字,在此情况下进行文件的修改。但如果第一列字符不正确,则给出信息L;如果第二列字符不是数字,则给出信息M。2.6.2 2.6.2 因果图实例因果图实例 例:
17、某个软件的规格说明中包含这样的要求: “第一列字符必须是A或B,第二列字符必须是一个数字,在此情况下进行文件的修改。但如果第一列字符不正确,则给出信息L;如果第二列字符不是数字,则给出信息M。原因:原因: 1第一列字符是A; 2第一列字符是B; 3第二列字符是数字。结果:结果: 21修改文件; 22给出信息L; 23给出信息M。 1 1 2 2 1111 3 3 2323 2121 2222 E E2.6.3 2.6.3 从因果图生成判定表从因果图生成判定表 在所有的黑盒测试方法中,基于判定表的测试是最严格,最具有逻辑性的测试方法。 判定表判定表是把作为条件的所有输入的各种组合值以及对应输出值
18、都罗列出来而形成的表格。它能够将复杂的问题按照各种可能的情况全部列举出来,简明并避免遗漏。因此,利用判定表能够设计出完整的测利用判定表能够设计出完整的测试用例试用例集合。集合。2.6.3 2.6.3 从因果图生成判定表实例从因果图生成判定表实例 例:某个软件的规格说明中包含这样的要求: “第一列字符必须是A或B,第二列字符必须是 一个数字,在此情况下进行文件的修改。但如果第一列字符不正确,则给出信息L;如果第二列字符不是数字,则给出信息M。桩123456781TTTTFFFF2TTFFTTFF3TFTFTFTF21-xx22-xx23-xxx2.6.3.1 2.6.3.1 判定表组成判定表组成
19、判定表通常由4个部分组成: 条件条件桩:桩:列出了问题的所有条件。通常认为列出的条件的次序无关紧要。 动作动作桩:桩:列出了问题规定可能采取的操作。这些操作的排列顺序,没有约束。 条件条件项:项:列出针对它左列条件的取值,在所有可能情况下的真假值。 动作动作项:项:列出在条件项的各种取值情况下应该采取的动作。 规则规则:任何一个条件组合的特定取值及相应要执行的操作。在判定表中贯穿条件项和动作项的一列就是一条规则。2.6.3.2 2.6.3.2 判定表的生成步骤判定表的生成步骤 (1)确定规则的个数。有n个条件的决策表有2n个规则(每个条件取真、假值)。 (2)列出所有的条件桩和动作桩。 (3)
20、填入条件项。 (4)填入动作项,得到初始判定表。 (5)简化判定表,合并相似规则。若表中有两条以上规则具有相同的动作,并且在条件项之间存在极为相似的关系,便可以合并。合并后的条件项用符号“-”表示,说明执行的动作与该条件的取值无关,称为无关条件。桩123456781TTTTFFFF2TTFFTTFF3TFTFTFTF21-xx22-xx23-xxx桩12345671TTTFFFF2TFFTTFF3-TFTFTF21-xx22-xx23-xxx2.7 2.7 基于谓词的测试生成基于谓词的测试生成 规则可以形式化地表示为谓词。例如,考虑软件需求“若打印机处于ON状态且具备打印纸,则发送要打印的文件
21、”。这句话包含一个条件和一个动作。下面的谓词,记为pr,表示这句话的条件部分: 谓词pr包含两个由布尔运算符“”连接的关系表达式。两个关系表达式都使用了等于符号(=)。编程人员可能正确地为pr编码,也可能没有正确编码,导致程序中存在缺陷。我们的目标是,根据谓词产生测试用例,从而可以确保在测试中发现某种类型的所有缺陷。这种用于验证谓词实现是否正确的测试称之为谓词测试。2.7.1 2.7.1 谓词与布尔表达式谓词与布尔表达式 设relop表示集合,=,中的一个关系运算符。设bop表示集合,中的一个布尔运算符,其中,是二元布尔运算符,是一元布尔运算符。布尔变量的取值集合为true,false,对于给
22、定的布尔变量a,a和a都表示a的补。 关系表达式是指形如e1 relop e2的表达式,其中e1和e2取值为有限或无限集合S。可将S中的元素进行排序,从而可以使用任意关系运算符对e2和e1进行比较。 一个条件可以表示成简单谓词或复合谓词。简单谓词简单谓词就是一个布尔变量或关系表达式,其中变量可以取非。复合谓词复合谓词可以是一简单谓词,或是由若干简单谓词或其补通过二元布尔运算符连接起来的一个表达式。谓词当中的圆括号表示布尔变量、关系表达式组合。2.7.1 2.7.1 谓词与布尔表达式谓词与布尔表达式2.7.1 2.7.1 谓词与布尔表达式谓词与布尔表达式 布尔表达式可以表示为抽象语法树抽象语法树
23、,如图2-17所示。将谓词pr的抽象语法树记为AST(pr)。AST(pr)的每个叶结点代表一个布尔变量或一个关系表达式;AST(pr)的内部结点是布尔运算符,比如、,分别被称作AND结点、OR结点、XOR结点、NOT结点。2.7.2 2.7.2 谓词测试中的故障模型谓词测试中的故障模型 本章论述的谓词测试,重点关注三类故障:布尔运算符故障布尔运算符故障、关系关系运算符故障运算符故障、算术表达式故障算术表达式故障。引起布尔运算符故障的原因在于: 1)使用了错误的布尔运算符; 2)漏用或误用非运算符; 3)圆括号使用错误; 4)布尔变量使用错误。 当错误地使用关系运算符时将导致关系运算符故障。当
24、算术表达式的结果值产生数量为的偏差时(off-by-)就会出现算术表达式故障。 给定谓词pr和测试用例t,用缩写p(t)表示谓词pr针对t所取的真值。例如,若pr为as且t为a=1,b=2,r=0,s=4,则p(t)=false。下面举例说明上述的各种故障。2.7.2 2.7.2 谓词测试中的故障模型谓词测试中的故障模型 布尔运算符故障设软件需求规范要求当(ad)e为真时软件执行某动作。其中,a、b、c、d为整型变量,e为布尔变量。下面列出4个错误编码,分别包含不同的布尔运算符故障:(ad)e 布尔运算符错误(ad)e 非运算符错误(ad)e 布尔运算符错误(ad)f 布尔变量错误(使用了f,
25、而不是e) 关系运算符故障关系运算符故障示例如下:(a=b)(cd)e 关系运算符错误(使用了=,而不是d)e 关系运算符错误与布尔运算符错误2.7.2 2.7.2 谓词测试中的故障模型谓词测试中的故障模型 算术表达式故障考虑三种算术表达式的off-by-故障,分别为:off-by-、off-by-*、off-by-+。 考虑正确关系表达式Ec,其形式为e1 relop1 e2;考虑错误的关系表达式Ei,其形式e3 relop2 e4;假设算术表达式e1、e2、e3、e4包含相同的变量集合。三种off-by-故障定义类型如下: Ei包含off-by-故障,如果对于任何测试用例e1=e2,有|e
26、3-e4|= 。 Ei包含off-by-*故障,如果对于任何测试用例e1=e2 ,有|e3-e4| 。 Ei包含off-by-+故障,如果对于任何测试用例e1=e2 ,有|e3-e4|。2.7.2 2.7.2 谓词测试中的故障模型谓词测试中的故障模型 算术表达式故障考虑三种算术表达式的off-by-故障,分别为:off-by-、off-by-*、off-by-+。 例:假设正确的谓词Ec为ab+c,其中a、b为整型变量。设=1,则Ei的三种错误故障分别如下: ab 假设c=1,Ei包含off-by-1故障,因为对于任何测试用例 a=b+c,有|a-b|1。 ab+1 假设c2,Ei包含off-
27、by-1*故障,因为对于任何测试用例a=b+c,有|a-(b+1)|1。 ab-1 假设c0,Ei包含off-by-1+故障,因为对于任何测试用例a=b+c,有|a-(b+1)|1。 还存在另外两类故障:缺失/冗余布尔变量故障2.7.3 2.7.3 谓词约束谓词约束 用BR表示符号集合t,f,+,-。“BR”是布尔和关系(Boolean and Relational)的缩写。集合BR中的元素称为BR符号。 一个BR符号定义了针对某个布尔变量或关系表达式的约束。例如,用符号“+”约束表达式E:e1e2时,要满足该约束就要求E的某个测试用例确保0e1-e2。同样, 符号“-”是对E的另一个约束,要满足该约束就要求E的某个测试用例确保-e1-e2bbd的约束(,),要求简单谓词ab和bd都为真。但是,如果da为真的话,则该约束无效。 谓词pr上的约束C可有效指导测试集的设计,为pr变量取值的选取提供清晰的线索。2.7.4 2.7.4 谓词测试准则谓词测试准则 我们最关心的是如何从给定的谓词pr生成测试集T,使其满足:(a) T是最小集合;(b) T保证能够检测出pr实现中存在的符合前文所述故障模型的所有故障。为了获得这样的测试集,定义了三个准则,通常称作BOR、BRO、BRE测试准则。名称BOR、BRO、BRE分别对应于布尔运算符、布尔和关系运算符、布尔和关系表达式。定义
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 幼儿大班阅读指导课件
- 张掖市河西学院招聘专业人才真题2024
- 衢州市市级机关事业单位招聘真题2024
- 护理查房骨科
- 贵州多彩贵州航空有限公司招聘真题2024
- 成都市卫生事业单位招聘真题2024
- 2025年上海市物业服务合同
- 2025年租赁房屋委托管理合同
- 2023-2024学年江苏省南京市玄武区八年级(上)期末语文试题及答案
- 2025年建筑施工安全教育培训试题集(高级)
- 2025年食安食品考试题及答案
- 保证食品安全的规章制度清单
- 江苏省建筑与装饰工程计价定额(2014)电子表格版
- DB32T 2061-2018单位能耗限额统计范围和计算方法02-(高清现行)
- 合并财务报表模板案例含抵消分录公式及数据-直接生成报表
- 癫狂中医内科学
- 端午节通用模板PPT
- 工程土石方挖运机械租赁合同
- 部编本三年级语文下册第三单元《语文园地三》课件PPT
- 环保铁1215物质安全资料表MSDS
- ST-结构文本-PLC编程语言-教程
评论
0/150
提交评论