Google软件测试之道

Google对质量的理解

  • 质量不等于测试,即质量不是被测出来的
  • 开发和测试应该并肩齐驱,测试就是开发过程中不可缺少的一部分
  • 质量是一种预防行为而不是检测

Google对软件测试的划分

抛却复杂的专业术语,简单按照测试范围去划分:

  • 小型测试:对一个代码单元的测试,通常就是单元测试
  • 中型测试:对两个或多个模块之间交互的测试,通常类比于“集成测试”
  • 大型测试:对一个应用系统及其子系统整体的测试,通常类比于“端到端测试”

这样划分的好处有:

  • 容易定位问题:测试范围从小到大,各自负责不同的功能,某个测试一旦失败容易让开发找到问题所在
  • 产生较高的测试回报率:测试的回报率等于测试所产生的业务价值与测试执行成本之比。范围小的测试越容易被自动化,但因为覆盖业务范围小所产生的业务价值也就越小,范围大的测试则反之。根据团队和产品具体情况,通过制定合理的测试策略和划分测试范围,决定自动化测试的比例,可以产生较高的测试回报率

Google对软件测试角色的划分

  • SWE(软件开发工程师):主要职责是实现用户功能,除编码外也具有编写和组织测试的能力,日常活动是代码设计、代码实现与编写测试
  • SET(软件测试开发工程师):主要职责是让SWE更容易地去写测试工作重心在可测试性和通用测试基础框架上,是SWE的紧密合作伙伴,关注质量提升,具备观察代码质量、编写测试框架等能力,日常活动是参与设计评审、代码重构、编写测试框架等
  • TE(测试工程师):主要职责是专注于用户角度的测试,关注集成后的系统是否可以满足最终用户的需求,是真正的产品专家、质量顾问和风险分析师,具备全局审视与分析思考的能力,日常活动是模拟用户使用场景,对SWE和SET编写的测试进行分类组织,分析、解释和测试运行结果,特别是在项目最后阶段推进产品发布

与传统软件测试中的角色不同,Google将编写测试的工作大部分转交给SWE进行,因为测试本来就应该是开发工作的一部分,由开发去完成再合理不过。考虑到SWE在测试编写方面需要统一的支撑,SET作为SWE的紧密合作伙伴介入进来,予以框架工具和技术方面的支持,并帮助观察代码质量。而TE的作用向后推移,更关注系统集成为一个整体后,从用户角度是如何使用的,能否满足用户需求,因为毕竟质量的定义就是“满足用户需求”。TE看起来更像一个具备很强验收能力的产品经理,并且被验收的不仅仅是用户需求,还会用放大镜仔细看SWE和SET所做的测试工作细节

Google的“工程生产力团队”

测试是独立存在并与业务领域部门平行的部门,横跨于各个业务领域,被称为“工程生产力团队”。测试人员以租借的方式进入产品团队帮助做提高质量相关的事情,寻找测试方面的可改进之处。测试人员并不直接向产品团队汇报。这种借调模式,一是可以帮助测试人员保持新鲜感,二是可以让一个好的测试实践迅速在公司内的不同团队间蔓延。

测试左移(前移)与测试右移(后移)

相对于传统的认为测试工作主要是测试人员的事的看法,Google提倡测试左移与测试右移:

  • 测试左移:开发阶段就应该完成大部分测试工作,尽量将测试放在早期进行,有助于尽早发现问题和质量内建
  • 测试右移:既然TE的主要工作是从用户角度审视产品是否满足用户需求,那为什么不直接找真实用户来进行测试呢?内测用户、众包测试都是测试右移的手段,直接、快速地收集来自真实用户的反馈,能得到更有用户价值的测试结果

但是,个人认为测试左移是测试右移的前提条件,即团队尚不能完全保障产品的功能完整与稳定性之前,不要仓促开放给哪怕只是部分用户。团队应该先着力于发展自己内建质量的能力,即让人人都来关注质量,以及提前预防问题的发生。

《Google软件测试之道》的更多相关文章

  1. 简单物联网:外网访问内网路由器下树莓派Flask服务器

    最近做一个小东西,大概过程就是想在教室,宿舍控制实验室的一些设备. 已经在树莓上搭了一个轻量的flask服务器,在实验室的路由器下,任何设备都是可以访问的:但是有一些限制条件,比如我想在宿舍控制我种花 ...

  2. 利用ssh反向代理以及autossh实现从外网连接内网服务器

    前言 最近遇到这样一个问题,我在实验室架设了一台服务器,给师弟或者小伙伴练习Linux用,然后平时在实验室这边直接连接是没有问题的,都是内网嘛.但是回到宿舍问题出来了,使用校园网的童鞋还是能连接上,使 ...

  3. 外网访问内网Docker容器

    外网访问内网Docker容器 本地安装了Docker容器,只能在局域网内访问,怎样从外网也能访问本地Docker容器? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Docker容器 ...

  4. 外网访问内网SpringBoot

    外网访问内网SpringBoot 本地安装了SpringBoot,只能在局域网内访问,怎样从外网也能访问本地SpringBoot? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装Java 1 ...

  5. 外网访问内网Elasticsearch WEB

    外网访问内网Elasticsearch WEB 本地安装了Elasticsearch,只能在局域网内访问其WEB,怎样从外网也能访问本地Elasticsearch? 本文将介绍具体的实现步骤. 1. ...

  6. 怎样从外网访问内网Rails

    外网访问内网Rails 本地安装了Rails,只能在局域网内访问,怎样从外网也能访问本地Rails? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Rails 默认安装的Rails端口 ...

  7. 怎样从外网访问内网Memcached数据库

    外网访问内网Memcached数据库 本地安装了Memcached数据库,只能在局域网内访问,怎样从外网也能访问本地Memcached数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装 ...

  8. 怎样从外网访问内网CouchDB数据库

    外网访问内网CouchDB数据库 本地安装了CouchDB数据库,只能在局域网内访问,怎样从外网也能访问本地CouchDB数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动Cou ...

  9. 怎样从外网访问内网DB2数据库

    外网访问内网DB2数据库 本地安装了DB2数据库,只能在局域网内访问,怎样从外网也能访问本地DB2数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动DB2数据库 默认安装的DB2 ...

  10. 怎样从外网访问内网OpenLDAP数据库

    外网访问内网OpenLDAP数据库 本地安装了OpenLDAP数据库,只能在局域网内访问,怎样从外网也能访问本地OpenLDAP数据库? 本文将介绍具体的实现步骤. 1. 准备工作 1.1 安装并启动 ...

随机推荐

  1. 探究 Nginx 中 reload 流程的真相

    今天这篇文章主要来介绍下 Nginx 的 reload 流程.实际上在之前文章中,在更改了 nginx 配置文件时,我们都会执行 nginx -s reload 命令,我们执行这条命令的原因是希望 n ...

  2. 打开TXT文件并显示

    <!DOCTYPE html> <html> <head> <title></title> <script> function ...

  3. 使用Vim编辑器,如何退出

    我们输入“冒号”,即":"(不需双引号),在下方会出现冒号,等待输入命令,我输入的是WQ.功能如下. W:write,写入 Q:quit,退出 再回车,就保存退出了 其实,保存退出 ...

  4. 代码检查又一利器:ArchUnit

    Code Review总是让人又爱又恨,它可以帮助我们在提测之前发现很多代码中比较"丢人"的问题,但是,Code Review通常会比写代码更加耗费精力,因为你需要理解别人的代码, ...

  5. 深入解析Java反射

    因为本人最近正筹备Samsara框架的开发,而其中的IOC部分非常依靠反射,因此趁这个机会来总结一下关于Java反射的一些知识.本篇为基本篇,基于JDK 1.8. 一.回顾:什么是反射? 反射(Ref ...

  6. html5 websocket 示例,websocket在线聊天,php websocket实例

    WebSocket在线测试工具 http://ws.douqq.com/ 1.连接格式为 ws://IP/域名:端口(示例ws://119.29.3.36:5354) 2.对于内网的测试环境,只需填入 ...

  7. 安装完PyCharm,启动时弹出Failed to load JVM DLLbinserverjvm

    安装完PyCharm,启动时弹出"Failed to load JVM DLL\bin\server\jvm.dll"解决方案 问题描述:打开PyCharm时,弹出"Fa ...

  8. SpringBoot电商项目实战 — Zookeeper的分布式锁实现

    上一篇演示了基于Redis的Redisson分布式锁实现,那今天我要再来说说基于Zookeeper的分布式现实. Zookeeper分布式锁实现 要用Zookeeper实现分布式锁,我就不得不说说zo ...

  9. RabbitMQ 离线安装(带视频)

    疯狂创客圈 Java 高并发[ 亿级流量聊天室实战]实战系列 [博客园总入口 ] 架构师成长+面试必备之 高并发基础书籍 [Netty Zookeeper Redis 高并发实战 ] 疯狂创客圈 高并 ...

  10. Selenium 与自动化测试 —— 《Selenium 2 自动化测试实战》读书笔记

    背景 最近在弄 appium,然后顺便发现了 Selenium 框架和这本书,恰好这本书也介绍了一些软件测试&自动化测试的理论知识,遂拿过来学习学习.所以本文几乎没有实践内容,大多都是概念和工 ...