在测试计划和控制阶段,一个非常重要的测试活动是进行软件测试估算。测试估算得到的结果是制定测试计划的基础,同时也是测试资源安排、测试过程监控的主要输入。测试估算的正确与否,直接影响了测试活动的开展。尽管精确地测试估算很难,但是测试经理应该尽量在已有的条件下,利用合适的方法和技术降低测试估算的误差,以满足不同测试阶段的要求。
在测试估算中,测试的规模通常指的是测试用例的数目,而一般不用开发工作量估算中的代码行或者功能点表示。测试工作量通常是基于测试规模展开的,但并不是所有的估算技术都是基于测试规模的,例如:基于百分比的估算方法。测试工作量的单位可以采用人年、人月、人周或者人天来表示(在本节中,测试工作量采用的单位是人周)。
测试估算是系统和持续的过程,应该尽早开始。在对项目有所了解的情况下就可以开始进行粗略的估算,随着对系统了解的深入和相关文档的不断完善,在后续阶段可以进行更加精确的估算,从而对前面的粗略的估算进行相应的更新和修正。下图显示了随着测试活动的不断开展,测试估算越来越接近最终的实际结果。
估算阶段和估算精度
高精度的估算很困难,也不是必需的。针对测试对象进行合理的估算可以帮助测试经理制定合理的计划,使测试活动尽量满足测试计划,并在可控的范围内对测试计划进行更新和调整。实际上,在对测试对象进行估算的时候,通常很难判断估算的精确性。因为估算的准确与否,只能通过测试对象的实际数据与估算得到的数据进行比较之后,才能进行判断。
既然测试估算非常困难,那么什么是一个好的估算呢?测试估算作为测试管理活动之一,是为了获得特定业务或项目中各种活动的近似成本预算、工作量估算和完成日期。因此,好的估算应该具备以下特点:
● 估算结果代表有经验的同行的集体智慧,并能得到项目利益相关者的支持。
● 估算结果可以对测试对象和测试过程提供全局的视野,例如:明确而详细的资金、资源、任务和项目利益相关者列表等。
● 估算结果可以保证测试团队对时间、成本、范围等的承诺处在一个合理的范围。
● 估算结果是针对每个估算的活动提供最可能的成本、工作量和持续时间。
● 估算结果有助于整个测试过程的有效监控和管理。
● 估算结果有助于更好地实现测试的目标,在测试估算、测试承诺和测试目标之间达到一个较好的平衡。
测试估算可以自底向上进行,也可以自顶向下进行。在测试估算中,通常可以使用下列技术:
● 直觉和猜测。
● 过去的经验。
● 工作分解结构(WBS)。
● 团队评估会议(例如:Wide Band Delphi法)。
● 三点估算方法。
● 测试点分析(TPA)。
● 公司标准和规范。
● 测试占整个项目工作量的百分比或人员编制比例(例如:测试人员与开发人员的比例)。
● 组织的历史和度量标准,包括基于度量标准的模型,该模型用于估算缺陷数、测试周期数、测试用例数、每个测试的平均工作量以及回归测试周期的数目等。
● 行业平均值和预估模型,例如:测试点、功能点、代码行数、估计的开发工作量或其他项目参数等。
在多数情况下,测试团队得出测试估算结果后,需要将结果提交给管理人员,并说明测试的价值。理想情况下,最终的测试估算结果平衡了组织和项目目标在质量、时间、预算以及特性方面的要求。