编者按:本文探讨的,主要有:1、为什么我们需要“测试设计师”;2、测试设计师的岗位职责有哪些;3、测试人员需要具备哪些能力,才能胜任这个职位。

在多数软件企业,测试组在项目中的组织形式一般是1个“测试组长”+多个“功能测试工程师”,测试组长负责管理整个测试过程和测试质量,测试工程师负责编写和执行测试用例;做的比较专业的测试团队,还会配备1~2名“性能测试工程师”,1~2名“自动化测试工程师”。

这样的团队模型看起来似乎无懈可击,也许很多公司都把这样的模型作为努力的目标,可是在实际工作中,这样的团队真的能够达到高的效率,能够大限度的保证项目的质量么?

闲话少说,下面我简洁的列出,这样的团队模型存在哪些重要问题:

功能测试工程师不懂技术,自动化测试工程师不懂需求,做出的自动化脚本质量较低,难以维护;或者需要花费极高的代价,才能做出让人满意的脚本;

测试组长的精力主要在测试计划的管理上,同时测试组长大都兼做“测试执行”,因此没有精力思考,如何改进测试策略;大部分功能测试工程师对开发技术了解较少,对程序的内部结构和处理逻辑了解较少,设计测试用例(TC)一般依靠需求文档,因此测试策略单一,TC大都和真实用户行为一致,很少有一些针对性较强的TC

性能测试和功能测试之间缺乏交流,性能测试工程师难以获得性能的需求,功能测试工程师也不关注性能测试的过程。由于性能测试经常会要求开发组优化代码逻辑,而优化很容易引发功能的bug。这里,缺少一个人从整体把握功能和性能的质量,衔接两方面的工作。

一般面临这些问题的,都是人数较多,分工比较细的测试团队。而人口多和分工细,意味着沟通和管理的复杂度加大。要解决这些问题,需要增加一个新的角色:“测试设计师”。

先说一下测试设计师的岗位职责:

首先,测试设计师对项目的质量负责。一旦项目发布以后出现了遗漏bug,测试设计师需要承担首要责任;

负责项目测试方案的设计,确定各种测试需求的测试策略,包括功能、性能、自动化等;

负责研究开发组的架构设计和逻辑设计,熟知程序的结构和运行逻辑,从而制定出更有效的测试方案,参与开发设计评审;

评审测试组的文档产出,全程跟踪测试执行过程,给予其他测试人员指导与支持;

说到这里,我们对测试设计师的主要工作范围有了一个整体的认识,下面,我再以时间的先后顺序,说明测试设计师在一个项目中,是如何工作的。

当项目开始做需求开发时,测试设计师需要介入,熟悉产品需求。这时他可以对比同类软件产品,或者是公司历史上的同类项目,搜集一些必要的技术信息,做好准备。

开发组做设计时,测试设计师需要同时熟悉开发的设计,尽量指出设计的缺陷,同时,考虑测试策略(功能、性能、自动化),编写《测试计划》中“测试策略”一节。

由于测试设计师对系统的结构非常了解,所以收集性能测试需求和制定性能测试方案,都由他来做,之后可以交给性能测试工程师,后面的脚本制作,跟踪问题,都由性能测试工程师完成。

另一方面,测试设计师对需求的把握也比较好,所以他也要确定自动化测试的范围,并且完成自动化测试的设计文档和框架代码,然后交给自动化测试工程师。当自动化工程师和性能工程师在工作中遇到问题时,测试设计师负责解决。

这里不得不谈到,手工功能测试和自动化功能测试之间的关系,实际上,测试设计师需要为手工测试和自动化测试分别进行设计,但是这两份设计不是完全隔离的,而是有着紧密的联系,具体的内容,我们将在另一篇文章中讨论。

总之,测试设计师要评估测试的重点和测试的方法,找出系统容易出问题的地方,制定出完整的测试设计方案,然后,全程参与功能测试工程师、自动化工程师,性能工程师的测试用例、测试脚本的制作过程,评审这些文档的质量,提供建议和支持。

当 开发编码完成,提交测试以后,测试执行开始,测试设计师要密切关注测试执行的进展,并且判断自己的测试设计是否合理,高效,一旦发现问题,快速进行调整。 测试设计师必须参与手工用例的执行,自动化脚本、性能脚本的开发,从而了解测试工作的质量。当然,参与的程度,视具体情况而定。总之,他不是一个脱离于项 目之外的人,而是当测试出现问题,他比谁都操心。

测试结束后,测试设计师需要协助测试组长完成测试报告,并对项目质量和测试的效果进行评估和分析。

在小型项目里(比如测试人员3-5人),测试组长和测试设计师可以由一个人担任;但是,在大型的项目,必须单独指派一名测试设计师,因为那时测试组长整天都会忙于项目进度的控制和与其他组沟通,没有精力来管测试的技术了。形象的说,这是“双塔”组合。

接下来,我们讨论一下,需要具备何种能力,才能担任测试设计师,我认为以下几点是关键:

两年以上测试工作经验,担任过项目的测试组长,管理和沟通能力出色;

能够独立完成一个项目的性能测试任务,不仅仅是会使用性能测试工具;

能够独立开发一个项目的自动化脚本,不仅仅是会录制回放简单的脚本;

能够大致看懂开发的设计文档,可以和开发工程师讨论设计文档,能提出设计中的缺陷;

有较好的创新能力,能够定期在测试团队中进行技术创新,解决工作的问题,提高测试效率。

掌握一些编程技术,会使用公司的主流开发工具和开发语言,并能使用这些工具开发简单的应用程序(和公司的产品类似);

另外,测试设计师在测试团队中,也必须是一个虚拟的群体,他们要经常的交流,而不是各自为阵。他们需要经常针对测试工作中的问题进行讨论,寻找有效的解决问题的方式。

测试设计师在测试团队中的比例,应该达到10%,有些测试设计师还需要担任“测试组长”的角色。他们是团队中的技术核心,为团队解决实际问题,不断的进行创新,让测试团队更有活力。