在很多时候,产品(或项目)总不能如期地发布(或结项),发布期总在不断地推延,推延。大的产品有时会延迟一个月,几个月,甚至半年以上。这是个普遍现象,因为每个软件的测试过程都会受到诸多不定因素的影响。
近日,和业内同行聊起过如何控制产品的测试进度问题。我认为,延迟问题是无法避免的,但这种风险却可以尽量地降低。我不做测试已经8年了,但还是有一些深刻感悟:
一、制定切实可行的测试计划,制定和执行计划时注意几个原则:
1、务实原则
即,没有把握的事情,不轻诺;已经答应的事情,不失信。
测试计划应依据功能设计书制定,明确测试范围和发布条件,合理地分配和调度测试资源。并考虑版本的复杂度,和功能的成熟度,以及预期发布时间,实事求是地划分测试阶段,且对各种突发情况进行风险预估。
2、前紧后松原则
对于接手的任务,要做到"前紧后松,赶早不赶晚",尽力地按时、甚至提前完成。Bug的发现也尽量密集在集成测试阶段和系统测试初期。
3、重者为先的原则
各种事务"按类别"、"分优先级"处理。分清轻重缓急,重者为先。Bug的处理也以功能性错误、死机死锁、致命等优先级为高,边缘死角问题为低的原则。
4、提前进入原则
国内很多软件企业,由于受测试人手、测试人员的编码水平、以及公司对测试的认知程度等因素影响,很难做到由测试人员来做单元测试和白盒测试,更甭说从设计阶段开始了。但是,测试经理应该尽可能地参与到设计阶段,及早地了解需求动向,为测试前期做准备。测试团队则应提前进入到集成测试阶段,而不是从系统测试才开始。
因为,做过单元测试后,集成测试再由研发人员来做的话,则很容易产生懒散心理。集成测试阶段,测试人员的进入,则能和研发有效地互动起来,把许多明显的bug拦截在提交系统测试之前。早在1998年,我就提出这一想法并亲身实践。结论是,测试进入得越早,对后期的进度把控就越有效。
二、辅助自动化手段
自动化测试框架,虽然优点很多,但由于时间、人力、物力成本投入太大,以及企业对测试的重视程度、不同软件的不同特性等诸多因素,还有相当长的一段路要走。最起码从目前来看,完全采用自动化还不太现实。
所以,可以把自动化测试作为一种辅助手段。对于有规律的、重复性强的、大数据量的,可批处理的,以及压力测试等,采取自动化测试。