关键词:等价类划分法 边界值分析法 因果图法 判定表驱动分析法 场景法
一、等价类划分法
(1)设计测试用例
在确立了等价类后(等价类中元素的处理方式不同时,需要进一步划分),可建立等价类表,列出所有划分出的等价类输入条件:有效等价类、无效等价类,然后从划分出的等价类中按以下三个原则设计测试用例:
1)为每一个等价类设置一个唯一的编号;
2)设计一个新的测试用例,使其尽可能多地覆盖尚未被覆盖地有效等价类,重复这一步,直到所有的有效等价类都被覆盖为止;
3)设计一个新的测试用例,使其仅覆盖一个尚未被覆盖的无效等价类,重复这一步,直到所有的无效等价类都被覆盖为止。
(2)实例
某程序规定:"输入三个整数a 、 b 、 c 分别作为三边的边长构成三角形。通过程序判定所构成的三角形的类型,当此三角形为一般三角形、等腰三角形及等边三角形时,分别作计算 … "。用等价类划分方法为该程序进行测试用例设计。
分析题目中给出和隐含的对输入条件的要求: (成功完成业务流程,所涉及的所有要素)
三个整数由于处理方式不同需继续划分:三个整数即三个非零正数。
(1)整数 (2)三个数 (3)非零数 (4)正数
输出为三角形,由于处理方式不同需继续划分:一般三角形、等腰、等边。
(5)两边之和大于第三边 (6)等腰 (7)等边
如果 a 、 b 、 c 满足条件( 1 ) ~ ( 4 ),则输出下列四种情况之一:
1)如果不满足条件(5),则程序输出为 " 非三角形 " 。
2)如果三条边相等即满足条件(7),则程序输出为 " 等边三角形 " 。
3)如果只有两条边相等、即满足条件(6),则程序输出为 " 等腰三角形 " 。
4)如果三条边都不相等,则程序输出为 " 一般三角形 " 。 列出等价类表并编号
覆盖有效等价类的测试用例:
a b c 覆盖等价类号码
3 4 5 (1)--(7)
4 4 5 (1)--(7),(8)
4 5 5 (1)--(7),(9)
5 4 5 (1)--(7),(10)
4 4 4 (1)--(7),(11)
覆盖无效等价类的测试用例:
二、边界值划分法
(1)定义:边界值分析法就是对输入或输出的边界值进行测试的一种黑盒测试方法。通常边界值分析法是作为对等价类划分法的补充,这种情况下,其测试用例来自等价类的边界。
使用边界值分析方法设计测试用例,首先应确定边界情况。通常输入和输出等价类的边界,就是应着重测试的边界情况。应当选取正好等于,刚刚大于或刚刚小于边界的值作为测试数据,而不是选取等价类中的典型值或任意值作为测试数据。
(2)常见的边界值
(3)设计测试用例的原则
1)如果输入条件规定了值的范围,则应取刚达到这个范围的边界的值,以及刚刚超越这个范围边界的值作为测试输入数据。 (例如,如果程序的规格说明中规定:"重量在10公斤至50公斤范围内的邮件,其邮费计算公式为……"。作为测试用例,我们应取10(有效等价类边界值)及50(有效等价类边界值),还应取10.01(有效等价类),49.99(有效等价类),9.99(无效等价类边界值)及50.01(无效等价类边界值)等。)
2)如果输入条件规定了值的个数,则用最大个数,最小个数,比最小个数少一,比最大个数多一的数作为测试数据。 (比如,一个输入文件应包括1~255个记录,则测试用例可取1和255,还应取0及256等。)
3)将规则1)和2)应用于输出条件,即设计测试用例使输出值达到边界值及其左右的值。 (例如,某程序的规格说明要求计算出"每月保险金扣除额为0至1165.25元",其测试用例可取0.00及1165.24、还可取一0.01及1165.26等。 再如一程序属于情报检索系统,要求每次"最少显示1条、最多显示4条情报摘要",这时我们应考虑的测试用例包括1和4,还应包括0和5等。 )
4)如果程序的规格说明给出的输入域或输出域是有序集合,则应选取集合的第一个元素和最后一个元素作为测试用例。
5)如果程序中使用了一个内部数据结构,则应当选择这个内部数据结构的边界上的值作为测试用例。
6)分析规格说明,找出其它可能的边界条件。
案例:基于等价类/边界值划分
需求:
1.身高1.2m以下的儿童免票;
2.身高1.2 ~ 1.4 的儿童半票(含1.2m);
3.年龄在60 ~ 69岁之间的老人半票(含60岁);
4.年龄在70岁以上的老人免票(含70岁);
5.在校学生半票(不含在职学生,电大学生);
6.革命烈士家属,现役军人免票。
我们可以划分等价类为全票、半票和免票;
案例:日历等价类/边界值测试
三、因果图法
(1)直观表明输入条件与输出动作之间的因果关系;适合描述多种输入条件的组合,或输入条件、输出结果之间存在约束。
(2)因果图中涉及的关系和约束符号
关系
因----》果:恒等、非、与A、或V
约束
因---》因:异E(不能同时为1)、或I(不能同时为0)、唯一0(有且仅有一个为1)、要求R(a是1,b必须是1)
果---》果:强制M(若结果a为1,结果b强制为0)
(3)因果图法设计用例的步骤:
1)分析软件规格说明描述中,那些是原因(即输入条件或输入条件的等价类),那些是结果(即输出条件),,并给每个原因和结果赋予一个标识符。
2)分析软件规格说明描述中的语义,找出原因与结果之间, 原因与原因之间对应的关系,根据这些关系,画出因果图。
3)由于语法或环境限制,有些原因与原因之间,原因与结果之间的组合情况不可能出现,为表明这些特殊情况, 在因果图上用一些记号表明约束或限制条件。
4)把因果图转换为判定表。
5)把判定表的每一列拿出来作为依据,设计测试用例。
(4)实例
有一个处理单价为5角钱的饮料的自动售货机软件测试用例的设计。其规格说明如下:若投入5角钱或1元钱的硬币,押下〖橙汁〗或〖啤酒〗的按钮,则相应的饮料就送出来。若售货机没有零钱找,则一个显示〖零钱找完〗的红灯亮,这时在投入1元硬币并押下按钮后,饮料不送出来而且1元硬币也退出来;若有零钱找,则显示〖零钱找完〗的红灯灭,在送出饮料的同时退还5角硬币。
1) 分析这一段说明,列出原因和结果
原因:
1.售货机有零钱找
2.投入1元硬币
3.投入5角硬币
4.押下橙汁按钮
5.押下啤酒按钮
结果:
21.售货机〖零钱找完〗灯亮
22.退还1元硬币
23.退还5角硬币
24.送出橙汁饮料
25.送出啤酒饮料
2)画出因果图,如图所示。所有原因结点列在左边,所有结果结点列在右边。建立中间结点,表示处理的中间状态。中间结点:
11. 投入1元硬币且押下饮料按钮
12. 押下〖橙汁〗或〖啤酒〗的按钮
13. 应当找5角零钱并且售货机有零钱找
14. 钱已付清
3)转换成判定表:
4) 在判定表中,阴影部分表示因违反约束条件的不可能出现的情况,删去。第16列与第32列因什么动作也没做,也删去。最后可根据剩下的16列作为确定测试用例的依据。
四、判定表驱动分析法
(1)判定表展示出输入条件与输出结果的对应关系。判定表测试以判定表的形式使用了测试项条件(原因)和动作(结果)之间的逻辑关系(判定规则)模型。
故建立判定表时,要分析规格说明,把需求描述中的输入条件分解成多个单条件;把输出结果分解成多个单结果;若存在单条件的“真”或“假”组合,能达到单结果 的“真”或“假”的组合。
条件无序、结果(动作)唯一且无序
(2)规则及规则合并举例
1)如下图左端,两规则动作项一样,条件项类似,在1、2条件项分别取Y、N时,无论条件3取何值,都执行同一操作。即要执行的动作与条件3无关。于是可合并。“-”表示与取值无关。
2)与上类似,下图中,无关条件项“-”可包含其他条件项取值,具有相同动作的规则可合并。
案例:用户登录系统
条件:
C1:正确的用户名。
C2:正确的密码。
C3:正确的验证码。
动作如下:
A1:用户名或密码错误。
A2:验证码错误。
A3:进入系统。
判定表设计如下;
假设用户名:Kenny,密码:khnygh,验证码:243546
案例:飞机票定价系统
需求:
(1)乘客可以免费托运重量不超过30kg的行李。
(2)假如行李超过30kg,其收费标准为:
头等舱国内乘客:超重部分每千克收费4元。
其他国内乘客:超重部分每千克收费6元。
外国乘客:超重部分每千克比国内乘客多一倍。
残疾乘客:为正常价格的半价。
(3)行李重量超出部分,不满1千克的按照1千克计算。
分析如下:
C1:国内乘客。
C2:超重乘客。
C3:头等舱乘客。
C4:残疾乘客。
金额
A1:免费。
A2:2元。
A3:3元。
A4:4元。
A5:6元。
A6:8元。
A7:12元。
五、场景法
实例
1)下图所示是ATM例子的流程示意图。
2)场景设计:(首先,确定核心业务功能点;其次,分解出该核心业务功能实现的基本流;最后,分别考虑分支能形成的场景。)
注:为方便起见,备选流3和6(场景3和7)内的循环以及循环组合未纳入上表。
3)用例设计
对于这7个场景中的每一个场景都需要确定测试用例。可以采用矩阵或决策表来确定和管理测试用例。下面显示了一种通用格式,其中各行代表各个测试用例,而各列则代表测试用例的信息。本示例中,对于每个测试用例,存在一个测试用例ID、条件(或说明)、测试用例中涉及的所有数据元素(作为输入或已经存在于数据库中)以及预期结果。
4)数据设计
一旦确定了所有的测试用例,则应对这些用例进行复审和验证以确保其准确且适度,并取消多余或等效的测试用例。
测试用例一经认可,就可以确定实际数据值(在测试用例实施矩阵中)并且设定测试数据,如表3-10所示。