我将省略在这里讨论众所周知且广泛使用的测试设计技术,例如等价类、边界值测试和成对测试,我将讨论其他不太常见的技术。您还可以阅读我关于组合测试设计技术问题的文章。
决策表是记录需求和描述应用程序功能的出色工具。这些表非常方便地描述应用程序的业务逻辑,除此之外,它们还可以作为创建测试用例的坚实基础。如果测试的应用程序缺乏适当的文档,那么这是使用决策表的一个很好的理由。以紧凑而简单的形式呈现需求使得创建测试用例变得非常容易。
方法:
决策表根据系统状态的实体(属性/条件)描述应用程序的逻辑。每个决策表应该只描述系统的一种状态。
| 规则1 | 规则2 | …… | 规则N |
---|---|---|---|---|
实体 | | | | |
物业1 | | | | |
…… | | | | |
物业M | | | | |
行动 | | | | |
动作1 | | | | |
…… | | | | |
行动P | | | | |
实体(Property)从1到M代表系统的各种属性;它们作为可输入系统的输入数据显示在表中。从 1 到 P 的操作是可以通过指定的实体组合发生的操作。根据实体所有输入数据的组合,操作会采取必要的值。每个规则为导致执行特定操作的所有属性定义一组唯一的输入数据。
在组成决策表之后,通常可以简化该表,例如,通过删除一些或全部不可能的场景。然后,该表可以转换为测试用例。
状态转换测试与决策表测试一样,是记录需求以及描述系统结构和设计的宝贵工具。与描述特定系统状态的决策表测试不同,状态转换测试描述系统的这些状态如何改变。图表定义了应用程序运行期间发生的所有事件以及应用程序如何响应这些事件。
方法:
该技术有两种类型的视觉表示:
作为一个例子,让我们考虑一下机票的预订。它的运作大致如下:最初,客户向航空公司提供预订信息——出发地点、目的地、出发日期和时间。航空公司员工充当客户和机票预订系统之间的接口,使用客户提供的信息来创建预订。此后,客户的预订将处于“已完成”状态。此外,创建预留后,系统会启动计时器。当定时器超时,且所预订的机票尚未付款时,系统将取消该机票的预订。
圆圈代表机票预订系统的状态,即“Made”状态。箭头表示到“Made”状态的转换。箭头下方的描述(“get_info”)是源自系统外部的事件。箭头下方描述中的命令(“/”之后)表示系统响应事件而执行某些操作 - 在本例中为启动计时器。黑色圆圈表示图表的起点/入口点。
如果定时器没有超时,并且我们已经支付了预订的门票,则系统进入“已支付”状态。这由标记为“payMoney”的箭头以及从“Made”状态到“Paid”状态的转换来描述。
状态转换表由四列组成:当前状态、事件、操作和下一状态。
状态转换表的优点是它们定义了所有可能的状态转换场景,而不仅仅是正确的场景。因此,状态转换表通常会导致发现未定义、未记录的状态转换组合,最好在编写代码之前识别这些组合。
值“1”和“2”对存在多少种组合? {1,1}、{1,2}、{2,1} 和 {2,2}。正交数组是具有特殊属性的二维数组 - 在数组的任意两列中,都存在这些列中值的所有组合。也就是说,如果您从正交数组中取出任意两列,其中值只能是“1”或“2”,您将找到这些列的以下行 - {1,1}、{1,2}、{ 2,1} 和 {2,2}。
作为示例,考虑具有三个输入参数的系统,每个参数都是二进制的(即,取值“1”或“2”)。
行 | 变量1 | 变量2 | 变量3 |
---|---|---|---|
1 | 1 | 1 | 1 |
2 | 2 | 1 | 1 |
3 | 1 | 2 | 1 |
4 | 1 | 1 | 2 |
5 | 2 | 2 | 1 |
6 | 1 | 2 | 2 |
7 | 2 | 1 | 2 |
8 | 2 | 2 | 2 |
正交数组表示为 - L_4(2^3),其中 L_4 表示正交数组有四行,(2^3) 表示数组有三列,值可以是“1”或“2” ”。
行 | 变量1 | 变量2 | 变量3 |
---|---|---|---|
1 | 1 | 1 | 1 |
2 | 1 | 2 | 2 |
3 | 2 | 1 | 2 |
4 | 2 | 2 | 1 |
L_4,其中 4 是行数
2^3,其中 2 是最大值 (== 2, 3, …, N),3 是列数
正交数组 - 是具有以下属性的二维数组:选择数组的任意两列,您将找到这些列中值的所有组合。
使用正交数组:
AllPairs 算法的本质是不需要测试所有变量的所有值组合。相反,它侧重于测试每对变量的所有值组合。
作为 QA 专业人员,了解这些细微差别很重要。虽然在某些情况下只是理论上的,但了解组合测试设计技术的复杂性使 QA 专业人员能够有效地测试应用程序的复杂业务逻辑,并向用户提供高质量的软件。