测试思想-测试设计 测试用例设计之因果图方法

简介: 测试思想-测试设计 测试用例设计之因果图方法

测试用例设计之因果图方法


 

 

.方法简介

1.定义

是一种利用图解法分析输入的各种组合情况,从而设计测试用例的方法,它适合于检查程序输入条件的各种组合情况。

 

2.因果图法产生的背景:

等价类划分法和边界值分析方法都是着重考虑输入条件,但没有考虑输入条件的各种组合、输入条件之间的相互制约关系。这样虽然各种输入条件可能出错的情况已经测试到了,但多个输入条件组合起来可能出错的情况却被忽视了。

如果在测试时必须考虑输入条件的各种组合,则可能的组合数目将是天文数字,因此必须考虑采用一种适合于描述多种条件的组合、相应产生多个动作的形式来进行测试用例的设计,这就需要利用因果图(逻辑模型)。

 

3.因果图介绍

1) 4种符号分别表示了规格说明中向4种因果关系。

 



2) 因果图中使用了简单的逻辑符号,以直线联接左右结点。左结点表示输入状态(或称原因),右结点表示输出状态(或称结果)。

3) Ci表示原因,通常置于图的左部;ei表示结果,通常在图的右部。Ciei均可取值010表示某状态不出现,1表示某状态出现。

 

4.因果图概念

1)关系

①恒等:若ci1,则ei也是1;否则ei0

②非:若ci1,则ei0;否则ei1

③或:若c1c2c31,则ei1;否则ei0可有任意个输入。

④与:若c1c2都是1,则ei1;否则ei0也可有任意个输入。

 

前面两者①,②,考虑的是单个输入(原因)和输出(结果)之间的关系:也就是输入为真()时,输出的值为真还是假的对应关系,很自然的,我们很容易想到有两种情况:一种和输入同真同假,一种和输入相反。

 

后面两者③,④,考虑的是多个输入之间的组合输入和输出之间的关系:我们也很容易想到:一种是组合关系为或(or),一种组合关系为组合(and),满足这种组合关系得出的输出才为真,否则为假

 

2)约束

输入状态相互之间还可能存在某些依赖关系,称为约束。例如, 某些输入条件本身不可能同时出现。输出状态之间也往往存在约束。在因果图中,用特定的符号标明这些约束。

 

 

A.输入条件的约束有以下4类:

 E约束(异):ab中至多有一个可能为1,即ab不能同时为1

 I约束(或):abc中至少有一个必须是1,即 abc不能同时为0

 O约束(唯一):ab必须有一个,且仅有1个为1

 R约束(要求):a1时,b必须是1,即不可能a1b0

B.输出条件约束类型

 输出条件的约束只有M约束(强制):若结果a1,则结果b强制为0

 

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

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

 

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

 

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

 

4)把因果图转换为判定表。

 

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

 

.实战演习

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

解答:

1) 找出原因(输入)和结果(输出)

原因:

C1.第一列字符为A?;

C2.第一列字符为B?;

C3.第二列字符为数字?

技巧:如上,查找原因时将输入有效等价类和输入无效等价类看作是同一个原因的正反面取值,即查找有效等价类,然后加上问号

 

结果:

e1.修改文件

e2.给出信息L

e3.给出信息M
2)
其对应的因果图如下:

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

 

注意,学习添加中间结果节点

 

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

 

 

表中,C1C2是不可能同时为1的,即不可能同时出现,所以应排除这两种情况。

 

4)用例设计

针对每一条规则(C,D列除外)设计一条用例

 

2.有一个处理单价为5角钱的饮料的自动售货机软件测试用例的设计。其规格说明如下:若投入5角钱或1元钱的硬币,押下〖橙汁〗或〖啤酒〗的按钮,则相应的饮料就送出来。若售货机没有零钱找,则一个显示〖零钱找完〗的红灯亮,这时在投入1元硬币并押下按钮后,饮料不送出来而且1元硬币也退出来;若有零钱找,则显示〖零钱找完〗的红灯灭,在送出饮料的同时退还5角硬币。

1) 分析这一段说明,列出原因和结果

原因:

C1:投入1元钱?

C2:投入5角钱?

C3:押下橙汁?

C4:押下啤酒?

C5:售货机有零钱找?

C6:中间结果,按下按钮?

C7:中间结果,找钱成功?

结果:

e1:送出橙汁

e2:送出啤酒

e3:高亮【零钱找完】的红灯

e4:退出1元硬币

e5:熄灭【零钱找完】的红灯

e6:退出5角硬币

 

2)画出因果图

 

 

说明:因果图需要对需求和逻辑理解很透彻,不同的理解画出的因果图不同,自然设计难易程度也就不一样,个人建议少用因果图,多用场景法,因为相比之下,场景法设计用例实施起来会比较容易

 

3)转换为判定表

 

 

4)简化判定表

 

 

5)用例设计

 

 

pdf版下载:

测试用例设计之因果图方法.pdf

 

参考文章: 测试用例设计白皮书_张元礼

 

目录
相关文章
|
9天前
|
Java
IDEA快捷测试方法可用性
IDEA快捷测试方法可用性
16 0
|
2月前
|
安全 测试技术
BOSHIDA DC电源模块的安全性能评估与测试方法
BOSHIDA DC电源模块的安全性能评估与测试方法
 BOSHIDA DC电源模块的安全性能评估与测试方法
|
2月前
|
安全
DC电源模块的安全性能评估与测试方法
DC电源模块的安全性能评估与测试方法 DC电源模块的安全性能评估与测试方法应包括以下几个方面: 1. 输入安全性测试:包括输入电压范围、输入电压稳定性、输入电流范围、输入电流保护等方面的测试。测试方法可以是逐步增加输入电压或输入电流,观察模块的工作状态和保护功能。
DC电源模块的安全性能评估与测试方法
|
2月前
|
监控 JavaScript 前端开发
在生产环境中测试和监控Vue项目的方法有哪些?
在生产环境中测试和监控Vue项目的方法有哪些?
28 4
|
2月前
|
芯片
电容在ESD测试中的选用方法
电容在ESD测试中的选用方法
28 2
|
2月前
|
Java Spring
使用JDBCTemplate实现与Spring结合,方法公用 ——测试(EmpDaoImplTest)
使用JDBCTemplate实现与Spring结合,方法公用 ——测试(EmpDaoImplTest)
9 0
|
6天前
|
测试技术 API Python
Appium控件交互策略:优化自动化测试效率的关键方法
该文介绍了如何使用Selenium与APP进行交互,包括点击、输入和状态判断等操作。例如,通过element.click()点击控件,element.send_keys()输入文本,以及element.is_displayed()检查元素是否可见。还展示了如何获取元素属性,如resource-id、text和class,并提供了Python代码示例来定位并操作APP元素,如滑动条的显示、可点击性检测及点击滑动条中心位置。在编写测试脚本时,应注意元素定位和状态验证以确保测试稳定性。
13 1
|
4天前
|
测试技术
【测试】构建质量保证之路:编写测试用例的艺术
【测试】构建质量保证之路:编写测试用例的艺术
|
1天前
|
存储 大数据 测试技术
矢量数据库的性能测试与评估方法
【4月更文挑战第30天】本文探讨了矢量数据库的性能测试与评估方法,强调其在大数据和AI时代的重要性。文中介绍了负载测试、压力测试、容量测试、功能测试和稳定性测试五大评估方法,以及实施步骤,包括确定测试目标、设计用例、准备环境、执行测试和分析结果。这些方法有助于确保数据库的稳定性和高效性,推动技术发展。
|
4天前
|
测试技术
【测试】优化软件测试:有效测试用例设计的关键
【测试】优化软件测试:有效测试用例设计的关键

热门文章

最新文章