谷歌如何做软件测试???第七部分
作者:网络转载 发布时间:[ 2012/8/16 11:52:08 ] 推荐标签:
软件测试工程师【TE】的工作
相比软件工程师【Software Engineer】、软件开发测试工程师【Software Engineer in Test】而言,软件测试工程师【Software Test Engineer,以下简称测试工程师】是一个较新的角色,甚至这个角色本身目前还在定义完善之中。当前谷歌测试工程师们正在对未来这一角色的定义上进行实践尝试中。在这里,我们讲述的这个角色的定义过程,是正在进行中的,也是我们认为适宜谷歌的。
并非所有的产品都需要测试工程师为之提供服务。一些试验性的尝试,或者一些在使命和用户使用场景上没有得到很好定义的产品的初期阶段,这些项目肯定不会吸引测试工程师加入。如果产品有很大的可能性被取消掉(某种程度上讲,这也是证明这个想法不会成功),或者还没能吸引用户使用,或者功能都没有很好地被定义,在这些产品里,测试工作一般都是由产品的开发人员自己完成的。
即使对于一个已经确定要发布的产品,在其研发的早期阶段,如果功能还在不断变化并且终的产品列表和范畴还没有定下来的时候,测试工程师实际上也没有太多的工作可做。太早地过度投入测试资源意味着很多事还需要扔掉重来。相比较产品的后期阶段,早期阶段的产品需要较少的测试工程师,在产品接近尾声时,当寻找缺陷变得紧急的时候,需要较多的资源投入到测试上进行探索性测试。
策略上讲,给一个项目配备多少测试资源,是和项目风险、投资回报率息息相关的。如果对用户(不管是个人还是企业用户)的风险较大,则意味着在测试上要投入较多的资源,需要更多的测试工程师。但投入的资源需要和其潜在的回报成正比。我们需要在合适的时间,投入合适数量的测试工程师,并得到合适的收益。
当测试工程师,进入产品的时候,并不需要一切重头开始。在项目开始的时候,开发工程师和测试开发工程师已经在测试工程和质量方面做了大量工作。测试工程师在进入产品时,需要考虑以下一些问题:
● 当前软件的薄弱点在哪里?
● 从安全、隐私、性能、稳定性这几个角度出发都关注哪些内容?
● 对于主流用户来说,是否可以满足他们的预期?对于全球所有的用户也是这样么?
● 这个产品是否需要和其他产品交互(软件和硬件上)?
● 当发生问题的时候,诊断工具是否很好地使用?
上面所有问题,都会被当做软件发布过程中的风险进行讨论。测试工程师并不需要自己去解决所有这些问题,但必须保证这些问题被解决掉,这需要去评估其他人的工作来看还有多少工作需要去做。其实,测试工程师之所以被雇佣,是为了保护软件的终个人企业用户的利益,使之不受糟糕的设计、令人疑惑的用户交互界面、功能缺陷、安全和隐私等问题带来的不良影响。在谷歌,测试工程师是团队中全职对整体产品弱点关注的角色。和测试开发工程师【SET】相比,测试工程师【TE】的工作并不是那么清晰和一致。测试工程师会被要求在项目的各个阶段都提供援助,无论产品是一个想法的时候,还是产品已经到了第八个版本,甚至需要为一些已经过时封存已久的项目【mothballed,卫生球项目】提供支持。一般情况下,一个有一技之长的测试工程师,比如在安全方面,他们通常会同时负责多个项目。
显然,不同项目中的测试工程师的工作内容也会有比较大的不同。部分项目的测试工程师【TE】像测试开发工程师【SET】一样,在编码方面投入了比较多的时间,绝大多数项目的测试工程师还是会把主要精力投入在端对端的用户使用场景上。一些测试工程师利用已有的代码和设计【测试代码】来验证失败的场景,并分析失败的原因。在这种情况下,测试工程师可能会去修改已有的测试代码,而不是一切从头开始写。测试工程师必须对测试计划及测试完成做系统全面的考虑,特别是在真实使用方式和系统体验上。在需求不明确的情况下,测试工程师善于对一些说不清的问题上做原因分析和沟通处理。
成功的测试工程师在完成这些的同时,也会指导团队需要在哪里保持敏锐,甚至有时候会改变一些团队成员的做事方法。一旦软件的缺陷被发现后,测试工程师会非常乐意地去破坏软件,然后再让开发、产品、测试开发人员去解决这些缺陷问题。
考虑到测试工程师需要的技术技能、领导力、对产品的深厚理解力等多方面要求,其职位描述会是令人恐惧的,如果没有正确的指导,这个角色会很难去做。幸运的是,在谷歌,一个由测试工程师们组成的强大社区的出现解决了这个问题。在所有的工作角色中,测试工程师可能是好可以相互提供帮助的角色,这个角色需要敏锐的洞察力和领导力,因此谷歌的高级测试经理们几乎全部是从测试工程师这个层级做起的。
测试工程师的工作经常需要去打破常规。在任何时刻,一旦测试工程师进入项目,他需要去评估项目、代码、设计、用户的当前状态,并决定当前需要去首先关注些什么。如果进入项目的时候,项目刚刚开始,这个时候测试计划会是第一优先级要解决的问题。有些时候测试在产品的晚期才进入,这个时候需要去评估这个项目是否已久为产品发布做好了准备,或者在“beta”版本发布之前还需要解决哪些主要的问题。如果测试工程师进入了一个新的产品,或者他对这样产品中有较少经验的时候,通常情况下会先去做一些不需要测试计划的探索性测试工作。在另外一些时候,项目已经很久没有发布了,只是需要去做一些修饰或者安全方面的修复,或者用户交互方面的更新,这需要测试工程师针对不同阶段的项目使用不同的方法。谷歌的测试工程师需要在不同的项目做不同的事情,并且他们很少做相同的事情。
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11