黑盒测试基本原理
只知道系统输入和预期输出,不需要了解程序内部结构和内部特性的测试方法称为黑盒测试。
优势:
- 方法简单有效
- 可以整体测试系统的行为
- 开发与测试可以并行
- 对测试人员技术要求相对较低
测试方法的评价标准:
在最短时间内,以最少的人力,有利于发现最多的,以及最严重的缺陷。
- 精确的:测试针对性强
- 完备的:测试覆盖全面,无漏洞
- 无冗余
- 简单的:测试方法简单易行
- 易于调试:缺陷定位难度小
以用户需求为中心,坚持高效的测试用例设计,坚持缺陷的快速处理
测试方法的评价:
- 测试股用例覆盖度:高
- 测试用例的数量:少
- 测试用例的冗余度:低
- 测试用例的缺陷定位能力:高
- 测试方法的复杂程度:低
一、边界值测试
经过长期的测试工作经验表明,在输入域边界或边界附近常常会发现大量缺陷。边界值测试倾向于选择系统边界或边界附近的数据来设计测试用例。
- 边界在哪里?
- 需求中有利于识别边界点的文字:
位置,尺寸,数量,长度,速度,高度,距离,质量,时间… - 可能出现的边界点:
第一个/最后一个,最小/最大,最少/最多,最短/最长,最快/最慢,最高/最低,最近/最远,最轻/最重,最早/最晚… - 如何定义边界的领域?
- 如何在边界及其邻域内选择测试数据?
- 如何基于所选的测试数据来设计测试用例?
例:
int Add(int x1, int x2)
1<=x1<=200
50<=x2<=300
需求简述:
对于有效输入,函数返回x1与x2的和
对于无效输入,函数返回-1
错误的设计如下:
正确设计如下:
二、等价类测试
产生原因?
-
对系统进行穷尽测试是不可能的
-
使用有限的数据对系统进行测试是可能的
-
我们可以选择少量测试用例来测试系统,并满足:
(1)测试是完备的
(2)测试是没有冗余的
等价类测试将无穷多数据缩减到有限个等价区域中,通过测试等价区域完成穷尽测试。
基本原理
遵循三个约束条件:
- 分而不交,即划分出的任意两个等价类之间不存在交际,达到“测试无冗余”的目标
- 合而不变,即所有等价类的并集仍然是原始的输入域,达到“测试无漏洞”的目标
- 类内等价,即任意一个等价类中,所有数据相互等价,达到“以一代全”的目标
要解决的问题
-
如何划分被测系统的等价类?
(1)有效等价类
a. 有效等价类对应有效输入域的数据
b. 有效等价类设计的测试用例用于验证被测
系统是否能够正确完成指定功能
(2)无效等价类
a. 无效等价类对应无效输入域的数据
b. 无效等价类设计的测试用例用来考察被测
系统的容错性 -
如何利用这些等价类设计测试用例?
一般有两种常见的覆盖要求:弱覆盖和强覆盖
(1)弱覆盖:测试用例应覆盖所有的等价类
(2)强覆盖:测试用例应覆盖所有等价类的所有有效组合
等价类测试的流程:
- 确定有几个输入条件
- 划分每个输入条件的等价类
- 选择核是的覆盖标准(强/弱覆盖)
- 设计测试用例
等价类测试的陷阱
- 确定输入条件时,可能会改变原始输入域
- 对有效和无效域可以用相同方式设计测试用例吗?
独立性假设:
a. 当等价类划分不彻底时,将导致测试的漏洞;
b. 当输入条件之间存在关联时,引入独立性原则将造成测试的冗余。此时尽量基于关联性来划分等价类。 - 如何选择合适的覆盖标准
- 等价类测试就理论基础而言是没有漏洞和冗余的,现实中只要我们使用等价类测试就一定可以确保测试的完备和无冗余吗?
三、场景法测试
- 如何定义基本流和备选流?
- 如何定义场景?
- 如何设计测试用例?
往往将最高风险的事件流指定为基本流。
高风险:操作频率高、设计业务规则复杂、涉及重要功能、涉及用户类型广泛、涉及用户数量大、涉及交互复杂
备选流:备选事件流,以基本流为基础,在基本流所经过的每个判定节点处满足不同的触发条件而导致的其它事件流。与基本流不同的是:基本流是一条从初始状态到终止状态的完整的业务流程,而备选流仅仅是整个业务流程中的一个执行片段,备选流的其实节点和终止节点可以具有多种形式。
起始节点:从基本流的某个判定节点开始、从其它备选流的某个判定节点开始
终止节点:基本流上的终止状态、另外的系统终止状态
备选流上的每个节点执行后可以继续往下执行,也可以返回基本流上的某个节点继续执行