前段时间,从朋友(某个项目的测试经理)那里了解了一件事情:和项目经理沟通测试计划的时候,他没有很好的理解项目经理的真实意思,从而使得他们两个在沟通内容方面出现了很大的分歧,导致该项目经理对他很有意见。下面是模拟当时他们谈话的场景:

项目经理:你认为这个项目的测试需要多长时间?我们需要在2个月之内发布该产品,从而有时间参加浙江电信的入网测试。我无法给你提供更多的人力资源,你只能依靠目前测试团队的成员开展测试工作。这是这个产品需要实现的功能列表。

测试经理:好的,我看看该产品的功能列表,等会给你反馈。

15分钟之后,测试经理回到项目经理的办公室。

测试经理:根据以前项目的经验,和当前测试团队的状况,我觉得该产品的测试需要花费4个月的时间,即需要20个人月的测试工作量。

项目经理:什么?需要4个月的时间?我刚才不是和你说了吗?我们需要在2个月之内完成整个产品的测试任务,并参加客户的现场测试。

朋友和项目经理经过这次会话之后,感觉压力很大,担心项目经理会对他有什么想法。安慰了他之后,我觉得这种情形在测试过程中可能也会经常发生,有必要对测试估算相关的概念进行简单的阐述,使得大家在相同理解的水平上进行测试估算和计划等方面的沟通,以避免出现类似的分歧。

根据上面项目经理和测试经理沟通的内容,可以发现其中的3个不同的概念:

1)目标(target):项目经理说该产品必须在2个月之内完成测试工作,并参与客户现场的测试。这里的2个月就是项目经理的目标;

2)估算(estimate):测试经理认为针对该产品的测试需要的工作量是20个人月,这里的20个人月是测试人员估算的结果;

3)承诺(commitment):根据测试工作量20个人月,以及测试团队为5人,得出的测试时间4个月。这里的4个月是测试经理对项目经理的承诺:即我承诺在4个月之内完成该产品的测试任务;

假如大家理解了目标、估算和承诺之间的含义,就可以明白项目经理和测试经理之间的分歧出在哪里?项目经理告知测试经理的时间是他的目标,而测试经理反馈给项目经理的是测试工作量的估算和承诺时间。大家实际表达的内容是不一样的,因此出现这种分歧是不可避免的。

简单而言,公司或者项目从商业等方面考虑会确定整体的目标,而测试的所有工作都需要在这个目标之下工作。该目标并不依赖于测试人员得到的测试估算,同样,强制确定的目标也并不代表它是可以实现的。而测试的承诺并不一定和测试估算相同,它可以比估算更加激进或者保守。也就是说承诺也并不一定和测试估算一样。

测试估算是进行测试计划的基础,因此,我们有必要讨论一下测试估算和测试计划之间的关系。首先,测试计划和测试估算是两个不同的概念,测试计划并不是测试估算,同样,测试估算也并不是测试计划。我们认为测试估算是客观的分析过程,而测试计划则是主观的,并且以达到某个结果为目的的过程。因此,测试估算的目的是如何得到准确的数据,并不是为了查找某个特定的结果。但是,测试计划是为了达到某个目的,我们会有意识的调整测试计划,例如:采用特定的技术和手段,以得到特定的输出和结果。

因为测试估算和制订的目标并不一定是相同的,因此测试计划的一个重要目的是协调测试估算和目标之间的差距。假如目标和测试估算得到的结果相差甚远,那么测试计划需要体现这种差距,并分析其中存在的风险。

测试估算是测试计划的基础,准确的测试估算可以为测试活动的开展提供更好的支持,其作用主要体现在:

1)根据测试估算创建详细的测试时间进度计划;

2)识别测试的关键路径;

3)根据测试估算和目标,确定测试的优先级和重点;

4)根据测试估算和目标,确定测试资源的合理分配;