《软件测试技术实战:设计、工具及管理》—第2章 2.1节运用等价类/边界值设计测试用例

简介: 通过等价类/边界值法设计软件测试用例是测试用例设计的最基本的方法。这两种方法密不可分。下面先介绍“等价类分析法”。

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

第2章 传统的软件测试的设计方法
软件测试技术实战:设计、工具及管理
从本章开始介绍软件测试的各种设计方法,这是学习软件测试的重要内容。

一般来说,软件测试设计方法分为5类:传统的黑盒测试方法、基于质量的测试方法、基于风险的测试方法、基于经验的测试方法以及白盒测试方法。本章主要介绍传统的黑盒测试方法和白盒测试方法,共分7节。

5种黑盒测试方法如下。

  • 等价类/边界值。
  • 决策表。
  • 状态转换图。
  • 决策树。
  • 正交法。

7种白盒测试的方法如下:。

  • 语句覆盖。
  • 分支覆盖。
  • 条件覆盖。
  • 判定/条件覆盖。
  • MC/DC覆盖。
  • 路径覆盖。
  • 控制流测试。

最后分析测试用例设计中几个错误观点。
基于质量的测试方法请参看1.1.9软件测试类型,本书中量的测试方法参看第1.1.9节软件测试类型,本书不再进行深入的介绍行深入介绍;基于风险的测试方法将在第四章进行介绍在第4章介绍;基于经验的测试方法将在第三章进行介绍。另外关于软件测试在第3章介绍。另外,关于软件测试的设计,读者可以参考参考文献【5】、【13】进行深入的学习行深入学习。

2.1 运用等价类/边界值设计测试用例
通过等价类/边界值法设计软件测试用例是测试用例设计的最基本的方法。这两种方法密不可分。下面先介绍“等价类分析法”。

2.1.1 等价类
等价类是指软件测试对象的某个参数输入域的子集合。在该子集合中,各个输入数据对于识别软件测试对象中的缺陷是等价的。只要测试等价类的某一个代表值,就可以认为覆盖了该等价类所有其他值的软件测试。

等价类的划分

是把软件测试对象的输入域划分成若干部分,然后从每一部分中选取少数具有代表性的数据,作为测试用例输入数据的测试用例设计技术。

等价类的两个假设

(1)软件测试对象等价类中任意一个代表值没有发现缺陷,则认为等价类内其他值也不能发现缺陷。比如等价类为【0~5】,如果测试数据4没有发现缺陷,那么测试数据1也不可能发现缺陷。

(2)软件测试对象等价类中任意一个代表值可以发现缺陷,则认为等价类内其他值也都可以发现缺陷。比如等价类为【0~5】,如果测试数据4发现缺陷,那么测试数据1也肯定能发现缺陷。

有效等价类与无效等价类

(1)有效等价类:对于软件测试对象而言,有效等价类指的是合理的、有意义的数据构成的集合。

(2)无效等价类:对于软件测试对象而言,无效等价类指的是不合理的、没有意义的数据构成的集合。

案例2-1:等价类的分类。
通过表2-1来看各种类型的数据是如何通过等价类进行分类的。


6a41377ea2a7f198779e53b028ac1af2cd3d5291

下面再介绍一下“边界值分析法”。

2.1.2 边界值
边界值分析是对输入或输出的边界值进行软件测试的一种测试方法。通常,边界值分析法作为对等价类划分法技术的补充。这种情况下,其测试用例来自等价类的边界。由于程序员在开发时在边界区域比较容易犯错误(如原本应该为a<100,却写成a≤100),所以边界值测试法就显得非常重要。由于边界值是随着等价类出现的,所以边界值可以分为有效等价类的边界值和无效等价类的边界值。

边界值分析的步骤如下:

(1)识别软件测试对象中的参数等价类;

(2)识别每个等价类的边界值;

(3)创建边界值的相关测试用例;

(4)定义边界值分析技术的覆盖率。

案例2-2:边界值的设计法。
基于表2-1,来看各种情况的边界值如何划定,见表2-2。


776a1888797ff2a1a2b7a80147dce17eed3848b9

2.1.3 基于输出的等价类/边界值划分
等价类/边界值除了可以以输入进行分类,也可以以输出进行分类,如案例2-3所示。

案例2-3:公园门票规定:

  • 身高1.2m以下的儿童免票;
  • 身高1.2~1.4m的儿童半票(含1.2m);
  • 年龄在60~69岁之间的老人半票(含60岁);
  • 年龄在70岁以上的老人免票(含70岁);
  • 在校学生半票(不含在职学生、电大学生);
  • 革命烈士家属、现役军人免票。

我们可以划分等价类为全票、半票和免票,见表2-3。


1995f121cf99e15f433f84a515ba3f8e3deeef0e

2.1.4 测试用例的设计
如果系统中有多处需要使用等价类设计的测试用例,对于有效等价数据类,可以在一个测试用例中使用;而对于无效等价类数据,在一个测试用例中只能出现一个。

案例2-4:等价类测试。
图2-1是用户信息输入的部分界面,针对这个界面设计测试用例。


521203c3e5e5836758d2f18e4cfe80e8b6d3fefb

这里性别也需要输入,只允许输入“男”和“女”。
对于有效等价数据类,设计测试用例如下。

(1)姓名:小明,年龄:0岁,性别:男。

(2)姓名:阿拉克拉姆,年龄:130岁,性别:女。

而对于无效等价类,如果设计的测试用例如下。

姓名:明,年龄:200岁,性别:男。

那么系统如果只报告了姓名有误,而没有报告年龄有误的信息,就无法知道年龄是否在程序中进行了有效性检验。也就是说,出现“缺陷屏蔽”,所以,对于无效等价类,测试用例应该细化如下。

(1)姓名:克,年龄:13,性别:男。

(2)姓名:阿拉克拉姆萨,年龄:13,性别:男。

(3)姓名:@ @,年龄:13,性别:男。

(4)姓名:小明,年龄:134,性别:男。

(5)姓名:小明,年龄:13,性别:中。

这样就可以看出:有效等价类的总个数为每个用例有效等价类个数的笛卡儿积(1×1×2=2);而无效等价类的总个数为每个用例有效等价类个数的和(1+1+3=5)。

另外,如果只要求测试等价类,而对边界值测试要求不高,在测试用例的设计中尽可能多地用到边界值。

案例2-5:由于边界值测试不完善带来的Bug。
这是我亲自遇到的一个案例。有一天我去上海某医院看病,由于手头现金没有带够,需要在医院的门口一台ATM机上取款,取款机上有一个提示,“一次取款不得多于¥2000,每天最多取5次”,于是我用我的借记卡准备取¥2000,系统却告诉我“已经超过一次取款的最大金额”,我感到很纳闷,于是改为¥1900,取款成功;作为测试工程师,我马上就意识到该系统中的边界值测试没有做好或者根本没有进行边界值的测试。

2.1.5 案例
案例2-6:日历等价类/边界值测试。
最后以一个案例作为本节的结束,如图2-2所示。


d55f58f280645075e14f7ddfd7721432d39bbd2b

等价类/边界值测试法是最基本的测试用例设计方法,不管是函数级别的软件测试,还是系统级别的软件测试都可以使用。
相关文章
|
10天前
|
Java 程序员 测试技术
Java|让 JUnit4 测试类自动注入 logger 和被测 Service
本文介绍如何通过自定义 IDEA 的 JUnit4 Test Class 模板,实现生成测试类时自动注入 logger 和被测 Service。
18 5
|
30天前
|
测试技术 开发者
vertx的学习总结6之动态代理类和测试
本文是Vert.x学习系列的第六部分,介绍了如何使用动态代理在事件总线上公开服务,以及如何进行Vert.x组件的异步测试,包括动态代理的创建和使用,以及JUnit 5和Vert.x测试工具的结合使用。
17 3
vertx的学习总结6之动态代理类和测试
|
22天前
|
测试技术 Python
自动化测试项目学习笔记(三):Unittest加载测试用例的四种方法
本文介绍了使用Python的unittest框架来加载测试用例的四种方法,包括通过测试用例类、模块、路径和逐条加载测试用例。
48 0
自动化测试项目学习笔记(三):Unittest加载测试用例的四种方法
|
2月前
|
设计模式 SQL 安全
PHP中的设计模式:单例模式的深入探索与实践在PHP的编程实践中,设计模式是解决常见软件设计问题的最佳实践。单例模式作为设计模式中的一种,确保一个类只有一个实例,并提供全局访问点,广泛应用于配置管理、日志记录和测试框架等场景。本文将深入探讨单例模式的原理、实现方式及其在PHP中的应用,帮助开发者更好地理解和运用这一设计模式。
在PHP开发中,单例模式通过确保类仅有一个实例并提供一个全局访问点,有效管理和访问共享资源。本文详细介绍了单例模式的概念、PHP实现方式及应用场景,并通过具体代码示例展示如何在PHP中实现单例模式以及如何在实际项目中正确使用它来优化代码结构和性能。
43 2
|
2月前
|
测试技术 数据库
『软件测试2』 关于黑盒测试和测试用例的基础知识
该文章讲解了黑盒测试的基本概念以及如何编写有效的测试用例,包括选择合适的输入数据、预期结果的设定和测试执行的步骤。
|
3月前
|
JSON 测试技术 数据格式
单元测试问题之使用JCode5插件生成测试类如何解决
单元测试问题之使用JCode5插件生成测试类如何解决
110 3
|
2月前
|
测试技术 数据安全/隐私保护
软件测试的艺术:如何高效地编写测试用例
【9月更文挑战第2天】在软件开发的海洋中,测试用例是导航灯塔,指引着质量保障的航向。本文将带你航行于测试用例编写的技巧之海,从理解需求到设计思路,再到实际执行,我们将一起探索如何高效而精准地构建测试用例,确保软件的稳健与可靠。
61 0
|
3月前
|
Java 测试技术 API
SpringBoot单元测试快速写法问题之计算测试用例的分支覆盖率如何解决
SpringBoot单元测试快速写法问题之计算测试用例的分支覆盖率如何解决
|
22天前
|
JSON 算法 数据可视化
测试专项笔记(一): 通过算法能力接口返回的检测结果完成相关指标的计算(目标检测)
这篇文章是关于如何通过算法接口返回的目标检测结果来计算性能指标的笔记。它涵盖了任务描述、指标分析(包括TP、FP、FN、TN、精准率和召回率),接口处理,数据集处理,以及如何使用实用工具进行文件操作和数据可视化。文章还提供了一些Python代码示例,用于处理图像文件、转换数据格式以及计算目标检测的性能指标。
36 0
测试专项笔记(一): 通过算法能力接口返回的检测结果完成相关指标的计算(目标检测)
|
2月前
|
移动开发 JSON Java
Jmeter实现WebSocket协议的接口测试方法
WebSocket协议是HTML5的一种新协议,实现了浏览器与服务器之间的全双工通信。通过简单的握手动作,双方可直接传输数据。其优势包括极小的头部开销和服务器推送功能。使用JMeter进行WebSocket接口和性能测试时,需安装特定插件并配置相关参数,如服务器地址、端口号等,还可通过CSV文件实现参数化,以满足不同测试需求。
200 7
Jmeter实现WebSocket协议的接口测试方法

热门文章

最新文章