软件测试-用例设计江西微软技术中心黑盒测试案例设计技术什么是测试用例?所谓测试用例设计就是将软件测试的行为活动,作为一个科学化的组织归纳。软件测试是有组织性、步骤性和计划性的,而设计软件测试用例的目的,就是为了能将软件测试的行为转换为可管理的模式。简单地说,测试用例就是设计一个情况,软件程序在这种情况下,必须能够正常运行并且达到程序所设计的执行结果。黑盒测试案例设计技术具体的黑盒测试用例设计方法包括等价类划分法、边界值分析法、错误推测法、因果图法、判定表驱动法、正交试验设计法、功能图法等。在设计测试用例时,采用什么方法要针对开发项目的特点对方法加以适当的选择等价类划分法等价类划分的办法是把程序的输入域划分成若干部分,然后从每个部分中选取少数代表性数据作为测试用例。每一类的代表性数据在测试中的作用等价于这一类中的其他值,也就是说,如果某一类中的一个例子发现了错误,这一等价类中的其他了也能发现相同的错误;反之,如果某一类中的一个例子没有发现错误,则这一类中的其他例子也不会查出错误(除非等价类中的某些例子属于另一等价类,因为几个等价类是可能相交的)。黑盒测试案例设计技术等价类划分法等价类划分有两种不同的情况:有效等价类和无效等价类有效等价类:指对于程序的规格说明来说是合理的、有意义的输入数据构成的集合。利用有效等价类可检验程序是否实现了规格说明中所规定的功能和性能无效等价类:与有效等价类的定义恰巧相反。设计测试用例时,要同时考虑这两种等价类。因为软件不仅要能接收合理的数据,也要能经受意外的考验。这样的测试才能确保软件具有更高的可靠性。下面给出6条确定等价类的原则:黑盒测试案例设计技术等价类划分法1、在输入条件规定了取值范围或值的个数的情况下,可以确立一个有效等价类和两个无效等价类。2、在输入条件规定了输入值的集合或者规定了“必须如果”的条件的情况下,可以确立一个有效等价类和一个无效等价类。3、如果输入条件是一个布尔量,则可以确定一个有效等价类和一个无效等价类4、在规定了输入数据的一组值(假定n个),并且程序要对每一个输入值处理的情况下,可确立n个有效等价类和一个无效等价类。5、在规定了输入数据必须遵守的规则的情况下,可确立一个有效等价类(符合规则)和若干个无效等价类(从不同角度违反规则)。注意:如果在已确定的等价类中各元素在软件中的处理方式不同,则应根据需要对等价类进一步进行划分。黑盒测试案例设计技术等价类表在确立了等价类之后,建立等价类表,列出所有划分出的等价类,如下表所示•为每个等价类规定一个唯一的编号。•设计一个新的测试用例,使其尽可能多地覆盖尚未覆盖的有效等价类。重复这一步,最后使得所有有效等价类均被覆盖。•设计一个新的测试用例,使其只覆盖一个无效等价类。重复这一步使所有无效等价类均被覆盖。输入条件有效等价类无效等价类………黑盒测试案例设计技术举例•两数相加,测试1+13和1+99999999•另存为对话框中输入文件名称•一个程序读入3个整数,把这3个数值看作一个三角形的3条边的长度值。这个程序要打印出信息,说明这个三角形是不等边的、是等腰的、还是等边的。黑盒测试案例设计技术输入条件有效等价类无效等价类是否三角形的三条边(A0),(1)(B0),(2)(C0),(3)(A+BC),(4)(B+CA),(5)(A+CB),(6)(A≤0),(7)(B≤0),(8)(C≤0),(9)(A+B≤C),(10)(B+C≤A),(11)(A+C≤B),(12)是否等腰三角形(A=B),(13)(B=C),(14)(C=A),(15)(A≠B)and(B≠C)and(C≠A),(16)是否等边三角形(A=B)and(B=C)and(C=A),(17)(A≠B),(18)(B≠C),(19)(C≠A),(20)黑盒测试案例设计技术设计测试用例如下图所示。序号[A,B,C]覆盖等价类输出1[3,4,5]1,2,3,4,5,6一般三角形2[0,1,2]7不能构成三角形3[1,0,2]84[1,2,0]95[1,2,3]106[1,3,2]117[3,1,2]128[3,3,4]1,2,3,4,5,6,13等腰三角形9[3,4,4]1,2,3,4,5,6,1410[3,4,3]1,2,3,4,5,6,1511[3,4,5]1,2,3,4,5,6,16非等腰三角形黑盒测试案例设计技术序号[A,B,C]覆盖等价类输出12[3,3,3]1,2,3,4,5,6,17是等边三角形13[3,4,4]1,2,3,4,5,6,14,18非等边三角形14[3,4,3]1,2,3,4,5,6,15,1915[3,3,4]1,2,3,4,5,6,13,20等价分配的目标是把可能的测试用例组合缩减到仍然足以满足软件测试需求为止。测试同一个复杂程序的两个软件测试员,可能会制定出两组不同的等价区间。只要审查等价区间的人都认为它们足以覆盖测试对象就可以了。练习:某一8位计算机,其十六进制常数的定义为:以0x或0X开头的数是十六进制整数,其值的范围是-7f至7f(大小写字母不加区别),如0x13,0X6A,-0x3c黑盒测试案例设计技术边界值分析法边界值分析法就是对输入的边界值进行测试的一种黑盒测试方法。通常边界值分析法是作为对等价类划分法的补充,这种情况下,其测试用例来自等价类的边界。为什么要使用边界值分析法?测试实践表明,大量的故障往往发生在输入定义域的边界上,而不是在其内部。因此,针对各种边界情况设计测试用例,通常会取得很好的测试效果。例如,一个循环条件为“≤”时,却错写成“”;计数器发生少计数一次。黑盒测试案例设计技术常见的边界值•对16-bit的整数而言32767和-32768是边界•屏幕上光标在最左上、最右下位置•报表的第一行和最后一行•数组元素的第一个和最后一个•循环的第0次、第1次和倒数第2次、最后一次黑盒测试案例设计技术举例假设有两个变量x和y的程序F,X、Y在下列范围内取值:a≤x≤b,c≤y≤d区间[a,b]和[c,d]是x、y的值域,程序F的输入定义域如图所示,即带阴影矩形中的任何点都是程序F的有效输入。bxycda黑盒测试案例设计技术标准性(一般性)测试对于一个含有n个变量的程序,保留其中一个变量,让其余的变量取正常值,被保留的变量依次取min、min+、nom、max-、max值,对每个变量都重复进行。这样,对于一个有n个变量的程序,边界值分析测试程序会产生4n+1个测试用例。边界值分析法是基于可靠性理论中称为“单故障”的假设,即有两个或两个以上故障同时出现而导致软件失效的情况很少,也就是说,软件失效基本上是由单故障引起的。黑盒测试案例设计技术xnom,yminxnom,ymin+xnom,ymaxxnom,ymax-xmin,ynomxmin+,ynomxmax,ynomxmax-,ynomxnom,ynom黑盒测试案例设计技术健壮性测试健壮性测试是边界值分析测试的一种扩展,除了取边界值外,还需要考虑采用一个略超过最大值(max+)及略小于最小值(min-)的取值,检查超过极限值时系统的情况对于一个含有n个变量的程序,保留其中一个变量,让其余的变量取正常值,被保留的变量依次取min、min+、min-、nom、max-、max、max+值,对每个变量都重复进行。这样,对于一个有n个变量的程序,边界值分析测试程序会产生6n+1个测试用例黑盒测试案例设计技术xnom,yminxnom,yminxnom,ymin+xnom,ymaxxnom,ymax-xnom,ymax+xmin,ynomxmin-,ynomxmin+,ynomxmax,ynomxmax-,ynomxmax+,ynomxnom,ynom黑盒测试案例设计技术错误推测法错误推测法就是基于经验和直觉推测程序中所有可能存在的各种错误,有针对性地设计测试用例的方法。错误推测法的基本思想是列举出程序中所有可能有的错误和容易发生错误的特殊情况,根据它们选择测试用例。黑盒测试案例设计技术因果图法因果图的基本图形符号通常在因果图中,用ci表示原因,ei表示结果。各结点表示状态,可取“0”或“1”值。“0”表示某状态不出现,“1”表示某状态出现。黑盒测试案例设计技术•恒等:若原因出现,则结果出现;若原因不出现,则结果也不出现。•非:若原因出现,则结果不出现;若原因不出现,则结果出现。•或:若几个原因中有1个出现,则结果出现;若几个原因都不出现,则结果不出现。•与:若几个原因都出现,结果才出现。若其中有1个原因不出现,则结果不出现。为了表示原因与原因之间,结果与结果之间可能存在的约束条件,在因果图中可以附加一些表示约束条件的符号。从输入(原因)考虑,有4种约束,如下图的(a)(b)(c)(d).从输出(结果)考虑,还有一种约束,如(e).黑盒测试案例设计技术E(互斥):表示a、b两个原因不会同时成立,两个中最多有一个可能成立。I(包含):表示a、b、c这三个原因中至少有一个必须成立。O(惟一):表示a和b当中必须有一个,且仅有一个成立。R(要求):表示当a出现时,b必须也出现。a出现时不可能b不出现。M(屏蔽):表示当a是1时,b必须是0。而当a为0时,b的值不定。黑盒测试案例设计技术因果图法是从用自然语言书写的程序规格说明的描述中找出因(输入条件)和果(输出结果或程序状态的改变),通过因果图转换为判定表。利用因果图导出测试用例需要经过以下几个步骤:1、分析程序规格说明的描述中,哪些是原因,哪些是结果。原因常常是输入条件或是输入条件的等价类,而结果是输出条件。2、分析程序规格说明的描述中语义的内容,并将其表示成连接各个原因与各个结果的“因果图”。3、标明约束条件。由于语法或环境的限制,有些原因和结果的组合情况是不可能出现的。为表明这些特定的情况,在因果图上使用若干个标准的符号标明约束条件。4、把因果图转换成判定表。5、为判定表中每一列表示的情况设计测试用例黑盒测试案例设计技术举例:有一个处理单位为1元5角钱的盒装饮料的自动售货机软件。若投入1元5角硬币,按下“可乐”、“雪碧”或“红茶”按钮,相应的饮料就送出来。若投入的是两元硬币,在送出饮料的同时退还5角硬币。黑盒测试案例设计技术(1)分析原因及结果黑盒测试案例设计技术(2)画出因果图黑盒测试案例设计技术(3)生成判定表黑盒测试案例设计技术练习:某软件的一个模块的需求规格说明书中描述:(1)年薪制员工:严重过失,扣年终风险金的4%;过失,扣年终风险金的2%。(2)非年薪制员工:严重过失,扣当月薪资的8%;过失,扣当月薪资的4%。请绘制出因果图和判定表,并给出相应的测试用例。黑盒测试案例设计技术判定表驱动法1、判定表的组成判定表通常由4个部分组成,条件桩、动作桩、条件项和动作项。•条件桩(conditionstub):列出了问题的所有条件。通常认为列出的条件的次序无关紧要。•动作桩(actonstub):列出了问题规定可能采取的操作。这些操作的排列顺序测试约束。•条件项(conditionentry):列出针对它所列条件的取值,在所有可能情况下的真假值。•动作项(actionentry):列出在条件项的各种取值情况下应该采取的动作。•规则:任何一个条件组合的特定取值及其相应要执行的操作。在判定表中贯穿条件项和动作项的一列就是一条规则。显然,判定表中列出多少组条件取值,也就有多少条规则,条件项和动作项就有多少列。黑盒测试案例设计技术2、判定表建立判定表的建立因该依据软件规格说明,步骤如下:①确定规则的个数。假如有n个条件,每个条件有两个取值0、1,帮有2n种规则;②列出所有的条件桩和动作桩;③填入条件项;④填入动作项,制定初始判定表。⑤简化。合并相似规则或者相同动作。黑盒测试案例设计技术场景法•每个事件触发时的情景便形成了场景。而同一事件不同的触发顺序和处理结果形成事件流。•通过运用场景来对系统的功能点或业务流程进行了描述,从而提高测试效果