相信大多数的软件测试工程师都听说过或者简单了解过测试计划,但是你真的知道什么是测试计划么?你真的知道如何编写测试计划么?
大多数人应该是一脸茫然。
百度的结果五花八门,有没有相对规范的标准呢?答案是没有,至少我没有找到。
那么今天我就结合经验和对一些国内技术前沿的公司跟大家聊一聊什么是测试计划以及如何编写测试计划。
计划的必要性
在我们日常的工作和生活中,经常需要做计划。古人云:凡事预则立,不预则废(《礼记.中庸》),也就是强调预先计划的重要性和必要性。
我们做项目,项目需要定项目计划;测试作为项目中的一部分,当然也需要制定测试计划。
- 测试计划就像是我们写论文一样,首先做好提纲,才能一步一步的完善填充,有了测试计划就掌握了整个项目的进度和方向,在工作中可以有个指导的作用,不至于偏离工作方向
- 测试计划规定预期的目标,以什么样的程度完成和在预期多久内完成,这样的规定能够使工作人员做好心理准备,合理的期限和目标能够使工作人员不松懈,有效率的完成一个项目
- 计划作为对未来工作的规划,肯定会受到突发的或者不稳定的因素影响而导致整个项目出现延期甚至无法进行的结果。因此计划中对于风险评估的必要性就在于罗列出影响整个项目进行的因素,并制定相应紧急方案,将损失降至最小化。
- 人员的安排呈现合理化。任何一个项目内的工作都有难易繁简的划分,因而才需要有专长的工程师进行对应的测试。难度较大的由资深测试人员安排,难度小的由新进实习生来进行,整个项目的进行就会显得合理化层次化条理化。同时将职责清晰地具体划分到个人身上,也有利于日后的纠错,及时发现哪个环节出现问题。
- 测试计划的制作是在需求分析完成之后所进行,所以测试计划的执行在一定程度上也是对需求分析的进一步的检验,若在制定过程中,发现有不合理的因素存在,还能及时反馈,进行调整,不至于使众多的人力做了无用功。
- 测试计划的安排也是一个项目中多个部门间合作的工作指导,一环扣一环,工作的交接在时间上做好详细的备注,才能让部门的合作显得默契。
一个测试计划制定者的素养
- 有多年从事测试工作的经验,能够条例清晰的罗列出测试中的流程和应当留心的步骤,以及不可缺少的风险规避的意识
- 对于部门的员工能力要有一定程度的了解,才能合理的安排工作内容
- 高压下的冷静处理能力,一旦项目出现突发的严重问题,能够冷静找出出错环节。
- 人际沟通的能力,一个测试计划也是有与其他部门之间的合作关系,需要与其保持及时有效的沟通,了解到他们的需求
那么我们什么时候来做测试计划呢?
一般来说,在产品需求确认,做过测试需求分析之后我们就要开始编写测试计划。当然测试计划编写的工作要根据工作实际来决定,也就是具体情况具体分析(政治课学的哈~)
其实,要想做好测试计划必须有一定的测试经验。那么下面我就结合工作实际,跟大家聊一聊测试计划的内容。
测试计划的内容
- 测试范围 明确测什么?比如:产品的具体业务需求有哪些?产品是web端的还是移动端的,还是两者都有?
- 测试策略 明确怎么测。对不同业务需求,具体要有哪些测试类型、测试场景、测试方法。
- 资源安排 包括测试人员的安排,测试环境是怎样的,测试工具的选择等。
- 进度安排 在明确测试范围、方法和人员之后,我们要考虑什么时候开始测试,预计要测试多久?以便和开发计划、上线计划衔接。
- 发布标准 发布标准是测试完成和产品上线需要满足的条件,以便项目内所有角色都有一致认可的目标。怎样才算是测完了?达到怎样的标准才可以上线?
- 风险预防 最后,我们需要对整个测试过程中可能存在的风险,以及当这些风险发生时的应对措施提前进行一些考虑和准备,并在测试计划中体现出来。
我们把这些内容模板化,形成测试计划的模板。无论是在实际的工作中还是大家学习编写测试计划,都可以用这样的模板来使用。
首先我们的依据是项目的交互稿和需求分析结果。
交互稿:
功能分析结果:
第一步我们来明确测试范围
测试范围的确定来自于需求文档,比如本次需求的目标:要求用户可以成功参加课程。我们功能测试需求分析的结果为用户成功参加课程,涉及到浏览课程、参加课程、学习课程三个模块。
然后考虑兼容性测试、性能测试这些测试类型。我们把我们分析的结果填充到模板中的测试范围这一节中,明确需要测试的也无需求和需要测试的测试类型。
接下来我们来写测试策略的内容
我们要根据不同的测试类型考虑不同的测试方法,对于功能测试,我们根据需求分析的思维导图和功能测试的测试用例覆盖浏览课程、参加课程、学习课程三个模块就可以了;兼容性测试,我们要根据产品的应用场景来考虑,比如IE、Chorme、ios、android、不同机型等等;性能测试,根据产品架构、预估数据、线上数据来判断需要执行性能测试的功能接口(比如登录接口);接口测试,安全性测试等等要根据实际的项目需求来确定。
然后我们将需要用到的测试类型按照测试场景、测试方法等以引用文件的形式填写到测试计划中去,以便让所有项目人员清楚的知道要做哪些测试工作以及怎么做。
如果对软件测试、接口测试、自动化测试、性能测试、LR脚本开发、面试经验交流。感兴趣可以175317069,群内会有不定期的发放免费的资料链接,这些资料都是从各个技术网站搜集、整理出来的,如果你有好的学习资料可以私聊发我,我会注明出处之后分享给大家。
接下来我们要考虑测试人员的分工和测试资源的分配
比如说,测试人员数量不够或能力不够的时候,就要额外申请测试人员。
测试资源我们一般包括两方面:测试人力资源和测试环境资源。测试人力资源包含两个维度:测试人员数量和测试人员经验、能力。环境资源一般包括:
在我们的测试计划中,测试人员分配、测试环境资源、网络资源、工具使用都要明确写出来。
接下来,需要做测试进度安排。
测试工作的进度安排依赖于开发工作的节点和提交测试进度的时间,并且直接影响预期的上线时间。所以我们需要根据产品业务的复杂度、所需要进行的不同的测试类型的复杂度、产品上线的质量要求的高低、测试人员的数量、能力和经验这些因素,来评估不同阶段、不同类型的测试工作的工作量。比如冒烟测试的工作量、大概有几轮回归测试以及工作量、性能测试的工作量等等。然后对测试人员的分工进行安排,明确职责;那些人进行功能测试、谁来负责性能测试。最终来预估测试工作开始和结束的时间节点,比如预计什么时候可以开始性能测试;预计什么时候完成第二轮回归测试之类。在整个测试过程中,测试团队需要输出的文档也都需要列明,比如测试计划、功能测试用例、性能测试方案、bug数据、性能测试数据、测试报告等等。
在我们携程XXX项目的例子里,大家可以清晰地看到进度安排的详细情况。
好的厨师需要有能够判断好的菜品可以出锅的标准,同样的道理,在测试工作中也需要有标准或一致的目标,来判断测试阶段是否可以结束、产品是否可以上线。这个标准或者目标一般来说包含两个方面:一是测试工作完成的标准,二是产品可以上线发布的标准。这两个目标既相互有关系,但又不完全相同,两者都需要在项目团队内达成一致和共识。
测试完成是产品发布的前提,但产品上线前还有其他一些需要完成的工作。我们分别来说明。
首先是测试完成的标准,也就是说做到什么样算是测试工作做完了。主要包括:1、测试计划里所有测试类型都已经完成了 2、功能上、兼容性上没有影响用户使用的Bug 3、允许遗留小部分影响不是很大的Bug,但这个数量应该小于一个值 4、性能上符合设计目标和上线要求 这些标准都是针对测试工作本身的要求。
在满足了测试本身的前提下,产品要发布还需要满足哪些要求呢?比如说:1、产品需求都已完成 2、交互视觉走查都已完成 3、一流的小部分Bug项目组完成了风险评估,都认可且问题不大 4、产品使用说明或用户手册或更新log都已完备等等。
在我们携程的例子里,测试完成标准和上限标准有如下:
在我们的生活中,网网计划是美好的,现实是残酷的。
测试工作亦是如此,很少有计划是完全可以顺顺利利执行完的,计划本身也需要更新维护。所以我们要对测试过程和产品质量可能会发生的一些问题和风险做好应对准备,避免问题真的发生后出现连锁反应,影响整个测试和项目工作。
测试风险一般包含这样几类:一是测试范围的风险,比如说一开始测试需求分析不准确、不到位漏了测试点,甚至某个测试类型遗漏了,这样问题就比较大了,所以测试需求分析是整个测试工作的基础,还有就是产品需求变更的风险,加需求、减需求、改需求都需要重新进行测试需求分析,需要测得一定要测到,不需要测的就不要浪费人力物力和工作量;二是测试进度的风险,比如说做计划时工作量估计的不准,测试做着做着发现时间不够导致项目延期,还有测试依赖开发,可能开发工作没有按时完成或改bug不及时导致进度延后,还有可能测试人员因为别的项目更重要抽调走了或者请假、离职等原因造成人员变动;三是产品质量的风险,比如开发的代码质量比较低或者测试人员是新人对业务不熟悉,能力和经验有所欠缺等等。
在携程某项目的例子中,列举了一些可能遇到的风险:
到这里我们就完成了一份测试计划。有的人可能依旧存在疑问:做计划真的有那么重要么?我们实际工作中有很多项目根本就没有计划依旧可以完成的啊!我们来看一下不做计划可能会有哪些问题~
首先,如果没有计划我们无法预估工作量和需要的测试人员数量。一个项目的工作量和需要的人员数量都没有依据,在公司里怎么来协调和安排呢?
其次,测试人员的分工明确,会导致工作重复和遗漏。出了问题大家可能都觉得不是自己的问题,导致工作混乱效率低下。
再就是测试进度失控。到底什么时候做完没有一个预期,其他的团队怎么安排工作呢?进度有没有失控也没有判断依据,临到预计的上线时间才发现还有很多没有测到、没测完,直接影响整个项目的进行。
还有就是应对需求变更困难,对可能出现的风险没有准备。一旦出现问题,大家一片混乱,很容易导致测试遗漏和项目延期。
最后就是没有统一发布标准,上线意见不一致。测试团队认为Bug太多不能上线,开发团队认为都是小Bug不要紧,先上线再说,导致争执不下的局面。、
当然根据项目不同还可能存在其他一些列问题......
总而言之,测试计划的作用非常重要。
- 指导测试过程
- 协调项目安排
- 提高测试效率
- 提高测试质量
做测试计划对测试人员的能力和要求是非常高的,从另一个角度来说,测试计划可以体现一个测试人员的自我修养。一个测试人员需要很好的经验沉淀、有很多好的全局意识才能做好一个项目的测试计划。
希望大家都能够很好的胜任编写测试计划这项工作。