什么是正交数组测试?(示例)
正交阵列测试
正交阵列测试 (OAT) 是一种使用正交阵列创建测试用例的软件测试技术。它是一种统计测试方法,在被测试系统具有大量数据输入时特别有用。正交阵列测试通过配对和组合输入,并以相对较少的测试用例测试系统来最大化测试覆盖率,从而节省时间。
例如,当火车票需要验证时,必须测试乘客数量、车票号码、座位号和火车号等因素。逐一测试每个因素/输入是繁琐的。当QA工程师将更多输入组合在一起进行测试时,效率更高。在这种情况下,我们可以使用正交阵列测试方法。
这种配对或组合输入并测试系统以节省时间的方法称为成对测试。OATS技术用于成对测试。
为什么选择OAT(正交阵列测试)?
在当前情况下,由于代码的复杂性,向客户交付高质量的软件产品已变得具有挑战性。
在传统方法中,测试套件包括源自所有输入值和前置条件组合的测试用例。因此,必须覆盖N个测试用例。
但在实际情况中,测试人员没有时间执行所有测试用例来发现缺陷,因为在测试阶段还需要考虑文档、建议和客户反馈等其他流程。
因此,测试经理希望优化测试用例的数量和质量,以确保以最小的努力实现最大的测试覆盖率。这种努力称为测试用例优化。
- 系统化的统计方法来测试成对交互
- 交互和集成点是缺陷的主要来源。
- 执行定义良好、简洁的测试用例,这些测试用例可能会发现大多数(并非所有)错误。
- 正交方法保证所有变量的成对覆盖。
OAT的表示方式
OAT的计算公式
- 运行次数(N)——阵列中的行数,转换为将生成的测试用例数量。
- 因子(K)——阵列中的列数,转换为可以处理的最大变量数量。
- 水平(V)——任何单个因子可以采用的最大值数量。
单个因子有2到3个输入需要测试。这些最大输入数量决定了水平。
如何进行正交阵列测试:示例
- 识别场景的独立变量。
- 找到运行次数最小的阵列。
- 将因子映射到阵列。
- 为任何“剩余”级别选择值。
- 将运行次数转换为测试用例,并添加任何未生成的特别可疑组合。
示例 1
一个网页有三个不同的部分(顶部、中部、底部),可以单独向用户显示或隐藏。
- 因子数 = 3(顶部、中部、底部)
- 级别数(可见性) = 2(隐藏或显示)
- 阵列类型 = L4(23)
(4是创建OAT阵列后得到的运行次数)
如果采用传统测试技术,我们需要2 X 3 = 6个测试用例
测试用例 | 场景 | 要测试的值 |
---|---|---|
测试 #1 | 隐藏 | 顶部 |
测试 #2 | 显示 | 顶部 |
测试 #3 | 隐藏 | 底部 |
测试 #4 | 显示 | 底部 |
测试 #5 | 隐藏 | 中部 |
测试 #6 | 显示 | 中部 |
如果采用OAT测试,我们需要4个测试用例,如下所示
测试用例 | 顶部 | 中部 | 底部 |
---|---|---|---|
测试 #1 | 隐藏 | 隐藏 | 隐藏 |
测试 #2 | 隐藏 | 可见 | 可见 |
测试 #3 | 可见 | 隐藏 | 可见 |
测试 #4 | 可见 | 可见 | 隐藏 |
示例 2
需要测试微处理器的功能
- 温度:100°C、150°C和200°C。
- 压力:2 psi、5 psi和8 psi
- 掺杂量:4%、6%和8%
- 沉积速率:0.1mg/s、0.2mg/s和0.3mg/s
使用传统方法,我们需要81个测试用例来覆盖所有输入。让我们使用OATS方法。
因子数量 = 4(温度、压力、掺杂量和沉积速率)
级别 = 每个因子3个级别(温度有3个级别——100°C、150°C和200°C,其他因子也类似)
创建如下数组
1. 列与因子数量一致
测试用例 # | 温度 | 压力 | 掺杂量 | 沉积速率 |
---|---|---|---|---|
2. 输入行数等于每个因子的级别数。即温度有3个级别。因此,温度的每个级别插入3行,
测试用例 # | 温度 | 压力 | 掺杂量 | 沉积速率 |
---|---|---|---|---|
1 | 100摄氏度 | |||
2 | 100摄氏度 | |||
3 | 100摄氏度 | |||
4 | 150摄氏度 | |||
5 | 150摄氏度 | |||
6 | 150摄氏度 | |||
7 | 200摄氏度 | |||
8 | 200摄氏度 | |||
9 | 200摄氏度 |
3. 现在将压力、掺杂量和沉积速率分别放入列中。
例如:在温度100°C、150°C和200°C处输入2 psi,同样在100°C、150°C和200°C处输入4%的掺杂量,依此类推。
测试用例 # | 温度 | 压力 | 掺杂量 | 沉积速率 |
---|---|---|---|---|
1 | 100摄氏度 | 2 psi | 4% | 0.1 毫克/秒 |
2 | 100摄氏度 | 5 psi | 6% | 0.2 毫克/秒 |
3 | 100摄氏度 | 8 psi | 8% | 0.3 毫克/秒 |
4 | 150摄氏度 | 2 psi | 4% | 0.1 毫克/秒 |
5 | 150摄氏度 | 5 psi | 6% | 0.2 毫克/秒 |
6 | 150摄氏度 | 8 psi | 8% | 0.3 毫克/秒 |
7 | 200摄氏度 | 2 psi | 4% | 0.1 毫克/秒 |
8 | 200摄氏度 | 5 psi | 6% | 0.2 毫克/秒 |
9 | 200摄氏度 | 8 psi | 8% | 0.3 毫克/秒 |
因此,在OAs中,我们需要9个测试用例来覆盖。
OAT的优点
- 保证对所有选定变量的成对组合进行测试。
- 减少测试用例数量
- 创建较少的测试用例,涵盖所有变量的所有组合测试。
- 可以实现变量的复杂组合。
- 比手动创建的测试集更简单,错误更少。
- 它对集成测试很有用。
- 由于减少了测试周期和测试时间,提高了生产力。
OAT的缺点
- 随着数据输入的增加,测试用例的复杂性也随之增加。因此,人工工作量和时间也随之增加。因此,测试人员必须进行自动化测试。
- 适用于软件组件的集成测试。
执行OAT时的错误
- 测试工作不应集中在应用程序的错误区域。
- 避免选择错误的参数进行组合
- 避免将正交阵列测试用于最小测试工作。
- 手动应用正交阵列测试
- 将正交阵列测试应用于高风险应用程序
结论
在这里,我们已经了解了如何使用OAT(正交阵列测试)来减少测试工作,以及如何实现测试用例优化。