[概述]
很多的时候,测试人员只是将测试估算看作是纯粹的预测活动,即估算是为了更好的做测试计划,这个观点正确吗?
[正文]
测试估算是测试生命周期中重要的测试活动之一,它也制定测试计划(特别是测试进度计划)的重要输入。因此很多时候测试人员会将测试估算看作是纯粹的预测活动,即估算目的是为了制订测试计划,这个观点正确吗?
实际上,上述对测试估算的理解是比较片面的。假如在软件开发过程中要找到符合“海森堡不确定原则”的活动,那么估算将是其中的一个。测试过程可以简单的看成:测试人员对测试对象作出一个工作量估算,以此为基础对测试对象的测试内容、测试时间和测试质量等作出一个承诺,然后对测试过程进行控制使之达到这个目标。这里的控制包括各种测试活动,例如:删除了不重要的需求、有经验的测试人员替换了没有经验的新人等。除了这些测试控制活动之外,测试还会受到各种突发事件的影响,例如:需要为某个客户测试紧急的中间版本、关键的测试人员需要去支持其他项目的测试等。
测试控制活动和突发事件(简单而言,这些活动和事情都可以称为变更)都会影响测试估算的正确程度。有时候,最后完成的测试内容、测试活动与最初估算的对象可能差距很大,但是最后的结果假如和当初估算的类似,那么我们也认为测试工作满足了测试的估算。图1清楚的说明了这个理念。
图1 测试过程中各种类型的变更
由于测试过程中存在各种各样的变更和事件,它们常常会推翻测试估算中所做的各种假设条件和限制条件,例如:测试范围的假设、测试活动的假设、测试人员技能和知识的假设、测试优先级的假设等。因此纯粹的评判估算是否正确没有太多的意义,因为最初和最后的估算对象可能并不相同。
实际上,假如我们利用计划的测试资源,在保证测试质量的前提之下及时的完成了测试对象的测试内容,那么我们就认为本次测试符合了测试估算,尽管可能两者之间的测试对象并不完全相同。从这个意义上,我们将好的测试估算定义为“基于估算的结果,帮助测试人员控制和协调测试过程中的各种活动,使之满足测试范围、测试时间、测试资源和测试质量等方面的要求。”
为什么我们要追求好的测试估算?我们以旅游中选择旅行箱作为例子。假如你有一个小的旅行箱和一个大的旅行箱,在旅游的时候你更倾向于选择小的旅行箱,因为它方便携带特别是在乘机旅行的时候;而大的旅行箱需要通过托运的方式,不方便且耗时。现在你把衣服等都放在小旅行箱的边上(你的目标target),你认为这些衣服可以放进其中(你的估算estimate),然后你会怎么做?仔细的折叠衣服,按照顺序放进旅行箱,尽量不浪费任何空间,希望能够全部放进去。如果这样的方式并不能达到目的,你可能会用力的将衣服压下去,甚至努力的将旅行箱的盖子盖上(如坐到箱子上面)。如果还是无法将你期望的所有东西方进去,这时你有两个选择:少带一些衣服,或者选择大的旅行箱。
实际上,做测试项目也是同样的道理。测试团队常常发现项目测试目标和估算的时间及成本等之间存在差距。假如这个差距比较小,测试经理可以控制各种测试活动,如压缩进度、减少功能达到这个目标;如果差距很大,那么测试团队可能需要重现审视这个目标。
测试估算的目的并不是预测测试的结果,而是用来确定测试目标是否符合实际,如通过采取各种测试策略、测试方法和技术等达到目标。你选择的衣服和其他生活用品是否可以放进小的旅行箱中?还是必须选择大的旅行箱?如果你通过小的调整和努力,是否就可以选择小的旅行箱?项目经理等实际上也是希望得到类似的答案,如何在现有的条件下采取不同的策略和控制手段,尽量多的在小的旅行箱中放入衣服,而不是你能完全正确的估算小的箱子能放多少件衣服。
如果测试估算的结果和测试目标之间(如时间进度目标和工作量目标等)差距巨大,测试经理通过微调测试策略和应对措施并不能成功满足测试目标,这时就会出现测试活动不可控的问题。如果你努力折叠衣服和挤压衣服都无法将它们放进小的旅行箱中,你将不得不选择大的旅行箱,尽管它不是你的第一选择;或者你不得不将一些衣服和生活用品留在家里。
归纳一下:测试估算的目的并不是达到如何的完美和正确,我们的目标是通过好的测试估算、合理的测试目标和良好的测试控制之间的配合,使得最终的测试结果尽量接近最初估算结果。
相关链接: