本文根据Vince整理的测试用例设计白皮书》整理

Word版本下载地址:/Files/Jackc/黑盒测试用例设计方法.doc

 

一、黑盒测试用例方法

  黑盒测试用例设计方法,主要包括等价类划分法、边界值分析法、错误推测法、因果图法、判定表驱动发、正交试验设计法、功能图法等

1.等价类划分法

  等价类划分法是把程序的输入域分成若干部分,然后从每个部分中选取少数代表性数据作为测试用例。每一类的代表性数据在测试中的作用等价于这一类中的其他值。

  应用场景:

  某程序规定:“输入三个整数a,b,c分别作为三边的边长构成三角形.通过程序判定所构成的三角形的类型,当此三角形为一般三角形\等腰三角形及等边三角形时,分别作计算...”.用等价类划分方法为该程序进行测试用例设计.

  分析题目中给出和隐含的对输入条件的要求:

  ⑴整数   ⑵三个数   ⑶非零数   ⑷正数   ⑸两边之和大于第三边   ⑹等腰   ⑺等边

  如果a、b、c满足条件1-4,则输入下列四种情况之一:

  ①如果不满足条件5,则呈现输出为“非三角形”

  ②如果三条边相等即满足条件7,则呈现输出为“等边三角形”

  ③如果只有两条边相等,即满足条件6,则呈现输出为“等腰三角形”

  ④如果三条边都不相等,则程序输出为“一般三角形”

  

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

  a      b      c               覆盖等价类号码

  3      4      5               1-7

  4      4      5               1-7,8

  4      4      5               1-7,9

  5      4      5               1-7,10

  4      4      4               1-7,11

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

  

  2.边界值分析法

  边界值分析法就是对输入火输出的边界值进行测试的一种黑盒测试方法.同城边界值分析法是作为对等价类划分法的补充.

  使用边界值分析方法设计测试用例,首先应确定边界情况.通常输入和输出等价类的边界,就是应着重测试的边界情况.应当选取正好等于,刚刚大于或者刚刚小于边界的值作为测试数据.

  通常情况下,软件测试所包含的边界检验有几种类型:数字,字符,位置,重量,大小,速度,方位,尺寸,空间等

  相应地,以上类型的边界值应该在:最大/最小,首位/末位,上/下,最快/最慢,最高/最低,最短/最长,空/满等情况下,利用边界值作为测试数据.

  

边界值

测试用例的设计思路

字符

起始-1个字符/结束+1个字符

假设一个文本输入区域允许输入1个到255个 字符,输入1个和255个字符作为有效等价类;输入0个和256个字符作为无效等价类,这几个数值都属于边界条件值。

数值

最小值-1/最大值+1

假设某软件的数据输入域要求输入5位的数据值,可以使用10000作为最小值、99999作为最大值;然后使用刚好小于5位和大于5位的 数值来作为边界条件。

空间

小于空余空间一点/大于满空间一点

例如在用U盘存储数据时,使用比剩余磁盘空间大一点(几KB)的文件作为边界条件。

  应用场景:

   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]

  4.错误推断法

  基于经验和直觉推测程序中所有可能存在的各种错误,从而有针对性的设计测试用例的方法.

  5.因果图法

  因果图法师一种利用图解法分析输入的各种组合情况,从而设计测试用例的方法.

  采用因果图法设计测试用例的步骤:

  ① 分析软件规格说明描述中,哪些是原因(即输入条件或输入条件的等价类),哪些是结果(即输出条件),并给每个原因和结果赋予一个标识符.

  ② 分析软件规格说明描述中的语义,找出原因与结果之间,原因与原因之间对应的关系,根据这些关系,画出因果图.

  ③ 由于语法或环境限制,有些原因与原因之间,原因与结果之间的组合情况不可能出现,为表明这些特殊情况,在因果图上用一些记号表明约束或限制条件.

  ④ 把因果图转换为判定表

  ⑤ 把判定表的每一列拿出来作为依据,设计测试用例.

  6.判定表驱动法

  判定表通常由4个部分组成

  ① 条件桩:列出了问题得所有条件.通常认为列出的条件的次序无关紧要

  ② 动作桩:列出了问题规定可能采取的操作.这些操作的排列顺序没有约束

  ③ 条件项:列出针对它左列条件的取值.在所有可能情况下的真假值.

  ④ 动作项:列出在条件项的各种取值情况下应该采取的动作.

  判定表的建立步骤:

  ① 确定规则的个数.加入有n个条件.每个条件有两个取值(0,1),故有2n种规则.

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

  ③ 填入条件项

  ④ 填入动作项.等到初始判定表

  ⑤ 简化.合并相似规则

  应用场景:

  问题要求:"....对功率大于50马力的机器、维修记录不全或已运行10年以上的机器,应给予优先的维修处理...",这里假定,"维修记录不全"和"优先维修处理"均已在别处有更严格的定义.请建立判定表

  解答:

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

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

  

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

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

条件

功率大于50马力吗?

N

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

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

   

条件

功率大于50马力吗?

Y

Y

Y

N

N

维修记录不全吗?

Y

N

N

-

-

运行超过10年吗?

-

Y

N

Y

N

动作

进行优先处理

x

x

 

X

 

作其他处理

   

x

 

x

  7.正交试验法

  依据Galois理论,从大量的(实验)数据(测试例)中挑选适量的,有代表性的点(例),从而合理地安排实验(测试)的一种科学实验设计方法.

  8.功能图法

  功能图由状态迁移图和布尔函数组成.状态迁移图用状态和迁移来描述.一个状态指出数据输入的位置(或时间),而迁移则指明状态的改变.同事要依靠判定表或因果图表示的逻辑功能.

  9.场景法

  事件触发时的情景便形成了场景,二同一事件不同的触发顺序和处理结果就形成事件流.

  应用场景:

  ATM例子的流程示意图.

  

  场景设计:

  

场景1——成功提款

基本流

 

场景2——ATM内没有现金

基本流

备选流2

场景3——ATM内现金不足

基本流

备选流3

场景4——PIN有误(还有输入机会)

基本流

备选流4

场景5——PIN有误(不再有输入机会)

基本流

备选流4

场景6——账户不存在/账户类型有误

基本流

备选流5

场景7——账户余额不足

基本流

备选流6

  用例设计:

  

TCID

场景/条件

PIN

账号

输入(或选择)的金额

账面

金额

ATM内的金额

预期结果

CW1

场景1:成功提款

V

V

V

V

V

成功提款

CW2

场景2:ATM内没有现金

V

V

V

V

I

提款选项不可用,用例结束

CW3

场景3:ATM内现金不足

V

V

V

V

I

警告消息,返回基本流步骤6,输入金额

CW4

场景4:PIN有误(还有不止一次输入机会)

I

V

n/a

V

V

警告消息,返回基本流步骤4,输入 PIN

CW5

场景4:PIN有误(还有一次输入机会)

I

V

n/a

V

V

警告消息,返回基本流步骤4,输入 PIN

CW6

场景4:PIN有误(不再有输入机会)

I

V

n/a

V

V

警告消息,卡予保留,用例结束

  数据设计  

 

CID

场景/条件

PIN

账号

输入(或选择)的金额(元)

账面
金额(元)

ATM内的金额(元)

预期结果

CW1

场景1:成功提款

4987

809-498

50.00

500.00

2 000

成功提款。账户余额被更新为450.00

CW2

场景2:ATM内没有现金

4987

809-498

100.00

500.00

0.00

提款选项不可用,用例结束

CW3

场景3:ATM内现金不足

4987

809-498

100.00

500.00

70.00

警告消息,返回基本流步骤6,输入金额

CW4

场景4:PIN有误(还有不止一次输入机会)

4978

809-498

n/a

500.00

2 000

警告消息,返回基本流步骤4,输入PIN

CW5

场景4:PIN有误(还有一次输入机会)

4978

809-498

n/a

500.00

2 000

警告消息,返回基本流步骤4,输入PIN

CW6

场景4:PIN有误(不再有输入机会)

4978

809-498

n/a

500.00

2 000

警告消息,卡予保留,用例结束

  10.测试用例设计综合策略

  1.Myers提出了使用各种测试方法的综合策略:

  ① 在任何情况下都必须使用边界值分析方法,经验表明用这种方法设计出测试用例发现程序错误的能力最强

  ② 必要时用等价类划分方法补充一些测试用例

  ③ 用错误推测法再追加一些测试用例

  ④ 对照程序逻辑,检查已设计出的测试用例的逻辑覆盖程度,如果没有达到要求的覆盖标准,应当再补充足够的测试用例

  ⑤ 如果程序的功能说明中含有输入条件的组合情况,则一开始就可选用因果图法

  2.测试用例的设计步骤

  ① 构造更加设计规格得出的基本功能测试用例

  ② 边界值测试用例

  ③ 状态转换测试用例

  ④ 错误猜测测试用例

  ⑤ 异常测试用例

  ⑥ 性能测试用例

  ⑦ 压力测试用例

  3.优化测试用例的方法

  ① 利用设计测试用例的8中方法不断的对测试用例进行分解与合并

  ② 采用遗传算法理论进化测试用例

  ③ 在测试时利用发散思维构造测试用例

 

posted on 2017-07-27 11:15  magicianyin  阅读(14662)  评论(1编辑  收藏  举报