Google测试开发的工作

2020-07-23  本文已影响0人  0893051f5f11

一、工作职责

  1. 单元测试方面给予开发人员支持
  2. 为开发人员提供测试框架

二、统一代码库

三、版本构建流程

3.1 主要流程

  1. 针对某个功能或服务,在一个或多个源文件中编写一类或一系列功能函数,并保证所有代码编译通过
  2. 把构建新的目标设定为公共库
  3. 通过调用这个库的方式编写一套单元测试用例,把外部重要依赖通过mock来模拟实现。对于需要关注的代码路径,使用最常见的输入参数来验证。
  4. 为单元测试创建一个测试构建的目标
  5. 构建并运行测试目标,做适当的修改调整,知道所有测试都运行成功
  6. 按要求运行静态代码分析工具,确保遵守统一的代码风格,且通过一系列常见问题的静态扫描检测
  7. 提交代码申请代码审核,根据反馈再做适当的修改,然后运行所有的单元测试并保证顺利通过

测试驱动开发模式,可以将步骤3提至步骤1之前。

3.2 复杂服务构建

对于规模更大的服务,通过链接编译持续新增的代码,构建目标也会逐渐变大,直到整个服务都构建完成,形成一个产品。它必须由三个部分构成:一个经过良好测试的独立库,一个在可读性与可复用性都不错的公共服务库、一套覆盖所有重要构建目标的单元测试套件

四、设计评审关注点

设计评审时,需要有一定的目的性去阅读文档,需要完成以下特定的目标:
1、 完整性: 文档残缺不全、特殊背景所需知识点
2、 正确性:是否语法、拼写、标点符号等方面错误
3、 一致性: 确保配图和文字描述一致、确保上下文中没有出现逻辑矛盾、确保与相关文档一致的主张和观点
4、 设计: 设计必须要经过深思熟虑、考虑可用性、考虑目标能否顺利达成、用了什么基础技术框架、框架选型的原因分析、设计是否太过复杂、有能简化的方法么、是否还需增加内容
5、 接口及协议: 对所用协议的描述有清晰的定义、是否完整描述产品对外接口协议、接口协议的实现是否与期望功能一致、是否满足公司统一的标准、是否有对自定义格式做解释
6、 测试: 考虑文档中描述的系统可测试性、是否需要增加测试所需钩子、系统设计是否考虑到易测性、预估测试人员需要提前做哪些准备

六、测试大小定义

小型测试是为了验证一个代码单元的功能,中型测试验证两个或多个模块应用之间的交互,大型测试为了验证整个系统作为一个整体是如何工作的。

1. 小型测试

2. 中型测试

3. 大型测试

七、 测试规模在共享测试平台中的使用

使用统一的运行方式来执行不同的自动化测试是有一定难度的。这个平台必须支持运行各种各样的测试任务。

1. google测试执行平台运行的通用任务如下:

2. 运行状态如下:

测试执行系统利用测试规模的定义,把运行较快的任务从较慢的任务中挑选出来。不同测试规模在测试运行时间上规定了一个运行时间的最大值,同时测试规模在测试运行消耗的资源上也做了要求。当执行任务不满足要求时,会把测试任务取消并报告这个错误。这会迫使工程师提供合适的测试规模标签,精准的测试规模,可以使执行系统在调度时做出明智选择

八、测试规模的优缺点

小型测试带来优秀额代码质量、良好的异常处理、优雅的错误报告;大中型测试带来整体产品质量和数据验证。单一的测试类型不能解决所有项目需求。总体上google公司对于一个项目的测试规模占比,有一个经验法则:70%小型;20%中型;10%大型。

1. 大型测试

2. 中型测试

3. 小型测试

九、测试运行要求

由于测试执行在公用环境中,因此就要要求测试用例满足下面几个条件:

1.  每个测试用例和其他测试之间独立的,使它们能够以任意顺序执行
2.  测试不做任何数据持久化。测试用例离开测试环境时,保证测试环境的状态与用例执行前的状态一致。

tips: 任意顺序意味着可以并发执行。

五、测试执行系统

  1. 必须考虑如何编译测试程序、执行、分析、存储和报告所有测试运行结果,这些都是自动化测试会遇到的挑战。
  2. 一个可以做代码编译、测试执行、结果分析、数据存储、报表展示的通用框架。
  3. 只有能加快开发过程的自动化测试才有意义,所以自动化必须与开发过程真正集成起来。
  4. 新增测试程序后,需要对测试创建一个构建说明文档,里面包括测试名称、源码文件、依赖库、还要指明其规模大小。

tips:

  1. 文档要求详尽,要求解释说明:角色、测试用例职责、测试执行者、集群系统、运行时刻的libc、依赖文件系统等
  2. 可以提供具体哪次代码变更导致失败
  3. 可以利用依赖分析技术寻找可能受影响的模块,并触发对应模块用例
上一篇 下一篇

猜你喜欢

热点阅读