【软件工程】黑盒测试——基于决策表分析法
实验三 黑盒测试——基于决策表分析法
图:封面
开发语言及实现平台或实验环境
在 Windows 7 或 Windows 10 操作系统上,使用 C,C++,C#或 Java 语言 及对应的开发环境(IDE)
实验目的
- 认识黑盒测试方法中基于决策表分析的测试方法原理
- 掌握黑盒测试方法中基于决策表分析的测试方法过程
实验要求
- 要求学生能够理解基于决策表的测试方法的相关概念、方法和过程
~ - 具体为每一组,每组二——五人,根据实验题目编写出对应的 c 语言或c++语言程序,组间相互交换程序,按黑盒测试的方法进行测试。
实验原理
对编写的实验内容,采用基于决策表的测试方法进行黑盒测试。
实验材料
三角形问题
问题描述:三角形问题接受三个整数,a、b 和 c 作为输入,用作三角
形的边。程序的输出是由这三条边确定的三角形类型:等边三角形、等腰 三角形、不等边三角形或非三角形。
作为输入:三角形的三条边必须满足如下条件: C1:1<=a<=100
C2:1<=b<=100
C3:1<=c<=100
C4:a<b+c C5:b<a+c C6:c<a+bNextDate 函数
问题描述:NextDate 是一个由三个变量(月份、日期和年份)的函数。
函数返回输入日期后边的那个日期。 作为输入:变量月份、日期和年都具有整数值,满足以下条件。 C1:1<=月份<=12
C2:1<=日期<=31
C3:1912<=年<=2050
实验步骤
- 预习相关课堂和实验内容,了解测试对象。
- 编写实验材料源代码。
- 划分等价类,设计测试用例。
- 根据问题需要建立桩模块和驱动模块。
- 测试。
- 填写试验报告。
实验代码
三角形问题
1 | package procs; |
NextDate
1 | package procs; |
佣金问题
1 | package procs; |
测试案例
三角形问题:测试用例设计
1.第一步,分析实验实验,确定条件桩和动作桩
| 条件桩 | 行动桩(不与条件桩一一对应) |
| ———- | —— |
| C1: a<b+c? | 非三角形 |
| C2: b<a+c? | 不等边三角形 |
| C3: c<a+b? | 等腰三角形 |
| C4: a=b? | 等边三角形 |
| C5: a=c? | 不可能 |
| C6: b=c? | |
2.确定规则的个数
由于该问题中为有限条目决策表(二值条件,真/假),所以规则的数目为:2^6 = 64(条)
3.填入条件项
条件 | ||||||||
---|---|---|---|---|---|---|---|---|
C1: a<b+c? | F | F | F | F | F | F | F | F |
C2: b<a+c? | F | F | F | F | F | F | F | F |
C3: c<a+b? | F | F | F | F | F | F | F | F |
C4: a=b? | F | F | F | T | T | T | F | T |
C5: a=c? | F | F | T | F | F | T | T | T |
C6: b=c? | F | T | F | F | T | F | T | T |
4.填入动作项
条件 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | … |
---|---|---|---|---|---|---|---|---|---|
C1: a<b+c? | F | F | F | F | F | F | F | F | … |
C2: b<a+c? | F | F | F | F | F | F | F | F | … |
C3: c<a+b? | F | F | F | F | F | F | F | F | … |
C4: a=b? | F | F | F | T | T | T | F | T | … |
C5: a=c? | F | F | T | F | F | T | T | T | … |
C6: b=c? | F | T | F | F | T | F | T | T | … |
A1: 非三角形 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | 1 | … |
A2: 不等边三角形 | |||||||||
A3: 等腰三角形 | |||||||||
A4: 等边三角形 | |||||||||
A5: 不可能 |
5.合并相似规则
从上表中可以发现,测试用例1-8,由于C1条件为false,不管下面的条件项真值情况,动作项都为A1。此时C2-C6为不相关条目,因此可以被合并。以下表格为合并后的结果:
| 条件 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
| —————- | —- | —- | —- | —- | —- | —- | —- | —- | —- | —- | —- |
| C1: a<b+c? | F | T | T | T | T | T | T | T | T | T | T |
| C2: b<a+c? | - | F | T | T | T | T | T | T | T | T | T |
| C3: c<a+b? | - | - | F | T | T | T | T | T | T | T | T |
| C4: a=b? | - | - | - | F | T | T | F | T | F | F | T |
| C5: a=c? | - | - | - | F | F | T | T | F | T | F | T |
| C6: b=c? | - | - | - | F | F | F | T | T | F | T | T |
| A1: 非三角形 | 1 | 1 | 1 | | | | | | | | |
| A2: 不等边三角形 | | | | 1 | | | | | | | |
| A3: 等腰三角形 | | | | | 1 | | | | 1 | 1 | |
| A4: 等边三角形 | | | | | | | | | | | 1 |
| A5: 不可能 | | | | | | 1 | 1 | 1 | | | |
合并后即为最终决策表。
- 得到测试用例
用例ID a b c 预期输出 1 5 2 3 非三角形 2 2 5 3 非三角形 3 2 3 5 非三角形 4 3 4 5 不等边三角形 5 3 3 4 等腰三角形 6 ? ? ? 不可能 7 ? ? ? 不可能 8 ? ? ? 不可能 9 3 4 3 等腰三角形 10 4 3 3 等腰三角形 11 3 3 3 等边三角形
NextDate:测试用例设计
分析案例,确定条件桩和行动桩
又因为案例中直接将边界条件转化为条件桩的话,会缺漏的很多条件,因此,更加细分并且使用等价类归类。
等价类 M1 = {月份:每月有30天} M2 = {月份:每月有31天,12月除外} M3 = {月份:此月是12月} M4 = {月份:此月是2月} D1 = {日期:1<=日期<=27} D2 = {日期:日期 = 28} D3 = {日期:日期 = 29} D4 = {日期:日期 = 30} D5 = {日期:日期 = 31} Y1 = {年:年是闰年} Y2 = {年:年是平年}
条件桩 |
---|
C1:月份在{M1, M2, M3, M4}中之一 |
C2:日期在{D1, D2, D3, D4, D5}中之一 |
C3:年份在{Y1, Y2}中之一 |
动作桩 |
---|
A1:不可能 |
A2:日增1 |
A3:日复位 |
A4:月增1 |
A5:月复位 |
A6:年增1 |
2.确定规则个数
4*5*2 = 40
3.填入条件项
条件 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | … |
---|---|---|---|---|---|---|---|---|---|
C1:月份在{M1, M2, M3, M4}中之一 | M1 | M1 | M1 | M1 | M1 | M2 | M2 | M2 | … |
C2:日期在{D1, D2, D3, D4, D5}中之一 | D1 | D2 | D3 | D4 | D5 | D1 | D2 | D3 | … |
C3:年份在{Y1, Y2}中之一 | Y1 | Y1 | Y1 | Y1 | Y1 | Y1 | Y1 | Y1 | … |
A1:不可能 | |||||||||
A2:日增1 | |||||||||
A3:日复位 | |||||||||
A4:月增1 | |||||||||
A5:月复位 | |||||||||
A6:年增1 |
4.填入动作项
条件 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | … |
---|---|---|---|---|---|---|---|---|---|
C1:月份在{M1, M2, M3, M4}中之一 | M1 | M1 | M1 | M1 | M1 | M2 | M2 | M2 | … |
C2:日期在{D1, D2, D3, D4, D5}中之一 | D1 | D2 | D3 | D4 | D5 | D1 | D2 | D3 | … |
C3:年份在{Y1, Y2}中之一 | Y1 | Y1 | Y1 | Y1 | Y1 | Y1 | Y1 | Y1 | … |
A1:不可能 | 1 | ||||||||
A2:日增1 | 1 | 1 | 1 | 1 | 1 | 1 | |||
A3:日复位 | 1 | ||||||||
A4:月增1 | 1 | ||||||||
A5:月复位 | |||||||||
A6:年增1 |
5.合并相似规则
条件 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | … |
---|---|---|---|---|---|---|---|---|---|
C1:月份在{M1, M2, M3, M4}中之一 | M1 | M1 | M1 | M1 | M1 | M2 | M2 | M2 | … |
C2:日期在{D1, D2, D3, D4, D5}中之一 | D1 | D2 | D3 | D4 | D5 | D1 | D2 | D3 | … |
C3:年份在{Y1, Y2}中之一 | - | - | - | - | - | - | - | - | … |
A1:不可能 | 1 | ||||||||
A2:日增1 | 1 | 1 | 1 | 1 | 1 | 1 | |||
A3:日复位 | 1 | ||||||||
A4:月增1 | 1 | ||||||||
A5:月复位 | |||||||||
A6:年增1 |
6.得出测试用例
用例ID | 月份 | 日期 | 年份 | 预计输出 |
---|---|---|---|---|
1-3 | 4 | 12 | 2001 | 2001年4月12日 |
4 | 4 | 30 | 2001 | 2001年5月1日 |
5 | 4 | 31 | 2001 | 不可能 |
6-9 | 1 | 15 | 2001 | 2001年1月16日 |
10 | 1 | 31 | 2001 | 2001年2月1日 |
11-14 | 12 | 15 | 2001 | 2001年12月16日 |
15 | 12 | 31 | 2001 | 2002年1月1日 |
16 | 2 | 15 | 2001 | 2001年2月16日 |
17 | 2 | 31 | 2004 | 2004年2月29日 |
… | … | … | … | … |
测试代码及结果分析
三角形问题:测试代码
1 | package exps; |
三角形问题:测试结果
符合实验预期NextDate:测试代码
1 | package exps; |
NextDate:测试结果
以上是测试结果,符合实验预期实验总结
基于决策表的黑盒测试一般测试步骤
- 列出所有的条件桩和动作桩
- 确定规则的个数
- 填入条件项(有限条件决策表/扩展条目决策表)
- 填入动作项
- 合并相似规则(不是必须的)
- 得到测试用例
决策表的适用范围
通常适用于要产生大量决策的情况,或者输入变量之间存在重要逻辑关系。
1.决策表测试法适用于具有以下特征的应用程序
- 程序的 if then else 逻辑突出
- 输入变量之间存在逻辑关系
- 计算过程涉及输入变量子集的处理
- 输入与输出之间存在因果关系
- 圈复杂度较高的应用
2.适用于使用决策表设计测试用例的条件
- 规格说明以决策表形式给出,或较容易转换为决策表
- 条件的排列顺序不会也不应影响执行的操作
- 规则的排列顺序不会也不应影响执行的操作
- 当某一规则的条件已经满足,并确定要执行的操作后,不必检验别的规则
- 如果某一规则的条件要执行多个操作,这些操作的执行顺序无关紧要