06 基于规格说明的测试技术
Posted on Wed, 25 Dec 2024 17:06:07 +0800 by LiangMingJian
1.等价类划分法 #
1.1 等价类划分法的定义 #
- 等价类划分法是一种典型的,并且是最基础的黑盒测试用例设计方法。
- 采用等价类划分法时,完全不用考虑程序内部结构,从输入条件的一个子集合中选取少数具有代表性的数据作为等价类生成测试用例。
- 设计测试用例的唯一依据是软件需求规格说明书。
1.2 等价类的类型 #
- 有效等价类代表对程序有效的输入
- 无效等价类代表其他可能的输入(即不正确的输入)
- 被测程序若是正确的,就应该既能接受有效的输入,也能接受无效的输入
1.3 等价类划分法设计 #
- 为每个等价类规定唯一的编号
- 设计一个新的测试用例,使其尽可能的覆盖未被覆盖地有效等价类,重复执行直到所有有效等价类被覆盖
- 设计一个新的测试用例,使其仅覆盖一个尚未被覆盖的无效等价类,重复执行直到所有无效等价类被覆盖
1.4 等价类确定的基本原则 #
- 在输入条件规定取值范围和值的个数时,可以确定一个有效等价类和两个无效等价类。例如规定取值范围为 0 - 100,则有效等价类为:0 到 100 间的数值,无效等价类为:小于 0 的数值,大于 100 的数值
- 在输入条件规定了输入值的集合或者"必须如何"的条件下,可以确定一个有效等价类和一个无效等价类。例如规定输入值必须为 3 位数字,则有效等价类:3 位长,数字型,无效等价类:非 3 位长,非数字型
- 在输入条件是一个布尔量时,可确定一个有效等价类和一个无效等价类
- 在规定输入数据是一组值,且程序要分别处理每个值时,可以确定 n 个有效等价类和一个无效等价类
- 在规定输入数据必定遵守的规则的情况下,可以确定一个有效等价类(符合规则的)和若干个无效等价类(从不同角度违反规则的)
2.边界值法 #
2.1 边界值法的定义 #
- 边界值分析法就是对输入或输出的边界值进行测试的一种黑盒测试方法,通常作为对等价类划分法的补充,其测试用例来自等价类的边界。
- 边界值是指内点(范围内的任意一个点),上点(边界上的点),离点(离上点最近的一个点)。
2.2 边界值确定的基本原则 #
- 如果输入条件规定了值的范围,则应当取这个范围的边界,以及刚刚超越这个边界的值
- 如果输入条件规定了值的个数,则应当取最大个数,最小个数,比最少个数少1,比最大个数大1
- 如果输入条件规定了值是有序集合,则应取集合第一个元素和最后一个元素
- 如果程序中使用了一个内部数据结构,则应当取这个结构边界上的值
3.判定表法 #
3.1 判定表法的定义 #
- 判定表是分析和表达多种输入条件下系统执行不同动作的工具,它可以把复杂的逻辑关系和多种条件组合的情况表达得既具体又明确,将复杂的问题按照各种可能的情况全部列举出来,避免遗漏。
- 判定表通常由条件桩,动作桩,条件项(取值),动作项(取值)所组成。
- 判定表依据软件规格说明而建立,n 个条件能得到最多 2^n 个规则的判定表。
3.2 判定表法设计 #
- 列出所有的条件和动作
- 根据提取出来的条件桩和动作桩,设计判定表确定规则的个数
- 填写判定表
- 简化判定表(化简:就是规则合并有两条或多条规则具有相同的动作,并且其条件项之间存在着极为相似的关系。)
- 一个规则就可以转成一个测试用例
3.3 判定表示例 #
判定表 | | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
---|
问题 | 你觉得疲倦吗? | Y | Y | Y | Y | N | N | N | N |
问题 | 你对内容感兴趣吗? | Y | Y | N | N | Y | Y | N | N |
问题 | 书中内容使你胡涂吗? | Y | N | Y | N | Y | N | Y | N |
建议 | 请回到本章开头重读 | | | | | X | | | |
建议 | 继续读下去 | | | | | | X | | |
建议 | 跳到下一章去读 | | | | | | | X | X |
建议 | 停止阅读,请休息 | X | X | X | X | | | | |
简化判定表 | | 1 | 2 | 3 | 4 |
---|
问题 | 你觉得疲倦吗? | Y | N | N | N |
问题 | 你对内容感兴趣吗? | - | Y | Y | N |
问题 | 书中内容使你胡涂吗? | - | Y | N | - |
建议 | 请回到本章开头重读 | | X | | |
建议 | 继续读下去 | | | X | |
建议 | 跳到下一章去读 | | | | X |
建议 | 停止阅读,请休息 | X | | | |
3.4 判定表优点 #
- 判定表法主要针对功能需求中的处理过程,处理过程越是复杂,就越有必要使用判定表法。
- 判定表法充分考虑了输入条件间的组合,对组合情况覆盖充分,且可得出每个组合的预期输出。
- 判定表法重测试需求分析,轻测试执行过程。
3.5 判定表缺点 #
- 当被测试特性输入较多时,会造成判定表的规模很庞大。
- 当输入条件间的约束条件不能有效区分时,有可能产生冗余,需手工剔除冗余用例。
4.因果图法 #
4.1 因果图法的定义 #
- 因果图(Cuase-effect Graph)是一种描述输入条件的组合以及每种组合对应的输出的图形化工具。
- 在因果图的基础上可以设计测试用例。
4.2 因果图中的逻辑关系 #
4.3 因果图中的约束关系 #
- E 约束(异):输入组中最多只能有一个 1
- I 约束(或):输入组中至少有一个必须为 1
- O 约束(唯一):输入组中有且仅有一个 1
- R 约束(要求):a 为 1,则 b 必须为 1
- M 约束(强制):a 是 1,则 b 强制为 0
4.4 因果图法设计 #
- 分析程序规格,找出原因与结果
- 分析规格说明的描述,连接各个原因与各个结果的因果图
- 在因果图中使用符号标明约束条件
- 把因果图转换成判定表
- 为判定表中每一列表示内容设计测试用例
5.场景法 #
5.1 场景法的流 #
- 基本流:最简单的路径,使用直黑线表示
- 备选流:从基本流或其他备选流中分离出来的流,代表不同的选择,可以重新加入基本流,也可直接终止用例
5.2 场景法设计 #
- 描述出基本流和备选流
- 根据基本流和备选流确认场景
- 为每一个场景生成测试用例
- 复审生成的测试用例,去掉多余的的测试用例
6.测试设计方法选择策略 #
- 首先进行等价类划分,包括输入条件和输出条件的等价划分,将无限测试变成有限测试,这是减少工作量和提高测试效率最有效的方法。
- 在任何情况下都必须使用边界值分析方法。经验表明,用这种方法设计出的测试用例发现程序错误的能力最强。
- 可以用错误推测法追加一些测试用例, 这需要依靠测试工程师的智慧和经验。
- 对照程序逻辑,检查已设计出的测试用例的逻辑覆盖程度。如果没有达到要求的覆盖标准,应当再补充足够的测试用例。
- 如果程序的功能说明中含有输入条件的组合情况,则一开始就可选用因果图法和判定表驱动法。
- 对于参数配置类的软件,要用正交试验法选择较少的组合方式达到最佳效果。
- 功能图法也是很好的测试用例设计方法,我们可以通过不同时期条件的有效性设计不同的测试数据。
- 对于业务流清晰的系统,可以利用场景法贯穿整个测试案例过程,在案例中综合使用各种测试方法。