《Google软件测试之道》 第二章软件测试开发工程师(SET)

在理想情况下,一个完美的开发过程是怎么样的呢先行,在一行代码没有真正编写之前,一个开发人员就应该去思考如何测试他即将编写的代码。

1.SET的职责

       SET的部分职责是在单元测试方面给予开发人员支持,另外一部分是未开发人员提供测试框架,以便他们编写中小型测试,用以更多质量相关的测试工作。SET是100%的编码角色,它使测试人员尽早介入到开发流程中,不是通过测试计划的方式,而是参与设计和代码开发的方式。SET积极参与各种测试,使测试富有效率,包括手动和探索式测试,而这些测试后期会有其他工程师负责。

      在产品开发过程中,开发编写产品代码并测试代码。SET编写测试框架,为开发编写测试代码提供帮助。SET的第一要务是可测试性,扮演质量顾问的角色,提供程序结构和代码风格的建议给开发,同时提供测试框架方面的建议,使得开发人员能够在这些框架的基础上自己写测试。作为开发人员,基本要求是代码审查能力。

对于人的思维方式而言,测试人员与开发人员在编写代码的是迥然不同的,开发人员重点看护功能代码,思维模式是创建,重点在考虑用户的使用场景和业务流程等;而测试人员编写代码的思路是如何去破坏这些功能代码。

2.测试与开发的流程

       Google认为测试工作由整个团队负责而不仅仅是测试相关人员。Google有“百分之二十的贡献”称为业余项目,允许工程师每周投入一天的时间在日常工作以外的项目,用来试验和创新。Google有丰富的内部代码分享库,这些代码不允许修改。

      在Google的产品项目初期,工程师只会投入20%的时间。“只有在软件产品变得重要的时候质量才显得重要”这句话似乎有些功利,言下之意是当产品产生了较大的收益和更广泛的使用时,才值得投入更多的心血。作为一个刚刚接触测试的小白,有些困惑,道理上讲,我们应该对所有的产品一视同仁,倾注同样多的心血。不过仔细一想,也是一种客观事实,从产品的角度,一个产品质量再好,但是本身冷门,或者没有从用户的角度去设计等等都会导致产品的失败 。“一个产品如果在概念上还没有成型就去关注质量,这是优先级混乱的表现”。所以在试验初期强调测试是不够聪明的选择。但是,一个产品长时间没有测试的介入,会导致自动化难以实施,且测试工具极不稳定。这样质量的债会拖慢产品的发布。

3.团队结构

       开发一般会深入自己编写的那部分代码中,可能只是单一的某个模块,从整个产品的角度,视野略显狭隘。但测开正好可以弥补这一点,不仅要有更广阔的整体产品视野,而且在整个生命周期对产品及功能特性做充分理解。SET会在项目初期加入,合理地出谋划策,我在加速项目进度的同时,可以做到简化项目的工作。好的测开会把专业的广阔视野转化成影响力,对开发的代码产生深远的影响。开发完成设计文档后会由SET审阅,并针对质量和可靠性增加一些必要的内容,也首先建立好与开发的良好的工作关系。

       SET审阅设计文档时的关注要点:完整性、    正确性、    一致性、    设计、    接口与协议、测试

4.测试自动化

       在整个产品稳定之前,自动化测试不会特别有用,不应花费太多时间。测试自动化不应该是自动化测试程序的编写。除了考虑如何正确编写自动化程序以外,还要把注意力放在实际项目中如何发挥自动化测试的价值上。能加速开发过程的自贡话测试才有意义。因此,测试必须与开发集成在一起。

在端到端自动化测试上过度投入,常常会把你与产品特定的功能设计绑定在一起。

5.测试认证

       如果一个团队完成了一系列测试任务,会得到一个通过认证的标识。级别分为五档,最初的级别是0,通过水平考核,最终到达5。从我个人的角度分析,这一举措理论上确实能够让开发人员形成测试和代码的良好习惯。但无形中也增加了开发的压力,可能也会带来不良性的竞争,未必有很好的效果,就如同为了拿高分的孩子把题目答案全都背下来,却忘了我们的初衷是为了掌握知识。并且会浪费很大的时间成本,不一定适合要求快速迭代,需求频繁变动的互联 时代。

6.SET的招聘标准

        面试SET的时候,在代码要求标准上与开发是一样的,而且增加额外的考核:了解如何测试他们的代码。考察如何思索问题的解决方案而不是解决方案本身。优秀的候选人和普通的候选人在提问和思路的表现上会完全不同。候选人应当能够感觉足够舒适的去提出问题,如果没有问题,我们就引导他们去提问。

SET的面试重点在考察面试候选人如何思索问题的解决方案,而不是解决方案本身的实现上有多么的难度。

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2021年1月22日
下一篇 2021年1月22日

相关推荐