整理各种测试方法的例子,黑盒测试(后续再继续整理白盒测试,其他测试方法)

一、等价类划分法:

1.三角形组合

某程序规定:"输入三个整数 a 、 b 、 c 分别作为三边的边长构成三角形。通过程序判定所构成的三角形的类型,当此三角形为一般三角形、等腰三角形及等边三角形时,分别作计算 … "。用等价类划分方法为该程序进行测试用例设计。(三角形问题的复杂之处在于输入与输出之间的关系比较复杂。)
  分析题目中给出和隐含的对输入条件的要求: 
  (1)整数    (2)三个数    (3)非零数   (4)正数   
  (5)两边之和大于第三边     (6)等腰     (7)等边 
   如果 a 、 b 、 c 满足条件( 1 ) ~ ( 4 ),则输出下列四种情况之一:
   1)如果不满足条件(5),则程序输出为 " 非三角形 " 。
   2)如果三条边相等即满足条件(7),则程序输出为 " 等边三角形 " 。
   3)如果只有两条边相等、即满足条件(6),则程序输出为 " 等腰三角形 " 。
   4)如果三条边都不相等,则程序输出为 " 一般三角形 " 。 

   列出等价类表并编号

java黑盒测试实例 黑盒测试用例例题_java黑盒测试实例

 

覆盖有效等价类的测试用例:
    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)

   覆盖无效等价类的测试用例:

java黑盒测试实例 黑盒测试用例例题_java黑盒测试实例_02

 

2.日期检查功能

设有一个档案管理系统,要求用户输入以年月表示的日期。假设日期限定在1990年1月~2049年12月,并规定日期由6位数字字符组成,前4位表示年,后2位表示月。现用等价类划分法设计测试用例,来测试程序的"日期检查功能"。
  1)划分等价类并编号,下表等价类划分的结果

输入等价类

有效等价类

无效等价类

日期的类型及长度

①6位数字字符

②有非数字字符

③少于6位数字字符

④多于6位数字字符

年份范围

⑤在1990~2049之间

⑥小于1990

⑦大于2049

月份范围

⑧在01~12之间

⑨等于00

⑩大于12

2)设计测试用例,以便覆盖所有的有效等价类在表中列出了3个有效等价类,编号分别为①、⑤、⑧,设计的测试用例如下:
    测试数据    期望结果      覆盖的有效等价类
    200211      输入有效      ①、⑤、⑧
  3)为每一个无效等价类设计一个测试用例,设计结果如下:
    测试数据   期望结果     覆盖的无效等价类
    95June     无效输入          ②
    20036      无效输入          ③
    2001006   无效输入          ④
    198912     无效输入          ⑥
    200401     无效输入          ⑦
    200100     无效输入          ⑨
    200113     无效输入          ⑩
    

3.下个日期的计算

NextDate 函数包含三个变量:month 、 day 和 year ,函数的输出为输入日期后一天的日期。 例如,输入为 2006年3月 7日,则函数的输出为 2006年3月8日 。要求输入变量 month 、 day 和 year均为整数值,并且满足下列条件:
  ①1≤month≤12
  ②1≤day≤31
  ③1920≤year≤2050  
  1)有效等价类为:
    M1={月份:1≤月份≤12}
    D1={日期:1≤日期≤31}
    Y1={年:1812≤年≤2012}
  2)若条件 ① ~ ③中任何一个条件失效,则 NextDate 函数都会产生一个输出,指明相应的变量超出取值范围,比如 "month 的值不在 1-12 范围当中 " 。显然还存在着大量的 year 、 month 、 day 的无效组合, NextDate 函数将这些组合作统一的输出: " 无效输入日期 " 。其无效等价类为:
    M2={月份:月份<1}
    M3={月份:月份>12}
    D2={日期:日期<1}
    D3={日期:日期>31}
    Y2={年:年<1812}
    Y3={年:年>2012}
  弱一般等价类测试用例
  月份    日期       年               预期输出
   6       15        1912           1912年6月16日
  强一般等价类测试用例同弱一般等价类测试用例
  注:弱--有单缺陷假设;健壮--考虑了无效值 
  
  (一)弱健壮等价类测试
  用例ID   月份  日期    年          预期输出
  WR1      6      15    1912      1912年6月16日
  WR2     -1     15    1912      月份不在1~12中
  WR3     13     15    1912      月份不在1~12中
  WR4      6      -1    1912      日期不在1~31中
  WR5      6      32    1912      日期不在1~31中
  WR6      6      15    1811      年份不在1812~2012中
  WR7      6      15    2013      年份不在1812~2012中

  (二)强健壮等价类测试
  用例ID   月份    日期      年          预期输出
  SR1       -1      15       1912      月份不在1~12中
  SR2        6      -1        1912      日期不在1~31中
  SR3        6      15       1811      年份不在1812~2012中
  SR4       -1      -1       1912      两个无效一个有效
  SR5        6      -1        1811      两个无效一个有效
  SR6       -1      15       1811      两个无效一个有效
  SR7       -1      -1       1811      三个无效
  

4.佣金问题

佣金问题等价类测试用例,它是根据佣金函数的输出值域定义等价类,来改进测试用例集合。
输出销售额≤1000元     佣金10%
1000<销售额≤1800     佣金=100+(销售额-1000)*15%
销售额>1800              佣金=220+(销售额-1800)*20%
测试用例         枪机(45)    枪托(30)      枪管(25)          销售额     佣金
    1               5             5                5                  500        50
    2              15           15              15                 1500       175
    3              25           25              25                 2500       360

根据输出域选择输入值,使落在输出域等价类内,可以结合弱健壮测试用例结合。

二、边界值分析

1.学生成绩

现有一个学生标准化考试批阅试卷,产生成绩报告的程序。其规格说明如下:程序的输入文件由一些有80个字符的记录组成,如右图所示,所有记录分为3组:

java黑盒测试实例 黑盒测试用例例题_java黑盒测试实例_03

 

①标题:这一组只有一个记录,其内容为输出成绩报告的名字。
  ②试卷各题标准答案记录:每个记录均在第80个字符处标以数字"2"。该组的第一个记录的第1至第3个字符为题目编号(取值为1一999)。第10至第59个字符给出第1至第50题的答案(每个合法字符表示一个答案)。该组的第2,第3……个记录相应为第51至第100,第101至第150,…题的答案。
  ③每个学生的答卷描述:该组中每个记录的第80个字符均为数字"3"。每个学生的答卷在若干个记录中给出。如甲的首记录第1至第9字符给出学生姓名及学号,第10至第59字符列出的是甲所做的第1至第50题的答案。若试题数超过50,则第2,第3……纪录分别给出他的第51至第100,第101至第150……题的解答。然后是学生乙的答卷记录。
  ④学生人数不超过200,试题数不超过999。 
  ⑤程序的输出有4个报告:
    a)按学号排列的成绩单,列出每个学生的成绩、名次。
    b)按学生成绩排序的成绩单。
    c)平均分数及标准偏差的报告。
    d)试题分析报告。按试题号排序,列出各题学生答对的百分比。 

  解答:分别考虑输入条件和输出条件,以及边界条件。给出下表所示的输入条件及相应的测试用例。

java黑盒测试实例 黑盒测试用例例题_java黑盒测试实例_04

 

 
  输出条件及相应的测试用例表。

 

java黑盒测试实例 黑盒测试用例例题_测试用例_05


 

2.三角形问题的边界值分析测试用例

在三角形问题描述中,除了要求边长是整数外,没有给出其它的限制条件。在此,我们将三角形每边边长的取范围值设值为[1, 100] 。

java黑盒测试实例 黑盒测试用例例题_等价类_06

 

3.NextDate函数的边界值分析测试用例

在NextDate函数中,隐含规定了变量mouth和变量day的取值范围为1≤mouth≤12和1≤day≤31,并设定变量year的取值范围为1912≤year≤2050 。


java黑盒测试实例 黑盒测试用例例题_数字字符_07



【备注】其实我个人觉得还应该加上闰年和非闰年的情况下,2月的日期,月份和日期之间的约束,以及2月的日期范围限制

三、错误推测法


 (1)聊天窗口功能

  A、输入特殊字符(全角,半角)后,窗口是否能够正常显示

  B、输入空格,是否能够过滤,是否会算入长度计算

  C、输入html字符

  D、输入脚本语言函数

  E、在需要密码验证,或者需要二次输入确认的地方,通过复制粘贴第一次的输入内容是否能够通过

 (2)查询功能

  A、无条件查询

  B、是否支持模糊查询

  C、查询的关键字之间是否可用连接符

  D、输入正确的查询条件以前加上空格,看是否能正确地查出相应的数据

 (3)登录功能

  A、输入的数据前存在空格,是否能够正常登录

  B、输入的密码是否能够加密显示

  C、用户在注销之后是否能够再登录成功

四、因果图法

1. 软件测试简单例子


某软件规格说明书包含这样的要求:第一列字符必须是A或B,第二列字符必须是一个数字,在此情况下进行文件的修改,但如果第一列字符不正确,则给出信息L;如果第二列字符不是数字,则给出信息M。


解答:


1) 根据题意,原因和结果如下:


       原因:


          1——第一列字符是A;


          2——第一列字符是B;


          3——第二列字符是一数字。


       结果:


          21——修改文件;


          22 ——给出信息L;


          23——给出信息M。


2) 其对应的因果图如下:


11为中间节点;考虑到原因1和原因2不可能同时为1,因此在因果图上施加E约束。



java黑盒测试实例 黑盒测试用例例题_测试用例_08


3)根据因果图建立判定表。


java黑盒测试实例 黑盒测试用例例题_测试用例_09

 

       表中8种情况的左面两列情况中,原因①和原因②同时为1,这是不可能出现的,故应排除这两种情况。表的最下一栏给出了6种情况的测试用例,这是我们所需要的数据。


2、自动售货机


有一个处理单价为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. 钱已付清



java黑盒测试实例 黑盒测试用例例题_等价类_10


3)转换成判定表:


java黑盒测试实例 黑盒测试用例例题_等价类_11

 

4) 在判定表中,阴影部分表示因违反约束条件的不可能出现的情况,删去。第16列与第32列因什么动作也没做,也删去。最后可根据剩下的16列作为确定测试用例的依据。