📜  软件测试中的测试用例优先级

📅  最后修改于: 2021-08-25 10:41:02             🧑  作者: Mango

顾名思义,测试用例优先级是指根据不同因素对测试套件中的测试用例进行优先级排序。因素可能是代码覆盖率,风险/关键模块,功能,功能等。

为什么要优先考虑测试用例?
随着软件大小的增加,测试套件也会越来越大,并且还需要付出更多的精力来维护测试套件。为了尽早发现软件中的错误,对测试用例进行优先级排序很重要,这样重要的测试用例才能首先执行。

测试用例优先级的类型:

  • 一般优先级:
    在这种类型的优先级划分中,将对可用于产品的后续修改版本的测试用例进行优先级划分。它不需要有关产品中所做修改的任何信息。
  • 版本–具体优先级:
    还可以确定测试用例的优先级,以使其对特定版本的产品有用。这种优先级排序需要有关产品中已引入的更改的知识。

优先技术:

1.基于覆盖率的测试用例优先级划分:
这种类型的优先级基于代码覆盖率,即测试用例根据其代码覆盖率进行优先级排序。

  • 报表总覆盖优先级–
    在这种技术中,测试用例覆盖的语句总数用作优先考虑测试用例的因素。例如,覆盖10条语句的测试用例将比覆盖5条语句的测试用例具有更高的优先级。
  • 附加语句覆盖优先级–
    该技术涉及迭代地选择具有最大语句覆盖率的测试用例,然后选择覆盖先前测试用例未发现的语句的测试用例。重复此过程,直到覆盖所有语句为止。
  • 分支机构总覆盖优先级–
    使用总分支覆盖范围作为订购测试用例的因素,可以实现优先级排序。在这里,分支覆盖率是指条件的每种可能结果的覆盖率。
  • 额外的分支机构覆盖优先级–
    与其他语句覆盖技术类似,它首先选择具有最大分支覆盖率的文本用例,然后迭代选择覆盖先前测试用例未发现的分支结果的测试用例。
  • 潜在故障总优先级–
    故障暴露潜力(FEP)是指测试用例暴露故障的能力。语句和分支覆盖技术没有考虑以下事实:某些错误可能比其他错误更容易检测到,并且某些测试用例比其他测试案例更有可能检测到错误。 FEP取决于:
    1. 测试用例是否包含错误的陈述。
    2. 错误的陈述将导致测试用例失败的可能性。

2.基于风险的优先级划分:
该技术使用风险分析来确定潜在的问题区域,如果这些区域失败,可能会导致严重的后果。因此,应优先考虑测试用例,并牢记潜在的问题区域。在风险分析中,执行以下步骤:

  • 列出潜在的问题。
  • 分配每个问题的发生概率。
  • 计算每个问题的影响严重性。

完成上述步骤后,形成风险分析表以呈现结果。该表由诸如问题ID,已识别的潜在问题,影响的严重性,风险暴露等列组成。

3.使用相关分片确定优先级:
在这种类型的优先级划分中,使用切片技术–修改程序时,将执行所有现有的回归测试用例,以确保程序可以得到与以前相同的结果,除非已对其进行了修改。为此,我们尝试找到受修改影响的程序部分,然后对该受影响的部分执行测试用例的优先级划分。切片技术分为三个部分:

  • 执行切片–
    在测试用例下执行的语句形成执行切片。
  • 动态切片–
    在测试用例下执行的语句可能会影响程序输出。
  • 相关切片–
    在测试用例下执行的语句不会对程序输出产生任何影响,但可能会影响测试用例的输出。

4.基于需求的优先级划分:
有些需求比其他需求更重要或本质上更为关键,因此应首先确定这些需求的测试案例的优先级。在根据需求确定测试案例的优先级时,可以考虑以下因素:

  • 客户分配的优先级–
    客户根据自己的需求或对产品需求的了解,将重量分配给需求。
  • 开发人员认为实现的复杂性–
    开发人员根据实现该要求所需的努力或时间来分配优先级。
  • 需求波动–
    这个因素决定了需求变化的频率。
  • 需求的故障倾向–
    优先级是根据以前版本的软件中容易出错的要求分配的。

衡量优先测试套件有效性的度量标准:
为了衡量优先测试套件的有效性,我们可以使用称为APFD(检测到的故障的平均百分比)的度量。 APFD的公式由下式给出:

APFD = 1 - ( (TF1 + TF2 + ....... + TFm) / nm ) + 1 / 2n

where, 
TFi = position of first Test case in Test suite T that exposes Fault i
m = total number of Faults exposed under T
n = total number of Test cases in T 

AFPD值的范围可以从0到100。APFD值越高,故障检测速度越快。简而言之,APFD表示测试套件可以多快地识别软件中的故障或错误。如果测试套件可以快速检测到故障,那么它被认为是更有效,更可靠的。