<谷歌如何测试> 翻译第七篇

软件测试工程师【TE】的工作

相比软件工程师【Software Engineer】、软件开发测试工程师【Software Engineer in Test】而言,软件测试工程师【Software Test Engineer,以下简称测试工程师】是一个较新的角色,甚至这个角色本身目前还在定义完善之中。当前谷歌测试工程师们正在对未来这一角色的定义上进行实践尝试中。在这里,我们讲述的这个角色的定义过程,是正在进行中的,也是我们认为最适宜谷歌的。

并非所有的产品都需要测试工程师为之提供服务。一些试验性的尝试,或者一些在使命和用户使用场景上没有得到很好定义的产品的初期阶段,这些项目肯定不会吸引测试工程师加入。如果产品有很大的可能性被取消掉(某种程度上讲,这也是证明这个想法不会成功),或者还没能吸引用户使用,或者功能都没有很好地被定义,在这些产品里,测试工作一般都是由产品的开发人员自己完成的。

即使对于一个已经确定要发布的产品,在其研发的早期阶段,如果功能还在不断变化并且最终的产品列表和范畴还没有定下来的时候,测试工程师实际上也没有太多的工作可做。太早地过度投入测试资源意味着很多事还需要扔掉重来。相比较产品的后期阶段,早期阶段的产品需要较少的测试工程师,在产品接近尾声时,当寻找缺陷变得紧急的时候,需要较多的资源投入到测试上进行探索性测试。

策略上讲,给一个项目配备多少测试资源,是和项目风险、投资回报率息息相关的。如果对用户(不管是个人还是企业用户)的风险较大,则意味着在测试上要投入较多的资源,需要更多的测试工程师。但投入的资源需要和其潜在的回报成正比。我们需要在合适的时间,投入合适数量的测试工程师,并得到合适的收益。

当测试工程师,进入产品的时候,并不需要一切重头开始。在项目最开始的时候,开发工程师和测试开发工程师已经在测试工程和质量方面做了大量工作。测试工程师在进入产品时,需要考虑以下一些问题:
· 当前软件的薄弱点在哪里?
· 从安全、隐私、性能、稳定性这几个角度出发都关注哪些内容?
· 对于主流用户来说,是否可以满足他们的预期?对于全球所有的用户也是这样么?
· 这个产品是否需要和其他产品交互(软件和硬件上)?
· 当发生问题的时候,诊断工具是否很好地使用?

上面所有问题,都会被当做软件发布过程中的风险进行讨论。测试工程师并不需要自己去解决所有这些问题,但必须保证这些问题被解决掉,这就需要去评估其他人的工作来看还有多少工作需要去做。其实,测试工程师之所以被雇佣,就是为了保护软件的最终个人企业用户的利益,使之不受糟糕的设计、令人疑惑的用户交互界面、功能缺陷、安全和隐私等问题带来的不良影响。在谷歌,测试工程师是团队中唯一全职对整体产品弱点关注的角色。和测试开发工程师【SET】相比,测试工程师【TE】的工作并不是那么清晰和一致。测试工程师会被要求在项目的各个阶段都提供援助,无论产品是一个想法的时候,还是产品已经到了第八个版本,甚至需要为一些已经过时封存已久的项目【mothballed,卫生球项目】提供支持。一般情况下,一个有一技之长的测试工程师,比如在安全方面,他们通常会同时负责多个项目。

显然,不同项目中的测试工程师的工作内容也会有比较大的不同。部分项目的测试工程师【TE】像测试开发工程师【SET】一样,在编码方面投入了比较多的时间,绝大多数项目的测试工程师还是会把主要精力投入在端对端的用户使用场景上。一些测试工程师利用已有的代码和设计【测试代码】来验证失败的场景,并分析失败的原因。在这种情况下,测试工程师可能会去修改已有的测试代码,而不是一切从头开始写。测试工程师必须对测试计划及测试完成做系统全面的考虑,特别是在真实使用方式和系统体验上。在需求不明确的情况下,测试工程师善于对一些说不清的问题上做原因分析和沟通处理。

成功的测试工程师在完成这些的同时,也会指导团队需要在哪里保持敏锐,甚至有时候会改变一些团队成员的做事方法。一旦软件的缺陷被发现后,测试工程师会非常乐意地去破坏软件,然后再让开发、产品、测试开发人员去解决这些缺陷问题。

考虑到测试工程师需要的技术技能、领导力、对产品的深厚理解力等多方面要求,其职位描述会是令人恐惧的,如果没有正确的指导,这个角色会很难去做。幸运的是,在谷歌,一个由测试工程师们组成的强大社区的出现解决了这个问题。在所有的工作角色中,测试工程师可能是最好可以相互提供帮助的角色,这个角色需要敏锐的洞察力和领导力,因此谷歌的高级测试经理们几乎全部是从测试工程师这个层级做起的。

测试工程师的工作经常需要去打破常规。在任何时刻,一旦测试工程师进入项目,他就需要去评估项目、代码、设计、用户的当前状态,并决定当前需要去首先关注些什么。如果进入项目的时候,项目刚刚开始,这个时候测试计划会是第一优先级要解决的问题。有些时候测试在产品的晚期才进入,这个时候需要去评估这个项目是否已久为产品发布做好了准备,或者在“beta”版本发布之前还需要解决哪些主要的问题。如果测试工程师进入了一个新的产品,或者他对这样产品中有较少经验的时候,通常情况下会先去做一些不需要测试计划的探索性测试工作。在另外一些时候,项目已经很久没有发布了,只是需要去做一些修饰或者安全方面的修复,或者用户交互方面的更新,这需要测试工程师针对不同阶段的项目使用不同的方法。谷歌的测试工程师需要在不同的项目做不同的事情,并且他们很少做相同的事情。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值