回归测试:优先级
介绍
 在确定优先级时,我们的目标是为测试用例找到一个好的顺序。理想情况下,我们希望尽早发生任何故障。这可以加快整体开发过程,例如:
 有时,一旦发现失败,我们就会停止测试。
 即使我们计划执行所有测试用例,我们越早发现失败,我们就可以越早开始尝试修复代码。
 问题:我们事先不知道哪些测试用例会导致失败。
 因此,我们无法在测试前知道“最佳”顺序。
 相反,我们使用相关的指标和历史信息有缺陷:
 我们优先考虑被认为更有可能导致失败的测试。
 我们还致力于快速扩大覆盖范围。
 希望:通过这样做,我们更有可能早点发现错误
使用覆盖
 我们可能只看覆盖率。
 我们的目标可能是:
 尽快达到 100% 的覆盖率。
 最大化给定预算的覆盖范围(例如测试用例的数量)。
 无论何时停靠,“快速”实现覆盖以获得“良好”覆盖
贪心算法可能是次优的suboptimal
 
 Coverage 的适应度函数Fitness function
 考虑分支覆盖率(许多其他指标类似)。
 我们如何为特定的测试顺序给出“分数”/适应度
 案件?
 我们想要奖励对所有前缀都有利的订单。
 标准方法:使用加权平均百分比
 覆盖测试用例序列。
 如果我们有 n 个测试用例,m 个分支,TBi 是第一个执行分支 i 的测试用例的编号,那么适应度为:
 
 优化
 类似于最小化,我们可能有多个目标
 例如:
 (1)覆盖形式不同。
 (2) 对历史故障部件进行优先测试。
 (3)基于故障预测技术对元器件进行优先测试。
 有可能再次使用多目标优化。
概括
 在某些情况下,将使用给定的测试套件:
 回归测试; 持续集成
 最小化和优先化都有好处。
 两者都可以表示为优化问题。有许多不同的优化方法,从
 多目标进化的简单贪心算法算法。



















