软件测试基础 (二)—— 测试用例
软件测试基础 (二)—— 测试用例
一、 什么是测试用例
测试用例是为某个特殊目标而编制的一组测试输入、执行条件以及预期结果,以便测试某个程序路径或核实是否满足某个特定需求。
二、为什么要写测试用例
-
深入理解需求,理请思路,避免遗漏测、重复测,发现需求中的问题,提高测试效率
-
跟进测试进度,简单计算 执行测试的完成度= 执行的测试用例/未执行的测试用例
-
历史参考,功能相似的模块可以参考历史用例,给新来的同事快速熟悉业务
三、测试用例的设计
用例的要素:
-
用例编号
-
所属项目
-
用例标题
-
用例级别
-
前置条件
-
输入
-
操作步骤
-
预期结果
用例的3A原则(最不可缺的用例要素有哪几个)
- Arrange: 初始化测试对象或者准备测试数据 —— 前置条件/数据
- Act : 调用被测方法 —— 用例执行步骤(操作步骤)
- Assert: 断言 —— 预期结果
黑盒测试:设计和执行测试过程中,不考虑被测程序内部的结构,将被测程序视作不透明的黑盒子,只考虑输入内容和输出结果,发现软件的缺陷的过程
黑盒测试的方法:
- 等价类
- 边界值
- 判定表
- 因果图
- 正交法
- 场景法
- 错误推断法
3.1 等价类
等价类划分
-
将程序所有可能的输入进行合理分类,再从每一个分类中选取少数具有代表性的数据作为测试用例。
-
有效等价类:符合需求说明的,合理的输入数据的集合
-
无效等价类:不符合需求说明的,无意义的输入数据的集合
等价类设计用例步骤
- 划分有效等价类和无效等价类
- 为等价类表中的每一个等价类分别规定一个唯一的编号
- 设计一个新用例,使它能够尽量多覆盖尚未覆盖的有效等价类。重复该步骤,直到所有的有效等价类均被用例覆盖
- 设计一个新用例,使它仅覆盖一个尚未覆盖的无效等价类。重复该步骤,直到所有的无效等价类均被覆盖
有效等价类 | 编号 | 无效等价类 | 编号 |
---|---|---|---|
1 ~ 100 整数 | (1) | 1 ~ 100 小数 | (2) |
- | 小于1的数字 | (3) | |
- | 大于100的数字 | (4) | |
- | 字母 | (5) | |
- | 特殊符号 | (6) | |
- | 中文 | (7) | |
- | 空 | (8) | |
- | 负数 | (9) |
3、设计一个新用例,使它能够尽量多覆盖尚未覆盖的有效等价类。重复该步骤,直到所有的有效等价类均被用例覆盖
4、设计一个新用例,使它仅覆盖一个尚未覆盖的无效等价类。重复该步骤,直到所有的无效等价类均被覆盖
用例编号 | 覆盖等价类 | 输入 | 预期结果 |
---|---|---|---|
1 | (1) 1 ~ 100 整数 | 50 | 系统提示输入正确 |
2 | (2) 1 ~ 100 小数 | 50.1 | 系统提示:请输入1~100的整数 |
3 | (3) 小于1的数字 | 0 | 系统提示:请输入1~100的整数 |
4 | (4) 大于100的数字 | 150 | 系统提示:请输入1~100的整数 |
5 | (9) 负数 | -50 | 系统提示:请输入1~100的整数 |
6 | (6) 特殊符号 | @#¥%…… | 系统提示:请输入1~100的整数 |
7 | (7) 中文 | 测试中文输入 | 系统提示:请输入1~100的整数 |
8 | (5) 字母 | a | 系统提示:请输入1~100的整数 |
9 | (8) 空 | 系统提示:请输入1~100的整数 |
3.2 边界值
对输入或输出的边界值进行测试
特点:
- 不是从一个等价类中任选一值做代表,而是寻一个或几个值,使得该等价类的边界值成为测试关注的目标
- 边界值分析法作为对等价类划分法的补充
- 边界值分析法不仅关注输入条件,它还根据输出的情况(输出等价类)设计测试用例;例如:计算结果的小数点精确位数
3.3 判定表
判定表是分析和表达多逻辑条件下执行不同操作的工具。将复杂的问题按照各种可能的情况全部列举出来,某些操作的实施依赖于多个逻辑条件的组合,针对不同逻辑条件的组合值,分别执行不同的操作
-
条件桩:需求规格说明书定义的被测对象的所有输入
-
条件项:针对条件桩可能输入数据值
-
动作桩:针对条件,被测对象可能采取的所有操作
-
动作项:针对动作桩,被测对象相应的可能取值
规则:任何一个条件组合的特定取值及其相应要执行的操作称为规则。
化简:就是把相同规则进行合并。合并的标准是,有两条或多条规则具有相同的动作,并且其条件项之间存在着极为相似的关系
需求:订购单的检查规则为:若金额超过600元,又未过期,则发出批准单和提货单;若金额超过600元,但过期了,则不发批准单;如果金额低于600元,则不论是否过期都发出批准单和提货单,在过期的情况下还需发出通知单。(没有批准单就没有提货单)
列出所有条件桩和条件项
条件桩 | 条件项 |
---|---|
订购金额是否大于600元 | Y —>大于600元 |
N —>小于600元 | |
订单是否过期 | Y —>订单过期 |
N —>订单没过期 |
列出所有的动作桩和动作项
动作桩 | 动作项 |
---|---|
发出批准单 | X |
发出提货单 | X |
发出通知 | X |
生成判定表(先条件组合,再看结果)
简化判定表
删除序号1组合
3.4、因果图
用图解的方法表示输入的各种组合关系,写出判定表,从而设计相应的测试用例。 适用范围:适用于分析程序输入条件的各种组合情况,以及输入与输出之间的依赖关系。
- 因果图的“因”——输入条件
- 因果图的“果”——输出结果
使用步骤
-
根据程序规格说明书描述的语义内容,分析并确定 “因” 和 “果”;
-
将 “因” 和 “果” 表示成 “因果图”;
-
在因果图上使用若干个约束符号来标明约束条件;
-
将得到的因果图转换成判定表;
-
为判定表中每一列所表示的情况设计一个测试用例。
因果图
3.5、正交法
因果图和判定表:依据方法中的主要思想,同类输人间不可同时发生,不同类型输人间必须同时存在其中之一 ,所以将需求中的各项输入分别组合一一遍。常常不可避免地产生一个非常庞大的组合数字,不合实际情形,如3X3X3X3=81次组合(全排列)
正交试验法即使用事先已创建好的表格一正交表,来安排试验并进行数据分析的一种科学试验设计方法,借助正交表可从大量的试验数据(测试用例)中筛选出适量的、有代表性的值,从而协助合理地安排试验(测试),满足了“在简化用例的同时尽量充分开展测试”的需求。
3.6 、场景法
尽可能真实模拟用户操作的一种用例设计分析方法
场景法主要基于 2 个层面开展
- 业务(需求)层面:对被测软件的重要功能、业务逻辑(系统要实现什么、如何实现?)、行业背景深入理解
- 技术层面:基于等价类划分中的有效等价类——模拟用户正确操作;无效等价类——模拟用户错误操作
核心概念:
-
基本流(正确流、有效流):模拟用户正确的操作流程
-
备选流(错误流、无效流):模拟用户错误的操作流程
设计步骤
- 根据说明,描述出程序的基本流及各项备选流
- 根据基本流和各项备选流生成不同的场景
- 对每一个场景生成相应的测试用例
- 对生成的所有测试用例重新审核,去掉多余的测试用例,测试用例确定后,对每一个测试用例确定测试数据值
3.7 错误推测法
基于经验和直觉推测程序中所有可能存在的各种错误,从而有针对性地设计测试用例的方法。
------
参考文章和推荐阅读
《软件测试技术及用例设计实训》