近期公司新来了一批实习生,公司也组织了大量的人力物力对实习生的进行培训。不得不说,公司的确在朝”大公司“的方向发展,各项制度福利也在逐步完善。以前别说是实习生了,不管是社招还是校招来的人,都是入职后就直接上岗,哪有这么多培训机会。

分配给我的任务是对我们质量部的岗位进行介绍,给实习生们讲解下我们测试工程师的工作日常情况。由于面向的都是新人,而且各种岗位的都有,因此也只能是科普介绍了。当时也没有准备PPT,就是提前想了几个主题点,然后就简单展开讲了下。

培训结束后感觉这个科普可能对于刚毕业或者还没有毕业的同学还是有一些价值的,因此就将今天讲的内容整理为文字。老司机们就不用看了,我们后续再聊。

——— 分割线 ———

大家好,我是李隆,当前在互联网事业部的质量部做测试开发岗位。在之前的培训中,大家应该知道了,当前我们质量部共分为三类岗位,分别是QA、测试和测试开发。不知道大家有没有想过,为什么要这么划分?这三类岗位的区别和联系在哪里?

这就要从质量部的名称说起了。在日常工作中,通常我们都是说产品、开发、测试、运维,那为什么我们不是叫做测试部,而是叫质量部呢?这是因为,站在软件工程的角度,测试只是手段,而保障项目质量才是我们的最终目的。

那么,”质量“这两个字要怎么理解呢?这是一个非常大的问题,我的确也没法单纯从字面上给大家解释它的完整含义。那我们不妨换个角度,先来看下日常工作中哪些情况会对项目质量造成影响,或者说当出现哪些现象时,就可以说明我们的项目质量存在问题。

  • 开发提交的代码里面有bug。这个应该是最常见的,也是大家最熟悉的质量问题了。
  • 产品的需求描述不清楚,或者需求里面有隐藏的业务逻辑问题,甚至压根就没有需求文档,完全是”一句话需求“。可以想象,这种情况通常造成的后果就是开发到后期才会发现与预期需求不符,严重的甚至造成返工的后果。
  • 开发人员没有写单元测试,项目没有版本规划,提测比较随意并且没有自测。这种情况通常就会造成所有人员都很忙,天天加班,但是项目质量问题越来越多。
  • 运维人员操作没有规范指引,也没有风险预案机制,说不定哪天某个运维人员没睡醒,一不小心就”删库“然后”跑路“了。
  • 测试人员没有测试策略,设计的测试用例仅局限于UI功能层面,难以实现核心业务逻辑的覆盖,也无法发现深层次的问题。
  • 测试人员需要做大量的重复性回归测试,也没有引入自动化测试机制,造成要么没有回归测试,要么测试耗费大量人力和时间成本。

还可以列出来的内容还有很多,不难看出,以上每一种情况都会造成项目质量出现问题,而且很多看似跟测试不直接相关的情况,往往造成的质量问题比单纯的代码bug更严重。而如果我们只是单纯地从软件测试的角度去考虑的话,我们会遗漏很多问题,项目整体质量也没法得到保障。相信你们这时应该会明白,质量部这个名称的真正含义了。

通过以上实例,可以看出质量部可以做的事情,以及必须要去做的事情非常多,但是这个范围又这么广,毕竟术业有专攻,不可能要求每个人都能做到那么多,所以我们质量部才有了岗位划分。

先来说下QA这个岗位,这个岗位主要是做什么的呢?还是回到前面提到的案例,当项目团队没有规范流程的时候,项目质量是很难保障的,往往都会有事倍功半的情况。当团队处于这种状态的时候,QA应该是第一个站出来,让项目组的所有人员认识到流程规范的重要性,并且牵头来制定和梳理流程,包括产品需求应该写成什么样才算规范,版本发版周期定为怎样才算合适,测试人员的用例规范,验收标准,以及运维人员应该有怎样的操作规范,等等。当规范建立起来后,QA也会参与到日常的测试工作中去,除了单纯的测试工作外,QA还需要对项目规范流程进行监督,发掘在实际工作中有哪些是不符合流程规范的,或者哪些流程规范是可以改进的,然后再协同各方人员来一起优化。可以看出,QA这个岗位可能并不是要特别精通于某项测试技术,但是TA一定是要对项目质量有非常灵敏的嗅觉,总是能及时地发现当前项目中可能会影响项目质量的”坏味道“,及时地暴露问题,并且跟进问题的解决。

然后再来说下测试岗位。测试这个岗位应该是大家从感觉上最直观,也是业界大众普遍认知里负责软件测试的岗位。可能有人会觉得,测试这个岗位是产品开发周期的末端,只有等到研发开发完毕,提测以后才开始工作。其实不是这样的。一个好的测试人员,应该是关注项目开发周期的整个流程的。在产品需求出来后,测试就应该要参与产品需求评审,并利用自身在业务方面的测试经验积累,充分挖掘新版本需求可能存在的业务逻辑漏洞。在开发设计技术方案的时候,测试人员也要参与到技术评审,从软件测试的角度,挖掘技术方案中可能存在的技术漏洞。评审完成后,在开发还在编码实现的时候,就需要根据当前版本需求设计测试策略,编写测试用例。等到开发提交测试以后,才是开始大家普遍认知上的测试工作。具体地,对于测试岗位来说,这本来就是一个技术性的岗位,除了需要掌握多种测试理论方法外,还需要根据系统类型的实际测试需要,熟练使用对应的测试工具。测试类型也会很多,除了最基础的功能测试外,也会根据实际情况,对Web前端进行页面兼容性测试、对app进行客户端性能专项测试(启动时间、启动内存、流畅度、包大小等),对后台服务器端进行性能测试(响应时间、吞吐量等),对系统安全进行测试,等等。

最后再来说下测试开发,也就是当前我所在的这个岗位。那么测试开发要做什么呢?可能我讲一个之前的经历大家就清楚了。

我上一家公司在阿里巴巴,当时也是做测试开发岗位。刚进公司的时候,组里的同事跟我说,欢迎来到”生促(畜)组“,看到我一脸懵逼,同事解释到,生产力促进组嘛。我说,这名字也太难听了吧。同事说,这还算好的了,知道以前其它组的叫我们什么吗?促(畜)生组,促进生产力组。 这么一对比,”生促组“听上去的确是优雅多了。

可以看到,不管是”生促“还是”促生“,测试开发这个岗位的核心都是围绕着如何提升生产力,也就是工作效率上面。当然,提高生产力也分为两个层面。第一个层面是提高质量部内部测试人员的测试效率,当前我们也主要还停留在这个层面。前面的例子也说道,当测试人员需要进行大量的重复性回归测试的时候,或者在日常工作中存在简单重复低效的工作内容的时候,这个时候就需要测试开发人员来辅助开发相应的工具平台,常见的包括实现接口测试自动化、UI自动化、持续集成等,将测试人员从重复性的工作解放出来,从而能有更多的时间精力投入到探索性测试当中去。第二个层面呢,也是我们后续的工作目标,那就是提高整个研发团队的工作效率。当然这可能不是测试开发岗位就能独立完成的,这也需要联合开发和运维同学,一起梳理整个研发测试运维流程,然后从技术的角度去开发实现一些工具平台,从而让整个项目团队能更高效的运作。

当然,虽然存在着QA、测试、测试开发的岗位划分,但是在实际工作中并不会有特别严格的界限,只是相对来说工作重心有所侧重而已。就比如说,QA和测试开发岗位也是会参与到测试工作中的,因为如果你不熟悉测试,你怎么知道测试过程中存在哪些不规范的地方,你怎么知道测试在哪些地方存在低效的痛点?同样的,测试人员要更好地理解流程和规范,也需要参与到流程规范的制订讨论工作中;而要更好地实现对系统的测试,必定需要用到一些技术手段,甚至自身具备足够的编码能力,来开展专项测试、性能测试等测试工作,从而能更好地应用技术手段来保障项目质量。

以上便是我对质量部各个岗位工作内容的介绍,也非常欢迎各位到质量部来轮岗。

其实也可以毫不夸张地说,测试岗位对于一个刚接触互联网行业的新人来说,的确是一个非常适合从整体上快速了解行业的岗位。为什么这么说?因为从前面的介绍也可以看出来,测试岗位需要参与项目的整个流程,也需要跟各种角色的人员进行沟通交流,只要用心,就能快速地得到成长,并对各个岗位能有一个较清晰的认识,这对你们后续选择职业方向和岗位的时候也是非常有帮助的。

——— 分割线 ———

最后再发点小感悟。这次也算是第一次大量接触”95后“,直观的印象,的确是一个非常活跃的群体。一方面的体现,就是参与度很强,在每个主题讲解完成后,都有大量的提问,交流十分活跃;而另一方面,就是思维活跃,虽然实习生大多都是才大三,但是从提问的问题来看,他们的知识面很广,很多问题都可以看出是经过认真思考的,而且有些问题还很有深度。

不得不佩服的同时,再想想自己的年龄,不禁黯然神伤,啥也不说了,搬砖去了。