了解最新技术文章
在快节奏的软件工程和开发世界中,时间是宝贵的商品。随着更快地交付高质量软件的压力越来越大,确定测试用例的优先级对于软件测试过程变得至关重要。
在本文中,您将了解测试用例优先级划分的原则、确定测试用例优先级时要考虑的因素、技术等等。
测试用例优先级 (TCP) 意味着根据测试用例的重要性、功能以及对软件的潜在影响来安排您的团队运行哪些测试用例。
确定测试用例的优先级可确保 QA 在正确的时间执行正确的测试。这可能意味着首先测试关键功能,使用某些测试方法(例如黑盒测试)而不是其他方法,在较长的测试之前运行较短的测试,或其他允许您更快地发现风险并最大化 QA 团队时间的策略。
测试用例优先级适用于您手动运行的测试和自动运行的测试,尽管您对测试进行优先级排序的方式可能会略有不同。例如,您可以通过将某些自动化测试安排为在自动化 CI/CD 构建管道中的其他测试之前运行来确定其优先级,而确定手动测试(例如验收、探索性或其他功能测试)的优先级可能只涉及选择具有最高优先级的测试先跑。
确定测试用例的优先级并以最有效的顺序执行它们对于在开发生命周期中尽早检测软件中的错误至关重要。
Test case prioritization allows you to be more strategic with your testing and balance the time your team has to test — especially as the complexity of your application (and therefore the number of test cases) increases over time.
Although the prioritization of test cases is important regardless of your team’s development methodology, it is particularly important if your team uses an agile development process, where you have to start debugging as quickly as possible to keep up with the pace of releases.
As evidenced by the number of empirical studies and scholarly articles published by the IEEE around the topic “test case prioritization,” it can be an in-depth process involving sophisticated analysis, algorithms, and metrics like fault detection rate.
在实践中,确定测试用例的优先级通常需要了解您的软件、其关键功能、潜在风险和业务优先级。通过考虑以下因素,QA 工程师可以改进他们的测试用例优先级划分方法。
作为 QA 工程师,了解您正在开发的软件的关键功能至关重要。这些功能对于您的用户和业务来说是最重要的。例如,在电子商务应用程序中,结账流程是一项关键功能,因为它直接影响收入的产生。
评估潜在风险及其影响程度对于确定测试用例的优先级至关重要。评估风险通常涉及分析已识别风险发生的可能性以及风险发生时可能产生的潜在影响。
衡量风险的一种方法是考虑技术因素,例如故障倾向、故障严重性和代码更改,以评估与每个测试用例相关的潜在风险。
故障倾向不仅仅是发现故障的数量。当根据错误倾向对测试用例进行优先级排序时,优先级是根据以前版本的软件中需求的错误倾向程度来分配的。
根据计算机协会的说法,“面向对象类的故障倾向表明该类容易发生故障的程度。” 故障严重性是指“它对被测软件程序的影响有多大。严重程度越高表明错误/缺陷对系统功能的影响越大。”
您还可以更广泛地评估风险。提出诸如“该功能有多复杂?使用频率如何?它有多重要?可以帮助指导您的评估。考虑缺陷对客户的影响有多大。它有多明显?修复它有多困难?此缺陷会影响收入、客户保留率或忠诚度吗?根据这些问题,为每个测试用例的风险和影响分配一个值(定性或数字)。
在确定测试用例的优先级时,请牢记客户的要求和偏好。例如,如果您推出一项新功能来满足特定的客户需求,请优先考虑与该功能相关的测试用例。
测试用例的优先级应该与软件开发项目的总体业务目标保持一致。
测试用例优先级可以帮助 QA 工程师识别更高优先级的测试用例,并重点关注那些在故障检测和风险覆盖方面最具潜力的测试用例。使用以下技术确定测试的优先级可以确保测试工作集中在影响最大的领域。
在文本案例优先级排序的背景下,风险是指发生错误的概率。基于风险的优先级技术分析风险,以确定如果失败可能导致不必要问题的区域,并且高风险的测试用例优先于低风险的测试用例。
以下步骤可以帮助指导您的风险分析:
问自己以下正确的问题以帮助确定风险:
该功能有多复杂?
使用频率如何?
它对于功能有多重要?
修复缺陷有多困难?
该缺陷会对用户造成多大影响?
该缺陷会对收入产生多大影响?
解决潜在问题是什么以及每个问题发生的概率是多少。
计算每个问题影响的严重性。
基于历史的优先级考虑了软件中模块的故障倾向和故障严重性,以对测试用例进行优先级排序。这种方法使用历史数据(例如以前的测试执行结果和故障检测率)来确定测试用例的优先级。使用这种方法,您可以为过去检测到故障或故障检测率较高的测试用例提供较高的优先级。
基于需求的覆盖
基于需求的优先级排序侧重于对测试用例最关键或对软件功能影响较大的需求进行优先级排序。使用这种技术,测试用例被分配优先级,并且优先级较高的测试用例(最关键的)在优先级较低的测试用例之前执行。
基于覆盖率的优先级划分根据代码覆盖率对测试用例进行优先级排序,并确保首先测试代码中最关键的部分。这种优先级划分技术最常用于单元测试或自动化测试。基于覆盖范围的优先级划分的一些子技术包括:
总语句覆盖优先级:测试用例根据其覆盖的语句总数进行优先级排序。例如,如果 T1 涵盖 7 个语句,T2 涵盖 4 个语句,T3 涵盖 15 个语句,则根据此优先级,顺序将为 T3、T1、T2。
总分支覆盖优先级:分支覆盖解决应用程序中的所有执行或路径是否正在测试。在测试用例优先级排序的背景下,分支覆盖率是指条件的每个可能结果的覆盖率。
基于版本的优先级侧重于与最新版本软件中的新代码或修改代码相关的测试用例。它优先考虑针对受最近代码更改影响的区域的回归测试用例,以确保软件的稳定性。
基于成本的优先级考虑执行每个测试用例的成本,例如执行时间、资源和测试环境设置。通过这种方法,您可以确定测试用例的优先级,以最低的成本提供最显着的好处。
如果做得正确,TCP 可以最大限度地发挥测试过程提供的价值。以下是有效测试用例优先级的一些最佳实践:
让开发人员、QA 工程师和业务利益相关者(如果对您的组织有意义)参与优先级确定过程,以确保全面了解软件的需求和风险。加强协作有助于识别 QA 工程师在测试期间必须解决的关键功能和潜在问题。
在团队成员之间建立沟通渠道,分享关于测试用例优先级的见解、疑虑和建议。对软件的需求、风险和优先级的共同理解有助于简化测试过程并确保每个人都达成共识。
随着软件开发的进展,准备根据新信息(例如代码更改、错误报告或更改的需求)重新评估和调整测试用例优先级。定期调整您的测试用例优先级以适应变化,以确保您的测试套件是最新的并且您的测试工作与项目的目标保持一致。
定期评估测试用例优先级划分技术的有效性,例如基于覆盖范围、基于历史或基于风险的方法。使用故障检测率、执行时间和检测到故障的平均百分比 (APFD) 值等QA 指标来评估优先级划分工作是否成功,并根据需要进行调整。
回归测试可确保代码更改不会引入新的故障或对现有功能产生负面影响。随着测试套件的扩展,重要的是确定回归测试用例的优先级,以最大化故障检测并最小化测试执行时间。
专注于围绕关键领域、风险领域或关键业务驱动因素运行回归测试。在过去检测到故障的区域(例如应用程序中依赖系统集成的区域或特别脆弱的区域)运行回归测试也可能很重要。
图片:根据优先级组织 TestRail 测试用例存储库。
衡量测试套件的有效性对于确定优先级、设置基准和做出基于数据的决策是否成功至关重要。QA 工程师可以通过以下三种方式衡量其优先级工作的影响,并采取数据驱动的行动来提高测试套件的有效性。
为了衡量优先测试套件的有效性,必须定义相关指标。衡量测试套件有效性的指标包括:
测试覆盖率是指测试覆盖了应用程序总需求的多少。如果您的测试覆盖率较低,则意味着您有未经测试的需求,从而提高了交付代码时存在未检测到的风险的可能性。
测试覆盖率=(映射到测试用例的需求总数/需求总数)x 100。
图片:查看实时指标和统计数据,并生成高级可追溯性和覆盖率报告,例如 TestRail 参考文献的覆盖率。
缺陷检测率指标衡量测试期间发现的缺陷数量。高缺陷检测率表明测试套件有效地识别了缺陷。
每个需求的缺陷量指标衡量每个需求发现的缺陷数量。该指标可以识别应用程序中需要更多测试的区域,并可以揭示特定要求是否比其他要求风险更大。这有助于产品团队决定是否应该发布这些功能。
这些指标衡量执行测试套件所需的时间。更具体地说,测试时间揭示了团队或 QA 工程师在不影响软件质量的情况下创建和执行测试的速度。更好的测试用例优先级应该可以降低成本,当许多 QA 团队必须在特定预算内工作并密切关注他们计划花费多少费用来证明预算合理时,这一点非常重要。
根据DORA 报告,变更失败率是一个指标,用于确定在生产或发布给最终用户后导致失败的变更。
一旦识别和定义了相关指标,就必须实施收集已定义指标数据的流程。从您选择的指标中收集数据后,必须对其进行分析并评估优先测试套件的有效性。
在分析测试用例优先级的 QA 指标时,需要记住以下一些重要注意事项:
QA 指标只是指标,而不是绝对值。
不要依赖单一的 QA 指标来评估产品的质量。
您的 QA 团队成员应该了解正在跟踪哪些指标以及如何计算和衡量它们。
将分析重点放在确定应用程序中需要更多测试的区域以及可以减少测试工作的区域。
您可以利用测试管理工具来帮助记录估计和已用测试时间,比较多个测试运行、配置和里程碑的结果,并接收需求、测试和缺陷的可跟踪性和覆盖率报告。
必须根据数据收集和分析确定需要改进的领域,并对测试套件的优先级进行必要的调整。
例如,如果应用程序的关键区域的测试覆盖率较低,团队应优先考虑该区域的测试工作。另一方面,如果测试成本/时间很高,团队应该确定可以减少或加快测试工作而不显着增加风险的领域。
您可以根据分析进行的调整包括以下内容:
如果测试覆盖率较低,请考虑添加更多测试用例来覆盖缺失的区域。
如果缺陷检测率较低,请审查测试用例以确保它们有效地发现缺陷。一般来说,较高的缺陷检测率是可取的,因为它表明 QA 工程师和测试人员在向最终用户发布软件之前可以识别并解决更多问题。
如果测试成本/时间很高,请考虑优化测试流程或自动化更多测试。
如果变更失败率很高,请检查优先级策略以确保首先测试高风险区域。
衡量优先测试套件的有效性对于确保测试工作集中在应用程序的关键领域至关重要。通过定义相关指标、跟踪和分析测试数据并根据这些结果进行调整,测试团队可以提高测试套件的有效性。
在敏捷环境中工作时,您必须更具战略性地进行测试,并确定运行测试的优先级,以跟上发布的步伐并最大限度地提高风险覆盖率。测试用例优先级有助于确保您的团队首先执行最关键的测试用例,从而最大限度地提高故障检测和风险覆盖率。
通过采用测试用例优先级划分技术和算法,QA 工程师可以优化其测试流程并提高软件开发项目的整体质量。
图片: TestRail 的详细报告比较多个测试运行、配置和里程碑的结果,帮助您轻松记录估计和已用测试时间以进行准确的时间跟踪,并为您提供可追溯性和覆盖率报告,以帮助您满足合规性要求。