软件测试中制定合理的软件测试流程
首先向大家介绍一下我理解的测试流程是什么,流程在词典上的解释是“工艺程序,从原料到制成品的各项工序安排的程序”,那测试流程就是指从软件测试开始到软件测试结束经过的一系列准备、执行、分析的过程。所以我认为测试流程并不是只存在于有完整测试团队的公司,它分布在每一个对软件执行测试的公司中,哪怕这个公司只有一个测试人员。
软件测试想要在一个公司中从无到有进而逐步完善,也需要公司上层领导、开发人员等人从接受到理解、支持到尊重的一个过程。要想完成这个目标并不容易,需要公司外部整个软件测试行业和公司内部软件测试工作的双重影响。而整个软件测试行业实际上又是由各个公司内部的软件测试团体组成的,归根结底要让大家都接受软件测试还是要靠每个公司内部软件测试工作的影响。只有合适的测试流程才能快速的显示出测试工作的作用,才能让大家更快的接受测试工作,主动配合测试工作,进而完善测试工作,达到良性循环的作用。
制定合理的测试流程需要考虑的因素很多,毕竟它是大家进行测试工作的依据,又需要理清和需求人员、开发人员、市场人员等多方人员的关系,而且公司不同侧重点又有所不同,所以在这里不可能面面俱到列出所有因素,只是根据自己的经验列出认为比较重要的几点。
制定测试流程首先要清楚自己所在的公司正处在什么发展阶段,是处在最初的创业期还是已经度过了创业期希望通过测试来提高产品质量,以便取得更多的业务创造更大的效益。可能有的同行会觉得奇怪,我们软件测试是做技术的只管做好本职工作,为什么制定流程时要这么重视公司的发展情况呢。其实公司的情况和制定测试流程有非常大的联系,公司的情况直接决定着公司对产品的要求,而测试部门一般来说是产品投入市场的最后一个关口,这也就等于公司的发展情况决定了公司对测试部门的要求。开发软件前要先了解软件的需求,制定测试流程前当然也要了解清楚公司对测试部门的需求。了解了公司的情况和要求后,就要根据这些要求结合制定者的测试知识和经验,制定即符合公司要求又能起到软件测试目的的软件测试流程。当然这样做并不是说让软件测试向公司的一些不利于开展软件测试工作的现实情况妥协,只是根据公司的实际情况制定一些可以马上改变公司测试工作现状的流程。
一般正在创业期的公司面临的是公司生存的问题,它需要和其他公司抢市场,这时公司为了配合市场的要求不光要求软件产品的质量更要求整个项目的进度,但是对一些在软件测试过程需要的文档和产生的文档却不是特别在意。而且这样的公司开发人员往往都是测试人员8倍10倍,经常是软件代码已经快写完了,测试人员才会进入项目。这样我们在制定测试流程时就要注意软件测试工作的重点是执行测试,虽然前期的一些测试准备对以后的执行测试工作有很大的指导性作用,但前期准备工作如测试用例的写作等也会增加软件测试的时间,尤其是软件测试人员在软件已经开发出来才进入项目的时候,如果还要花大量时间去准备软件测试,更会让不了解软件测试的人误认为是软件测试拖延了整个项目的进度,让软件测试的推广工作受到更多的阻碍。这样我们就可以适当删减一些前期的准备工作,如减去用例评审工作,减少一些测试文档的写作工作,对一些测试文档的写作要求适当放宽等,更具体的就是我们可以不要求测试用例将操作步骤描述的很详细,但是要记录测试的思路可以简化为测试方案,达到对测试工作的跟踪目的就可以。但测试用例最好不要省略因为这个文档可以为以后再测试类似功能的产品做好经验的积累。
如果公司已经度过最初的生存期,这时公司会对产品的质量有更高的要求并且体现到对软件开发过程的要求。而且公司从软件开发计划制定、进度跟踪、项目管理等都有了一定的经验也有了一些历史数据可以参考。这样对软件测试的一些前期准备工作也会有所考虑,并适当满足,这时软件测试流程可以加强前期测试准备工作、后期测试分析工作。具体可以要求软件测试从需求介入以便尽早了解产品,制定独立的软件测试计划并将软件测试时间纳入整个项目进度中,细化测试用例写作的力度,增加后期对缺陷分析的工作进而逐步提高整个软件测试团队的技术力量,让软件测试渗透到整个软件过程中。
其实公司内软件测试一片空白或者测试流程比较完善的公司流程制定和执行相对来说都会比较容易一些,如果是一片空白你可以完全按照自己的想法去建立软件测试流程,剩下的困难只是如何去说服领导和开发配合这个流程。如果软件测试流程已经比较完善,大家对软件测试已经有了一定的支持和理解并且现阶段运行良好,你只需要在一些小节上进行一些修改,如果的确有利于工作会得到大多数人的支持。最难制定的是软件测试刚刚起步有了一些不成型的测试流程,也许不太符合你的想法也许不太适合公司的实际情况但的确在公司运行了一段时间,如果想改变不光要说服测试部门以外的人还要说服测试工作人员,增加了工作的难度,如果公司是这种情况请大家在制定软件测试流程前更要慎重考虑,详细了解公司的情况。
制定软件测试流程时可以参照一些比较完善的软件测试流程,但切忌不可照搬这些流程。我们经常会遇到这样的情况,如果在测试工作过程中碰到一些问题有人会说如果在微软或IBM公司是这样处理的,我们也可以这样。但是我们的工作环境和这些公司是不一样的,测试的思想已经深入贯穿到他们开发的每一个步骤中,而我们目前大多数公司的软件开发过程并没有达到这样的程度,我们大多需要解决的是在测试思想还没有贯彻彻底的公司我们怎么处理这个问题。无论是软件测试刚刚起步还是已经有了一定软件测试团队规模有多年软件测试经验的公司,都有一些属于自己公司特定的测试方法和流程,就是完善的软件测试流程也各有各的不同,IBM和微软在测试流程肯定是有所差别的。如果将他们的流程照搬过来,没有给公司同事一个慢慢接受消化的过程,很容易适得其反甚至引起公司同事的抵触情绪。这里并不是说这些测试流程不好,只是这些测试流程也不是一开始就建立起来的,而是通过多年的经验和教训逐步完善一步一步慢慢建立的,并且现在它们仍在进一步完善中。我们不仅要学习这些完善的软件测试流程是什么样的,我们更要学习为什么制定这套软件测试流程。给人金子不如给人点金术,也就是这个道理。那些软件测试流程比较完善的公司走在了我们的前面,我们就要学习他们这一路走来的经验和教训,避免走他们走过的弯路,缩短完善公司流程的时间。
制定软件测试流程要明确测试部门的职责。经常会有测试人员抱怨自己在公司里就是一个打杂的,什么工作都要做,其实这就是职责不明确引起的问题,这样会很大程度打击测试人员的工作积极性影响工作情况进而影响大家对软件测试工作的看法。一些如写用户手册、给用户培训等工作在公司里如果没有专门的部门来做,就很容易推给软件测试人员来做,但是都没有明文规定而且在对软件测试人员进行工作考核时又很容易疏忽这些工作,而且这些工作有时候看起来不太起眼,但是需要耗费大量的时间。所以我们要明确制定软件测试部门的职责、软件测试人员担任的工作内容,其他一些工作如果由测试人员来做,就要在制定软件测试计划中明确写出这些工作需要的时间,以防止这些工作占用测试时间,使测试人员陷于被动之中。
制定软件测试流程不光要制定软件测试部门内部的工作流程,更要制定与开发部门、需求部门等外部部门的接口工作的流程,一旦项目在进度、功能上有了变化要及时和测试部门沟通,不要让测试部门成为最后一个知情人。