《软件测试技术实战:设计、工具及管理》—第2章 2.2节运用决策表设计测试用例

简介: 决策表方法是一种很好的方法,它可以识别含有逻辑条件的系统需求,还可以将内部系统设计文档化。这种方法可以用来记录一个系统要实施的复杂的业务规则。

本节书摘来自异步社区《软件测试技术实战:设计、工具及管理》一书中的第2章,第2.2节运用决策表设计测试用例,作者顾翔,更多章节内容可以访问云栖社区“异步社区”公众号查看。

2.2 运用决策表设计测试用例
决策表方法是一种很好的方法,它可以识别含有逻辑条件的系统需求,还可以将内部系统设计文档化。这种方法可以用来记录一个系统要实施的复杂的业务规则。建立决策表时,要分析规格说明,并识别系统的条件和动作。输入条件和动作通常以“真”或“假”(布尔变量)的方式表述。决策表包含了触发条件,通常还有各种输入条件“真”或“假”的组合以及各条件组合相应的输出动作。决策表的每一列对应了一个业务规则,该规则定义了各种条件的一个特定组合,以及这个规则相关联的执行动作。决策表测试的常见覆盖标准是每列至少对应一个测试用例,该测试用例通常覆盖触发条件的所有组合。

决策表测试的优点是可以生成测试条件的各种组合,而这些组合利用其他方法可能无法被测试到。它适用于当软件的行为由一些逻辑决策决定的情况。

2.2.1 四边形类型判断系统
案例2-7:四边形类型判断系统。
下面来看一个例子。a、b、c、d是四边形的4条边,通过平行关系与是否相等来判断四边形的类型,四边形如图2-3所示。


9e97d4d7fdfe0f14ff829cf5b601cced82042bc5

a、b、c、d为四边形的4条边,可以获得如下条件。

C1:a//c(C1=T表示a平行于c;C1=F表示a不平行于c)。

C2:b//d(C2=T表示b平行于d;C2=F表示b不平行于d)。

C3:a的长度与b是否相等。

C4:b的长度与d是否相等。

四边形类型有。

A1:平行四边形。

A2:非等腰梯形。

A3:等腰梯形。

A4:普通四边形。

A5:不存在。

根据如上描述,做出决策表(由于条件有4个,所以一共有24=16个组合),见表2-4。

第一列:a不平行于c,b不平行于d,a不等于c,b不等于d,判定为普通四边形。

第二列:a不平行于c,b不平行于d,a不等于c,b等于d,判定为普通四边形。

第三列:a不平行于c,b不平行于d,a等于c,b不等于d,判定为普通四边形。

第四列:a不平行于c,b不平行于d,a等于c,b等于d,判定这种四边形不存在。

第五列:a不平行于c,b平行于d,a不等于c,b等于d,判定这种四边形为非等腰梯形。

以此类推,可以得到共十六列结果,见表2-4。
360_20170531104814916
360_20170531104839844


ac76fbd9d1b075b52c5717ab4b2f0d5fe25cd9fd


9ac03539a316fd11df23045f118469b49be57498

根据表2-4,下面来做一些简化。

根据列1和2,只要C1=F、C2=F、C3=F,就可以判断为A4。

根据列6和8,只要C1=F、C2=T、C4=T,就可以判断为A5。

根据列4和12,只要C2=F、C3=T、C4=T,就可以判断为A5。

根据列11和15,只要C1=T、C3=T、C4=F,就可以判断为A5。

根据列13和14,只要C1=T、C2=T、C3=F,就可以判断为A5。

经过简化后,得到表2-5。


cec31444a614482b135d83bee81e83aa9764a171

这样,16个测试用例就被简化成12个,于是测试用例可以设计成表2-6。

11c8a2711e3b83bcda812d5f1f996515d6412897


1433c74e08e36ceddbe26900791ead4a55ad2902

2.2.2 用户登录系统
案例2-8:用户登录系统。
下面再来看一下用户登录系统的测试用例应该如何设计。同样,也可以用决策表的方法。用户登录系统一般包括用户名、密码和验证码。只要用户名、密码错误,系统就会报出错信息:“用户名或者密码错误”;如果用户名、密码都正确,验证码错误,系统报出错信息:“验证码错误”;用户名、密码和验证码都正确,正常进入系统。下面就可以考虑如何用决策表来设计测试用例。

条件如下。

  • C1:正确的用户名。
  • C2:正确的密码。
  • C3:正确的验证码。

动作如下。

  • A1:用户名或密码错误。
  • A2:验证码错误。
  • A3:进入系统。

如上所述,可以做出登录系统的决策表设计(系统有3个条件,所以有23=8个组合),见表2-7。


ab4b234e39b258226aa198af9f68c87dc82cea62

 第一列:用户名错误,密码错误,验证码错误,得到提示信息“用户名或密码错误”。

 第二列:用户名错误,密码错误,验证码正确,得到提示信息“用户名或密码错误”。

 第三列:用户名错误,密码正确,验证码错误,得到提示信息“用户名或密码错误”。

 第四列:用户名错误,密码正确,验证码正确,得到提示信息“用户名或密码错误”。

 第五列:用户名正确,密码错误,验证码错误,得到提示信息“用户名或密码错误”。

 第六列:用户名正确,密码错误,验证码正确,得到提示信息“用户名或密码错误”。

 第七列:用户名正确,密码正确,验证码错误,得到提示信息“验证码错误”。

 第八列:用户名正确,密码正确,验证码正确,进入系统。

根据表2-7,下面来做些简化。

(1)根据列1、2、3、4,只要C1=F,就可以执行动作A1。

(2)根据列1、2、5、6,只要C2=F,就可以执行动作A1。

简化后,得到表2-8。


57e98bee52c8b867c0243b0488a708493c6ebd6e

这样,8个测试用例就简化成4个。于是,测试用例可以这样设计:假设用户名:Kenny,密码:khnygh,验证码:243546。登录系统测试用例见表2-9。

a1e64fd50a142ee322b7b40e6540378c1a7853f1

2.2.3 飞机票定价系统
案例2-9:飞机票定价系统。
下面是一个飞机票定价系统的例子,需求如下。

(1)乘客可以免费托运重量不超过30kg(含30kg)的行李。

(2)假如行李超过30kg,其收费标准为。

 头等舱国内乘客:超重部分每千克收费4元。

 其他舱国内乘客:超重部分每千克收费6元。

 外国乘客:超重部分每千克比国内乘客多1倍。

 残疾乘客:为正常价格的半价。

(3)行李重量超出部分,不满1kg的按照1kg计算。

经过分析,条件如下。

 C1:国内乘客。

 C2:超重游客。

 C3:头等舱乘客。

 C4:残疾乘客。

金额

 A1:免费。

 A2:2元。

 A3:3元。

 A4:4元。

 A5:6元。

 A6:8元。

 A7:12元。

根据如上描述做出决策表(由于条件有4个,所以一共有24=16个组合)。

 第一列:携带行李不超过30kg,普通舱,非残疾国外乘客:免费。

 第二列:携带行李不超过30kg,普通舱,残疾国外乘客:免费。

 第三列:携带行李不超过30kg,头等舱,非残疾国外乘客:免费。

 第四列:携带行李不超过30kg,头等舱,残疾国外乘客:免费。

 第五列:携带行李超过30kg,普通舱,非残疾国外乘客:8元。

 第六列:携带行李超过30kg,普通舱,残疾国外乘客:4元。

 第七列:携带行李超过30kg,头等舱,非残疾国外乘客:12元。

 第八列:携带行李超过30kg,头等舱,残疾国外乘客:6元。

以此类推,可以得到所有16列的结果,见表2-10。


883e2d35dad6c2d37ed707761334b2bbf2b9aa4d


1b837098ad59e039e1df9fe5ad4b76d069f14c60

根据表2-10,简化如下。

(1)根据列1、2,只要C1=F、C2=F、C3=F,就可以执行动作A1。

(2)根据列3、4,只要C1=F、C2=F、C3=T,就可以执行动作A1。

(3)根据列9、10,只要C1=T、C2=F、C3=F,就可以执行动作A1。

(4)根据列11、12,只要C1=T、C2=F、C3=T,就可以执行动作A1。

于是得到表2-11。


53ced7a5126147cd2732259f7b6593281b1ec11f


552a8973fbfa8f559d05d318bf9c388faee3b8c7

根据表2-11,还可以进一步调整。

根据列1、2、7、8,只要C2=F,就可以执行动作A1,见表2-12。


18dc929787341ddd51b8d465af7e899f5c222892


9a895718fdd80bcd299bed73716864d0fb200bc5

最后,16个测试用例就简化为9个测试用例了。可以设计表2-13所示的测试用例。

e4b5235088bee0f7838a472546206fd8320b6e03
相关文章
|
10月前
|
人工智能 自然语言处理 JavaScript
测试工程师要失业?Magnitude:开源AI Agent驱动的端到端测试框架,让Web测试更智能,自动完善测试用例!
Magnitude是一个基于视觉AI代理的开源端到端测试框架,通过自然语言构建测试用例,结合推理代理和视觉代理实现智能化的Web应用测试,支持本地运行和CI/CD集成。
1401 15
测试工程师要失业?Magnitude:开源AI Agent驱动的端到端测试框架,让Web测试更智能,自动完善测试用例!
|
测试技术 Python
自动化测试项目学习笔记(三):Unittest加载测试用例的四种方法
本文介绍了使用Python的unittest框架来加载测试用例的四种方法,包括通过测试用例类、模块、路径和逐条加载测试用例。
435 0
自动化测试项目学习笔记(三):Unittest加载测试用例的四种方法
|
测试技术 数据库
『软件测试2』 关于黑盒测试和测试用例的基础知识
该文章讲解了黑盒测试的基本概念以及如何编写有效的测试用例,包括选择合适的输入数据、预期结果的设定和测试执行的步骤。
|
测试技术 数据安全/隐私保护
软件测试的艺术:如何高效地编写测试用例
【9月更文挑战第2天】在软件开发的海洋中,测试用例是导航灯塔,指引着质量保障的航向。本文将带你航行于测试用例编写的技巧之海,从理解需求到设计思路,再到实际执行,我们将一起探索如何高效而精准地构建测试用例,确保软件的稳健与可靠。
384 1
|
测试技术
测试与开发问题之测试用例设计的重点是什么,如何实现
测试与开发问题之测试用例设计的重点是什么,如何实现
247 1
|
Java 测试技术 API
SpringBoot单元测试快速写法问题之计算测试用例的分支覆盖率如何解决
SpringBoot单元测试快速写法问题之计算测试用例的分支覆盖率如何解决
|
测试技术
单元测试策略问题之寻找边界问题如何解决
单元测试策略问题之寻找边界问题如何解决
150 0
|
测试技术 开发工具 git
后端测试,好的建议,后端测试----Postman如何创建项目,导入测试用例和测试集,注意对测试用例进行保存,格式用测试用例---xxx测试用例
后端测试,好的建议,后端测试----Postman如何创建项目,导入测试用例和测试集,注意对测试用例进行保存,格式用测试用例---xxx测试用例
|
安全 Java 测试技术
python接口自动化(三)--如何设计接口测试用例(详解)
上篇我们已经介绍了什么是接口测试和接口测试的意义。在开始接口测试之前,我们来想一下,如何进行接口测试的准备工作。或者说,接口测试的流程是什么?有些人就很好奇,接口测试要流程干嘛?不就是拿着接口文档直接利用接口 测试工具测试嘛。其实,如果只是三五个接口,你可以这么做一个临时的接口测试。但是,如果是上百个接口,或者,你们公司的这个项目,第一次做接口测试,那么,我们还是很有必要严格遵守接口测试的流程。
583 0
python接口自动化(三)--如何设计接口测试用例(详解)
|
测试技术
正交试验测试用例设计及工具推荐
在科研和生产实践中,人们往往要做许多次实验来进行某项研究。实验条件一般包括很多因素,当因素的值不同时,实验的结果也不一样。如果想把每个因素的每个值都要实验一遍,总实验数就等于各因素的值的个数的乘积,而这个数往往很大,超过了可接受的成本。 例如,假设某个实验由A,B,C,D四个因素,每个因素都有10个不同的取值,那么如果想把每个因素都考虑到,我们需要做 10*10*10*10=10000次实验。 为了减少实验数目,我们必须选出那些最有代表性的例子。于是,就要用到了正交表法(Orthogonal Array Testing Strategy)。
908 0
正交试验测试用例设计及工具推荐

热门文章

最新文章