为了提高测试估算的准确性和可控性,首先需要定义合适的测试估算过程。假如测试估算过程是混乱的,即没有合适的定义估算的输入、步骤和输出,那么估算的输出常常会因为和项目目标之间的差距而遭到责难。责难的目的是尽量减少测试估算的结果以满足项目的目标,导致在测试输入不变的情况下,人为的改变测试估算的结果。

假如合适的定义了测试估算的输入和步骤,那么随意更改估算的结果将是不允许的。尽管利益相关者不满意测试估算的结果,但是更改该结果的合理的行为应该是更改估算的输入得出新的输出,而不是为了满足某个目标而有意识的调整估算结果。图1是建议的测试估算过程。

1 测试估算过程

合适定义的测试估算过程,详细考虑了测试对象的特定信息,例如:产品类型、测试范围、优先级和重点,以及某些假定条件等。估算过程中可以不断的调整这些输入信息,直到最后的估算结果符合可接受的要求,这是和混乱测试估算过程处理完全不同的。测试历史数据,如以前项目测试的测试执行速度等,也是测试估算过程中的重要输入。测试历史数据是不能调整的,特别是为了满足测试的目标而有意识的调整它。

测试团队理解估算、目标和承诺三者之间的区别,有助于更好的开展测试估算活动。假如估算结果并不符合目标的要求,测试团队可以更加谨慎的考虑是否给出当前的承诺。但,不管如何,测试团队都不应该由于这个原因改变测试估算本身。

在测试估算过程中,有的时候我们需要在项目的早期,甚至在没有具体的需求之前具体的测试对象规模,例如:测试用例的数目,这就需要我们通过直觉或者人为判断的手段估算测试对象的规模。而后续的测试工作量和测试时间进度等可以通过测试规模进行估算,当然后续的这些估算需要依赖于测试团队的生产率。图2表示了估算之间的关系。

2 测试规模、工作量和进度的关系

但是测试工作量和进度的估算,也不一定是基于测试规模开展的,具体的过程需要考虑测试估算所采用的具体方法。合适定义的测试估算过程应该具备下面的特征:

1)在可能的情况下,尽量采用计数和计算的手段进行估算,而尽量避免直觉和判断的手段;

2)在测试估算过程不同阶段采用不同的测试估算技术,并对结果进行比较;

3)测试估算过程应该是相对稳定的,假如有某些变更,应该通过文档化的方式进行记录,并进行评审;