51Testing软件测试论坛

标题: 测试用例的几种设计方法 [打印本页]

作者: 楠族开心果    时间: 2011-2-22 08:43
标题: 测试用例的几种设计方法
一、等价类划分
  等价类划分主要适用于单个输入条件,输入为数值型的情况,如果输入规定了输入区间,可划分出一个有效等价类,两个无效等价类;如果输入只规定了输入范围,可划分出一个有效等价类,一个无效等价类。
  二、边界值
  边界值方法也是适用于单个输入条件的情况,输入类型可以数值、字符等,要测试的边界包括上点、下点、离点。
  三、错误推测法
  错误推测法主要是测试设计人员的测试经验相关,测试经验不同,设计出来的测试用例也区别很大。
  四、因果图法
  因果图方法考虑输入的组合,特别适用于多个输入条件相关有关联又相互约束的情况。
  设计步骤:
  1)罗列出输入与输出;
  2)根据输入与输出画出因果图;
  3)标出约束跟限制;
  4)把因果图转化成判定表;
  5)根据判定表的每一列设计测试用例。
  五、判定表驱动法
  判定表适合于解决多个逻辑条件的组合。将各种逻辑的组合罗列出来,避免遗漏。不能表达重复的操作。
  判定表包括条件桩、条件项、动作桩、动作项。
  条件桩:列出所有条件,次序无关;
  条件项:列出所对应条件的所有可能情况下的取值;
  动作桩:列出可能采取的操作,次序无关;
  动作项:列出条件项各种取值情况下采取的操作。
  设计步骤:
  1)确定规则个数,条件及各条件取值的组合;
  2)列出条件桩、动作桩;
  3)列出条件项;
  4)列出动作项;
  5)初始化判定表;
  6)规则简化、合并。
  六、正交法
  当输入条件很多时,因果图等设计方法设计出来的用例数往往多的惊人,用正交法可有效减少用例数。正交法的核心思想是从大量测试数据中选取有代表性的点来测试,从而减少测试用例数。
  设计步骤:
  1)确定因子并画出正交表草图;
  2)填充各因子的状态值;
  3)加权筛选;
  4)根据筛选过的正交表设计测试用例。
作者: msnshow    时间: 2011-2-28 21:48
有实例就好了
作者: hately2003    时间: 2011-3-1 15:53

作者: 花儿开在春风里    时间: 2011-3-1 16:28
反反复复就是这么几个测试方法,说自己应用自如,得到完美效果的有几个
作者: mainer    时间: 2011-3-1 17:33
没有实例,如何去理解啊。
作者: rustyapple    时间: 2011-3-7 08:53
这里有实例,很不错
http://smt.fortuneage.com/uwang/83-46038.aspx
作者: honey52160    时间: 2011-5-7 17:11
测试用例设计方法例子
      一、等价类划分
  问:某程序规定:"输入三个整数 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)
   覆盖无效等价类的测试用例:




       二、边界值分析法
NextDate函数的边界值分析测试用例
在NextDate函数中,隐含规定了变量mouth和变量day的取值范围为1≤mouth≤12和1≤day≤31,并设定变量year的取值范围为1912≤year≤2050 。

测试用例 mouth day year 预期输出
Test1
Test2
Test3
Test4
Test5
Test6
Test7 6
6
6
6
6
6
6 15
15
15
15
15
15
15 1911
1912
1913
1975
2049
2050
2051 1911.6.16
1912.6.16
1913.6.16
1975.6.16
2049.6.16
2050.6.16
2051.6.16
Test8
Test9
Test10
Test11
Test12
Test13 6
6
6
6
6
6 -1
1
2
30
31
32 2001
2001
2001
2001
2001
2001 day超出[1…31]
2001.6.2
2001.6.3
2001.7.1
输入日期超界
day超出[1…31]
Test14
Test15
Test16
Test17
Test18
Test19 -1
1
2
11
12
13 15
15
15
15
15
15 2001
2001
2001
2001
2001
2001 Mouth超出[1…12]
2001.1.16
2001.2.16
2001.11.16
2001.12.16
Mouth超出[1…12]



       三、错误推测法
        测试一个对线性表(比如数组)进行排序的程序,可推测列出以下几项需要特别测试的情况:

I.          输入的线性表为空表;
II.       表中只含有一个元素;
III.     输入表中所有元素已排好序;
IV.     输入表已按逆序排好;
V.        输入表中部分或全部元素相同。



四、因果图法
有一个处理单价为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)转换成判定表:



五、判定表驱动分析方法
问题要求:”……对功率大于50马力的机器、维修记录不全或已运行10年以上的机器,应给予优先的维修处理……” 。这里假定,“维修记录不全”和“优先维修处理”均已在别处有更严格的定义。请建立判定表。
解答:

①确定规则的个数:这里有3个条件,每个条件有两个取值,故应有2*2*2=8种规则。

②列出所有的条件茬和动作桩:





③填入条件项。可从最后1行条件项开始,逐行向上填满。如第三行是:Y N Y N Y N Y N,第二行是:Y Y N N Y Y N N等等。

④填入动作桩和动作顶。这样便得到形如图的初始判定表。


1
2
3
4
5
6
7
8




功率大于50马力吗?
Y
Y
Y
Y
N
N
N
N

维修记录不全吗?
Y
Y
N
N
Y
Y
N
N

运行超过10年吗?
Y
N
Y
N
Y
N
Y
N




进行优先处理
x
x
X
  
X
  
X
  

作其他处理
  
  
  
X
  
x
  
x



初始判定表

⑤化简。合并相似规则后得到图。


1
2
3
4
5




功率大于50马力吗?
Y
Y
Y
N
N

维修记录不全吗?
Y
N
N
-
-

运行超过10年吗?
-
Y
N
Y
N




进行优先处理
x
x
  
X
  

作其他处理
  
  
x
  
x




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2