软件测试中的结对组合测试

刚才听了近半个小时的软件测试英文课,愣是打瞌睡,实在是觉得老师用英文讲得太复杂了,同样的意思反复表达,就像“行政脱口秀”上说的“反复讲,讲反复,反反复复讲反复。😀” 听得特么叫个费劲,这里顺便再梳理一下,加深加深印象。

什么是结对组合测试?

结对组合测试(Pairwise Testing)是一种适用于具有多个输入参数的系统的软件测试方法,该方法通过将所有输入参数的全部取值组合起来,来达到减少测试用例数量的目的。这种方法的优点是在不需要测试所有输入参数组合的情况下,有效的发现系统缺陷。

烤披萨举例

为了更好的说明这种测试方法的原理和优势,这里我们通过烤披萨的案例来进行介绍。

场景:假设你新开了一家披萨店,你计划使用烤箱烤出味道最好的披萨,假设配方不变的情况下,能够影响披萨味道的因素有这些:

  • 烤架高度(低,中,高)
  • 烤箱温度(500度,800度, 1500度)
  • 烤制时长(20分钟,25分钟,30分钟)

常规测试方法:要想找到最好吃的披萨烤制方案,你需要根据不同的高度、温度和时长方案来分别进行烤制,这样的方案组合一共有27种:

3种(烤架高度) X 3种(烤箱温度) X 3种(烤制时长) = 27种 (烤制方案)

采用这种方案,你需要烤制27个不同的披萨,然后再让专家从中找到最好吃的那一个。

结对组合测试方案:你只需要根据结对组合测试方法,列出包含每一对参数组合的最少测试用例集(也可以使用组合测试工具)

测试用例烤架高度烤箱温度烤制时长
150020
280025
3150030
480030
5150020
650025
7150025
850030
980020
结对组合测试用例

特点:通过上面的测试用例表,你就可以发现任意两个因素的所有选项组合已经被全部都被考虑到了。这就是结对组合测试方法的特点,使用最少的测试用例来覆盖所有的输入参数组合。

因此,采用这种测试方法,我们只需要分别烤制9个披萨,就可以从中挑出最好吃的一个。

如何生成测试用例集?

在课上老师举例的时候,也是三个因素,但每个因素只有2个选项,所以老师完全可以手动写出来测试用例集。上面我的例子扩展到了每个因素3个选项,要想手动写出来还是挺麻烦的。另外,结对组合测试的用例集的生成原理是基于组合数学原理的,通过系统化地覆盖每一对参数组合,才能确保测试的有效性和高效性。为了方便后续使用的时候生成测试用例集,这里给大家分享一个在线工具 Pairwise Online Tool, 直接输入你的因素和选项,然后点击 Generate Pairwise 按钮就可以下载获得生成的组合电子表格文件。

软件测试中的等价类划分

等价类划分(Equivalence Partitioning)是一种软件测试设计技术,用于在减少测试用例数量的同时确保测试的有效性。它的基本思想是将输入数据或条件划分为若干个等价类(Equivalence Classes),每个等价类代表了一组具有相似特征的输入数据。这些输入数据在程序的处理上会产生相同的结果,因此只需对每个等价类选择一个代表性的测试用例进行测试。

划分步骤

  • 识别输入条件:首先确定需要测试的输入条件或数据范围。
  • 划分等价类
    • 有效等价类:代表程序能够正确处理的输入数据。例如,如果输入要求是1到100之间的整数,那么1到100之间的所有整数可以视为一个有效等价类。
    • 无效等价类:代表程序无法正确处理的输入数据。例如,输入小于1或大于100的整数可以视为无效等价类。
  • 选择测试用例:从每个等价类中选择一个或多个测试用例进行测试。通常情况下,从每个有效和无效等价类中各选择一个测试用例即可。

等价类划分的优点

  • 减少测试用例数量:通过划分等价类,可以显著减少需要执行的测试用例数量,从而节省时间和资源。
  • 提高测试覆盖率:确保不同类型的输入都被测试到,提高了测试的全面性。
  • 简化测试设计:使测试设计过程更加系统化和结构化。