黑盒测试方法论-正交法
黑盒测试方法论-正交法
简介
正交法(Orthogonal Array)是一种设计实验方案和测试用例的统计方法,旨在通过有限次试验来研究多个因素对结果的影响,同时尽可能减少试验次数。正交法的主要特点是通过一种合理的方式选择一组试验参数的组合,以实现对所有可能的参数组合进行有效的覆盖,从而节省试验资源和成本。
正交法的核心思想是在所有可能的因素组合中,选择一组互相正交的因子水平组合,以尽可能少的试验次数来观察所有因素的影响。
正交表是一种特制的表格,一般用 Ln(m^k)表示,L 代表是正交表,n 代表试验次数或正交表的行数,k 代表最多可安排影响指标因素的个数或正交表的列数,m 表示每个因素水平数。
其中,因素是影响试验结果的一个变量或因素,可以是独立变量、处理水平或参数。因素可以是产品的属性、工艺参数、环境条件等。水平是每个因素可能的取值或状态。例如,一个因素可以有多个不同的水平,如高、中、低等。
使用场景
- 多参数系统:当系统具有多个输入参数,而且这些参数之间存在相互影响时,正交法特别有用。
- 多条件覆盖:当需要覆盖不同的条件组合,以测试系统在不同情况下的行为。
- 资源有限:当测试资源有限,需要在较小的测试用例集中获得尽可能广泛的覆盖。
常用正交表
正交表根据参数数量和取值范围的不同,有多种等级和类型可供选择。选择适当的正交表可以有效地设计测试用例,覆盖各种参数组合,以达到最佳的测试覆盖和效率。
操作步骤
- 确定测试参数和取值范围:识别系统的输入参数和条件。这可能包括各种参数、设置、状态等。
- 确定正交表和参数等级:根据参数数量和取值范围,选择合适的正交表。
- 设计正交表:使用正交表工具,根据系统的输入参数和条件构建正交表。
- 生成测试用例:从正交表中选择测试用例,以覆盖尽可能多的参数组合。确保所选用例能够测试系统的各个方面。
实战案例
假设有一个电子商务网站,需要测试其购物车功能,其中的输入参数包括产品类型、优惠券使用情况、支付方式等。
- 确定测试参数和取值范围:
- 参数1:产品类型
- 参数2:优惠券使用情况
- 参数3:支付方式
每个参数的取值范围如下:
- 产品类型:A(电子产品)、B(服装)、C(食品)
- 优惠券使用情况:有优惠券、无优惠券
- 支付方式:信用卡、支付宝、微信支付
- 确定正交表和参数等级:
在这个例子中,可以选择使用 L9 正交表,因为有 3 个参数,每个参数有 3 种取值,虽然没有完全符合的正交表,但是可以选择最接近的 4 个参数,每个参数有 3 种取值的场景。
- 设计正交表
使用正交法,可以构建如下的正交表:
序号 | 产品类型 | 优惠券使用情况 | 支付方式 |
---|---|---|---|
1 | A | 有优惠券 | 信用卡 |
2 | A | 无优惠券 | 支付宝 |
3 | A | 无优惠券 | 微信支付 |
4 | B | 有优惠券 | 支付宝 |
5 | B | 无优惠券 | 微信支付 |
6 | B | 有优惠券 | 信用卡 |
7 | C | 有优惠券 | 微信支付 |
8 | C | 无优惠券 | 信用卡 |
9 | C | 无优惠券 | 支付宝 |
- 生成测试用例
根据正交表,生成具体的测试用例,每个测试用例对应一行参数组合。
优缺点
正交法的主要优势在于能够在保证覆盖系统多个条件的同时,减少测试用例的数量,提高测试效率。
然而,也需要注意正交法的局限性,不能覆盖所有可能的情况,特别是在一些复杂的系统中。
-
固定水平数目:正交表设计中,每个因素的水平数目通常是固定的,这可能限制了对某些因素更复杂关系的研究。
-
可能忽略特定因素的重要性:正交表设计是基于一种均匀分布的原则,可能无法充分考虑某些特定因素的重要性或优先级。某些重要因素可能在正交设计中得到较少的关注,导致实验结果的偏差。
注意
如果不同因素的水平值不同,而你仍希望使用正交法来设计试验或测试用例,可以考虑以下方法来处理不同因素水平值不同的情况:
-
标准化因素水平:将所有因素的水平值标准化到相同的数量级或范围内。例如,将所有因素的水平数目扩展或压缩到相同的数量,以便能够构建一个正交表。这种方法可能需要一定的调整和变换,以确保所有因素的水平值可以适应正交设计的要求。
-
部分正交设计:考虑使用部分正交设计来处理水平值不同的因素。部分正交设计允许某些因素的水平数目不同,但会限制某些因素之间的交互组合。
-
使用非均匀正交表:有些情况下,可以考虑使用非均匀正交表,这种设计方法允许不同因素的水平值不同,可以考虑使用一些现成的正交法设计工具。
-
考虑因素的重要性和优先级:对于水平值不同的因素,可以考虑根据其重要性和优先级来调整设计方案。最终让水平值相同。
在处理不同因素水平值不同的情况时,需要综合考虑实际问题的复杂性和需求,选择合适的试验设计方法,并在设计过程中进行适当的调整和优化,以达到最佳的效果。
总结
- 正交法概念
- 正交法设计测试用例