【读书笔记】Google软件测试之道(二)软件测试开发工程师

来源:互联网 发布:suse linux snmp 安装 编辑:程序博客网 时间:2024/05/16 01:56
第二章:软件测试开发工程师


    对于功能代码而言,思维模式是创建,重点在考虑用户、使用场景和数据流程上;对于测试代码来说,主要思路是去破坏,怎样写测试代码
用以扰乱分离用户及其数据。由于我们的假设的前提是在一个童话般的理想开发过程里。所以我们或许可以分别雇佣不同的开发工程师:一个写功能代码,而另一个思考如何破坏这些功能(功能开发(SWE)、测试开发(SET))

 互联网公司的乌托邦式

功能开发人员在编写功能代码的时候,测试开发人员编写测试用例,但我们还需要第三中角色,一个关心真正用户的角色:用户开发人员,他们需要解决的主要问题是面向用户的任务,包括用例、用户故事、用户场景、探索性测试等。用户开发人员关心这些功能模块如何集成在一起成为一个完整的整体,他们主要考虑系统级别的问题,通常情况下都会从用户角度出发,验证独立模块集成在一起之后是否对最终用户产生价值。
 Googled TE就是用户开发人员,负责从用户的角度来思考质量方面的各种问题。


2.1 SET的工作

     公开的代码库、和谐的工程工具、公司范围内的资源共享,成就了丰富的google内部的共享代码库与公共服务

工程师需要遵守这些规则:

  • 所有工程师必须复用已经存在的公共库,除非在项目特定需求方面有很好的理由
  • 共享代码、首要考虑容易找到和可读性
  • 公共代码尽可能地被复用且相对独立
  • 如果一个工程师对公共代码库有某些更好的解决方案,他需要去重构已有的代码,并合并到新分支上
  • Google非常重视代码审核,特别是公共通用模块的代码必须经过审核,在开发人员拥有按照代码风格编写出干净代码的记录之后,委员会会授予这名开发人员一个“良好可读性”的证书

Google产品的构成

  • 良好测试的独立库
  • 一个在可读性和可复用性方面都不错的公共服务库
  • 一套覆盖所有重要构建目标的单元测试套件


2.12 SET究竟是谁

SET 软件测试开发工程师,使测试人员能尽早介入到开发流程中去,但不是通过质量模型和测试计划方式


2.13 项目早期阶段

 许多创新的产品都来源于团队20%的业余时间,一个产品如果在概念上还没有完全确定成型就去关心质量,这就是优先级混乱的表现。许多来源于google 20%努力的产品原型,在其发布后,还要经历重新设计,原始代码保留的概率几乎为0。当然,风险都是相对的。如果一个产品太久时间没有测试的介入,早期在可测试性的糟糕设计后期很难改进,这样会导致自动化难以实施且测试工作极不稳定,这就是后面的重构名义。


2.14 团队结构

SWE会深入他们自己编写的那部分代码之中,通常这部分代码只是某一功能的模块,SWE一般尽在自己的模块领域提供最优方案,但如果从整个产品的角度来看,视野会显得略微狭窄。一个好的SET正好可以弥补这一点,不仅要具有更宽广的产品视野,而且在产品的整个生命周期里对产品及功能特性做充分理解,许多SWE来往穿梭于不同产品,但产品的生命存活期比SWE呆在产品的时间要长久得多。如:Gmail、Chrome

2.15 设计文档

作为SET、比较幸运是在项目初期进入项目,一个好的SET会把非常专业的广阔视野转化为影响力,在开发人员所编写的代码上产生深远的影响力。通常来说,代码复用和模块交互方面的设计会由SET来做,而不是SWE。如果有另外一双眼睛来帮助审核你的工作,这无疑会很有帮助且令人期待,SWE渴望得到来自SET的这种帮助和反馈。
  • SET需要熟悉了解所负责的系统设计
  • SET早期提出的建议会反馈在文档和代码里
  • 作为第一个审阅设计文档的人,SET对项目的整体了解程度超过技术负责人
2.16 接口和协议

为了能够尽早可以运行集成测试,针对依赖服务,SET提供了mock和fake


2.17 自动化计划
  自动化投入的越多,维护的成本也就越大,在系统升级变化时,自动化也会更加不稳定,规模更小且目的性更强的自动化计划,并存在可以提供帮助的测试框架,这些会吸引SWE一起参与测试、

SET除了在这个计划中涵盖自动化之外,还要包括如何公布产品质量信息给所有关心的人。在Google、SET使用报表和仪表盘(dashboard)来展示收集到的测试结果以及测试进度。通过将整个过程简化和信息公开透明化,获取高质量代码的概率会大大增加。

2.18 可测试性

SET的第一要务就是可测试性。SET在扮演一个质量顾问的角色,提供程序结构和代码风格方面的建议给开发人员,这样开发人员可以更好地做单元测试。同时提供测试框架方面的建议,使得开发人员能够在这些框架的基础上自己写代码。


小结:

  • Google的SET角色的要求挺高的,不仅需要懂得技术,还需要拥有更宽广的产品视野,熟悉代码架构
  • Google十分重视代码审核
  • 质量信息公开透明化,如我们的dashboard(pds大电视)







0 0
原创粉丝点击