paint-brush
软件 QA:通过组合测试设计解决问题经过@shad0wpuppet
26,163 讀數
26,163 讀數

软件 QA:通过组合测试设计解决问题

经过 Konstantin Sakhchinskiy5m2024/01/22
Read on Terminal Reader
Read this story w/o Javascript

太長; 讀書

软件测试中的挑战,特别是组合测试设计(如 k-way 和成对测试)中的挑战。我讨论了诸如不正确的输入、稳健的测试方法和变量组合等问题。通过案例研究,我强调了未检测到的故障的普遍性,并强调需要采用细致入微的测试方法,考虑默认设置和复杂的变量相互作用。关键要点是针对稳健软件的全面测试策略的重要性。
featured image - 软件 QA:通过组合测试设计解决问题
Konstantin Sakhchinskiy HackerNoon profile picture


软件测试中,测试用例的设计是确保应用程序可靠性和健壮性的基础。组合测试设计技术,例如 k 路测试和成对测试,旨在测试不同输入变量之间的相互作用。然而,很明显,挑战和陷阱可能会阻碍他们发现关键错误的有效性。


这篇简短的文章重点讨论组合测试设计过程中可能遇到的具体问题,探讨需要仔细考虑的细微差别。让我们深入研究错误输入值的实例、强大预言机的重要性、经常被忽视的变量组合的重要性,以及对变量如何相互作用的重要理解。


输入值识别正确

k 路测试集包含 k 个变量值的所有可能组合。例如,应用 Allpairs 算法会产生 2 路测试集,其中包含变量值对的所有可能组合。因此,k 路故障是指由 k 个变量的值相互作用而产生的错误。检查两个系统 SYS1 和 SYS2,在其生产版本发布后发现了错误。两个系统均经过 k 值 2、3、4 和 5+ 的 k 路测试。


该表显示了两个系统的 k-way 测试结果。

故障类型

系统1

系统2

2种方法

30

29

3路

4

12

4路

7

1

> 4路

7

3

未找到

34

43


对每个 k 路组进行顺序检查。图 2.1 表明,由两个或更少输入变量相互作用产生的误差29 in SYS130 in SYS2 。三个变量相互作用产生的误差4*(30+4) in SYS212*(29+12) in SYS1 。对于涉及四个变量的交互, 7*(30+4+7) in SYS2 1*(29+12+1) in SYS1 。与四个以上变量交互产生的误差3*(29+12+1+3) in SYS17*(30+4+7+7) in SYS2 。值得注意的是,在 SYS1 中未发现43 个错误,在 SYS2 中未发现34 个错误。


在此示例中,最严重的错误属于“未找到”类别。进一步的调查显示,大多数未检测到的错误都是单向错误,这意味着一个变量的特定值导致了独立于其他变量值的错误。成对测试本应检测到这些错误,但由于某种原因,它们仍未被发现。这些“未找到”错误主要是单向故障,由于未选择或选择了错误的某些输入值而未被注意到。


问题的本质在于,在应用 Allpairs 算法之前犯下的任何错误都会持续存在。这意味着,如果以前的测试设计技术应用不正确或输入值不正确,则无论使用全对算法还是正交阵列测试,应用程序中的错误都将持续存在。


定义预期结果的弱点:结果的不确定性

作为示例,让我们考虑一个具有大量选项(类似于此形式)的应用程序模块,因此具有大量输入数据组合。


在模块中,假设有2^12 * 3种可能的组合。在这里,挑战不在于选择不正确的输入值,因为可以使用 Allpairs 算法彻底测试所有可能的变量值。然而,这能揭露所有严重错误吗?由于预期结果存在问题,可能不会。在操作此类软件模块中的每个选项组合后,需要使用系统一段时间来验证这些选项是否正常工作,并且在应用所选选项后没有其他任何问题。在这种情况下,不能保证不存在容易被遗漏的微妙的、不明显的问题。


每次测试后,可能需要彻底评估系统的核心功能。这里的要点是,严重的缺陷通常并不像人们希望的那样明显,并且在预期结果中考虑到所有内容实际上变得不可能。


不注意最可能的组合

2^12 * 3种组合中(正如我们在上面的示例中建议的那样),可能有一种模块选项组合比所有其他组合出现的频率更高 -默认设置。如果 95% 的人永远不会更改此模块的默认设置选项,那么应该有很好的几乎/接近默认选项的覆盖范围。在一个选项中测试与默认配置有偏差的所有变体将导致 2 位数的测试。如果测试所有选项组合,并在两个设置中可能与默认值存在偏差,则需要大约一百个测试用例。使用这些测试用例和全对测试用例进行测试可能会比忽略默认选项的存在产生更好的结果。然而,Allpairs 算法迫使测试人员忽略最可能和最常用的变量组合。


未知的变量相互作用

成对测试成功或失败的关键因素在于理解输入变量的组合如何影响输出数据。将成对测试应用于两个不同的测试应用程序可能会产生显着不同的结果。一些应用程序使用较少的输入数据来生成输出数据,而其他应用程序则使用更多的输入数据。


例如,考虑该程序,它具有三个输入变量(X、Y、Z)和三个可能的输出数据(1、2、3)。箭头指示哪些变量应该相互作用以产生特定结果。为了获得结果 1,变量 Y 和 X 必须相互作用;为了获得结果 2,变量 Z 和 X 必须相互作用。对于此应用,应用成对测试将是一个合适的选择,并且很可能会得到积极的结果。然而,在某些情况下,输出数据是由两个以上输入变量相互作用产生的,成对测试很可能无法识别错误。简单地应用成对测试会增加忽略测试应用程序中关键错误的风险。


作为 QA 专业人员,了解这些细微差别很重要。虽然在某些情况下是理论上的,但这些见解强调需要一种超越表面的整体测试方法,以确保应用程序的可靠性和稳健性。了解组合测试设计的复杂性使 QA 专业人员能够有效地测试应用程序的复杂业务逻辑,并向用户提供高质量的软件。