测试计划主要是进行描述测试需求、分析制定测试计划工作。在制定测试计划时,经常有人认为测试计划是在整个项目计划制定之后才开始进行测试计划的,事实上并不是这样的。测试计划和项目计划是互相影响的。举个例子。假设项目有进行性能测试的需求,但是测试工具又需要学习,那么我们在测试计划中就需要预留这部分的时间,还有,测试用例的评审,也需要预留时间。或者,如果某部分比较复杂,可能测试需要的时间会较多,或者需要测试的次数会比较多,那么可能要求开发组先安排这个核心模块的开发,这样需要调整开发计划的顺序。所以,测试计划和项目计划是互相影响的。在测试计划环节还包括测试需求的描述,主要是确认需求是可测试的,并将需求细化为具体的可测试点,保证测试设计时可以根据测试需求编写测试用例,而避免遗漏测试点。我们的测试需求需要得到业务分析人员的评审,测试计划要得到pm的审批认可。
对于测试计划,还需要说明的是,在具体的每个测试阶段工作计划中,我们需要定义本阶段测试需要进行的次数。每一轮测试是一个完整的测试周期,按照这里介绍的测试过程进行。通常我们是一天一轮测试,最多是两天一轮测试。通过这种方式,减少了测试和开发之间的空挡时间,即测试等开发,开发等测试。
肯定会有人疑问,一个系统庞大的时候,怎么能在一两天内完成测试呢?是的,如果系统比较大的话,确实没法在一两天内完成一次所有测试点的全面测试,有可能需要一周或更长的时间,但是这样的话,就出现了测试、开发互相等待的情况了。所以,在我们制定的测试阶段计划时,需要指明本次测试的测试重点,测试范围。我可以这一轮测试进行A、B模块基本功能测试,第二轮测试进行C、D模块基本功能测试,第三轮测试,进行主要业务流程测试,第四轮测试,关注负面测试。在我之前的实践中,发现这种方法还是比较有效的。可能大家也注意到了,这个例子是另一个项目的。没错,在今天提到的移动的这个项目中我们就没有对测试阶段进行迭代,弄得当时我们测试小组工作很累,很被动,经常是开发说测试我们就要马上开始测试,而缺乏计划。实施这种方法后,测试的计划性就比较强,测试不用总是被打扰。
测试设计,主要是根据需求、设计文档进行的测试用例设计工作。(如何从需求导出测试用例)设计测试用例,是整个测试过程中很重要的一部分工作,关系到测试执行效果。但是在刚开始时,系统没有界面,所以我们只能根据系统用例搭建测试用例的初步框架,能写多少写多少。随着对系统的理解深入,加上后面也开发了系统原型,我们就可以不断完善测试用例。即使是在测试阶段,我们仍不断修改测试用例。测试用例我们分为两种,一种是内部测试用例,项目组内部使用;一种是验收测试用例,偏重于业务,供客户使用。
从图中大家也可以感觉到项目组内部使用的测试用例在维护上比较不方便。因为我们的需求并没有做到很细,加上需求本身就是变化的,所以我们的测试需求经常修改,一旦测试需求新增、修改、删除时,测试用例要相应进行调整。这就造成了1)定位测试用例比较不方便,2)测试用例编号修改不方便,3)阅读、执行测试用例不方便。所以,2004年底开始准备团队自己开发一个测试用例管理系统。
在测试执行阶段,主要进行测试的执行工作。如果项目有需要编写或录制测试脚本的话,那么也在这个阶段进行。测试执行结果是在原有测试用例的副本上编写实际执行结果而形成。
在测试执行结束后,我们开始对测试执行结果进行测试分析并编写测试报告。测试报告的编写上,主要的内容在于对投入的资源、测试结果、缺陷进行分析,并对整体测试情况进行总结分析。对于资源的分析,包括各个测试任务投入的人力情况、实际工作量与计划工作量的对比,并进行分析。测试结果分析,可以通过对测试需求的覆盖情况、测试用例的覆盖情况及测试用例执行结果情况进行统计,并进行分析。缺陷分析,可以通过对严重性、优先级、模块缺陷数、缺陷修复情况等方面进行统计,并分析。例如,本次系统缺陷存在可用性问题,如修改操作员所属的组后,无法登录系统等。整体情况的总结可以从测试充分性、软件质量情况、测试活动情况、经验教训等方面进行总结。
注:本测试过程对于每个阶段的测试活动、每一轮测试活动、测试团队承接的各种测试类型均适用。
也就是说,每一轮测试之前,测试组leader需要准备测试计划,确定测试执行重点、目标、测试内容等,选取测试用例,并按照预先选取的测试用例执行测试,测试执行结束,需要进行测试汇报。
因为测试经验教训是很重要的,所以我们团队有专人负责对每个项目测试报告中的经验教训进行汇总,目的让后面项目测试工作可以吸取前面项目测试的经验,避免犯前面项目测试工作同样的错误。
在测试过程中有个很重要的内容是:测试准则。
在实际执行中,我们不难碰到以下类似情况:提交测试的系统经常在测试执行初期,就出现页面访问失败或者正常功能失效的情况;测试人员不知道提交测试的版本改了什么东西或者新增了什么功能,改了哪些缺陷,导致经常碰到开发人员说测试人员提交的某些缺陷所对应的功能不属于本版本测试内容等等。存在这些情况的很大一部分的原因是因为在项目策划阶段时,测试组未就测试准则和项目组达成一致意见,或者已经达成一致,但是并没有严格执行。我们今天要讲的测试准则,主要是针对前者,后者属于管理层面问题,不在我们的考虑范围内。
测试准则,包括测试进入、暂停、恢复、退出准则。这些测试准则的例子如幻灯片所示。只要是导致暂停测试的的问题不存在后,就可以恢复测试。恢复测试时,一般是需要把前面测试内容重新进行测试。
上面的测试准则的例子,也不是很恰当及规范,至少缺少了数据度量部分,这里只是拿出来和大家一起交流。这部分内容我一直认为是很重要的,如果做的不好,测试组的负担会很重。
需要注意的一点是:测试准则,是在制定测试计划时沟通确定的,它需要和相关人沟通,且得到pm审批通过的。
在实际测试过程中碰到同样的问题,是否继续测试,或者需要暂停测试,处理方式不是一成不变的,这是需要根据项目所处阶段来具体情况具体分析的。