1.2.1 测试岗位价值认知

事物既然存在,那必定有其存在的价值,大到整个社会,小到一家公司、一个团队、一个人。那么测试岗位的价值又是什么呢?

我们先从测试这个岗位说起。

在一个传统的软件开发团队中,有业务、开发、测试、运维等职位,每个职位在团队中发挥着自己的价值,业务人员把需求提出来、开发工程师通过代码实现业务需求、测试工程师根据业务需求保障质量、运维工程师负责把系统发布至环境中。

对测试岗位做细分的话,可以分成功能测试、专项测试;专项测试,还可以进一步细分为自动化测试、性能测试、安全测试等。按照工作模式则可以划分为敏捷测试与传统测试。

我们这里拿一个农场的例子与软件开发、测试工作类比,然后尝试解读。

【例】果树农场

有一个农场(软件公司),农场里面有负责果实(产品)销售的商务洽谈人员(业务人员);有负责果树选苗、种植和浇水的种植人员(开发工程师);有负责捉虫、喷洒农药、检测果实质量品质的质检人员(测试工程师);还有待果子成熟后负责将果子摘下、装箱和配送的物流人员(运维工程师),最终将一箱一箱的果实送到每位客户的手中。每个岗位的人员在这个农场中都在发挥自己应有的作用和价值。

那么,作为测试工程师,我们需要做些什么呢?

● 是更多地发现系统中的缺陷吗?

● 是确保业务功能的实现吗?

● 是保障系统整体的软件质量吗?

其实,除了以上这些内容,还有很多工作需要落实。

如果用果农的工作来类比,质检人员(测试工程师)的职责范围和价值不能也不应该局限于“捉虫、喷洒农药和检测果实质量”这项单调的工作,还包括:

● 能不能帮助选苗采购的业务人员做一做选苗的分析并提出建议?

● 能不能给负责种植果树的种植人员(开发工程师)提出建议,怎样优化才能让害虫更少?

● 能不能帮助摘果子装箱的物流人员(运维工程师)做个工具,让装箱的速度更快、效率更高?

● 能不能帮助自己,在喷洒农药的工作上进行优化:解放双手,改进喷洒方式,让农药自动喷洒;通过工具或方法做到高效除虫?

测试工程师的职责范围和价值不能也不应该局限于:发现缺陷、提交缺陷、整理测试报告。

很多公司对测试工程师提出了更高的要求,除了完成本职测试工作,还要求测试工程师具备各项综合能力,包括但不限于:

● 业务需求分析能力。

● 开发编码能力。

● 测试专业技术能力。

● 测试设计和分析能力。

● 测试环境和数据管理能力。

● 持续集成运维能力。

● 工具平台的开发能力。

● 敏捷教练能力。

● 工程化的团队协作能力。

这些都是现在行业中诸多软件公司对于“测试工程师”岗位的要求,由此可以看出来,测试工作本身非常有技术含量,而保证产品的高质量交付就是测试工程师综合能力的体现。

1.测试工程师掌握开发技术

有的读者此时会存在疑问:“什么?软件开发能力?工具平台设计能力?测试工程师又不是开发工程师,需要掌握开发技能吗?再说了,如果测试工程师学会了开发技术,那么让开发工程师去做什么呀?”

请换位思考,如果你是一位软件开发工程师,现在团队中有两位测试工程师,你是更愿意把自己写的程序让一位没有开发技能的测试工程师去测试,还是给一位有开发技能的测试工程师来测试呢?客观地说,我们都会毫不犹豫地选择后者。

请你回想一下,有没有见过类似的情景:团队中测试工程师抱怨开发工程师不懂测试技术,不了解测试流程,对测试工作认识太肤浅;开发工程师也会抱怨测试工程师不懂开发技术,不屑于和测试工程师一起坐下来讨论系统设计,系统设计讨论会也不邀请测试工程师参与。因为在开发工程师的眼里,即使请测试工程师参与系统设计讨论,也无法对系统设计方案提出有价值的意见和建议。

假如团队中有一位既懂开发技术、又懂测试技术的人,那情况会不会有所改变呢?我想答案是显而易见的。因为懂开发技术的测试工程师,既能够分析系统功能的外在表现,也能够思考系统功能的内部实现逻辑,可以和开发工程师更高效地进行沟通;利用自身的测试技术优势,能够更容易、更全面地发现产品缺陷。而不懂开发技术的测试工程师,看问题的角度更多是从功能的外在表现出发,只能停留在黑盒的层面去看产品功能,对内部的代码、设计构造则无法窥探,平时可以交付一些常规系统的测试工作,当面对技术复杂度高、设计抽象的系统,就会显得力不从心。

2.测试工程师的行为意识

有的读者会存有疑问:“拥有开发技能的测试工程师?这样的人到底有多少呢?应该凤毛麟角吧?”

其实你可以观察到,在软件行业内,那些非常优秀的测试工程师、测试管理者,他们是不是具备了以上一些技能或素质呢?

在行业中大部分公司采用了敏捷软件开发模式,追求更快、更稳定、持续地交付产品。敏捷测试工程师的价值更体现在:需要实现端到端的质量价值交付,成为具备传统QA+QC(QA:Quality Assurance,质量保证;QC:Quality Control,质量控制)的双技能角色。

敏捷软件测试工程师在敏捷迭代中的行为意识如表1-1所示。

表1-1 敏捷软件测试工程师在敏捷迭代中的行为意识

同时,敏捷测试岗位的目标也发生了微妙的变化,测试的工作方向从“测试软件系统”转变为“商业价值的交付”,如图1-2所示。

图1-2 测试岗位的目标变化

从上述两个观点中可以得知,要想做好测试工作是非常难的,其实,测试工作的魅力也就在于此。在本书的第2章中,将详细地讲述什么是敏捷软件开发模式,以及敏捷软件测试工程师应该具备什么样的技能和认知。