读书笔记:Google软件测试之道【一】

目录

前言

1、Google软件测试介绍

2、角色

3、分工

4、组织架构

5、版本


前言

       在职业生涯的头6年,我对所谓的测试策略、测试组织架构了解甚少,也不知道谁对谁错。我知道的事情只有一个:我是一名程序员,我的日常工作除了做需求分析和代码开发以外,我还需要做单元测试(数据准备、案例编写和测试报告撰写)、SIT测试(数据准备、案例编写和报告撰写)及UAT测试支持(数据准备)。简而言之,就是我们一个小团队,就是一帮开发工程师相互配合,组长负责进度质量把控与需求分析,下面的开发人员负责各自模块的开发与测试,团队成员之间会进行互测和代码审查以保证质量。但是,我认为正是这种貌似不严谨实则更科学合理的分工恰恰让我们培养起做事严谨、设计全面(特别是非功能性,如可测试性、可运维性等)的态度。

        今天,回顾在前司的工作跟《Google软件测试之道》这本书在某种程度上是不谋而合的。

 

1、Google软件测试介绍

- Google成功的关键是什么?作者的第一个建议就是不要招聘太多的测试人员。

- Google的测试团队更像小而精的特种部队,我们依靠的是出色的战术和高级武器。

- 在Google,写代码的开发人员也承担了质量的重任,开发者本身就是测试者。

- 质量不等于测试。当你把开发过程和测试放到一起,就像在搅拌机里混合搅拌那样,直到不能区分彼此的时候,你就得到了质量。

2、角色

You build it , you break it , you fix it.离故障和缺陷最近的人绝对是开发人员,因此只有或者应该由开发人员才能修复。在Google分为三种角色:

1、软件开发工程师(SWE, Software Engineer),传统意义上的开发人员,负责所有业务功能的实现,创建设计文档、数据字典、接口文档,并花大量时间在代码实现及审查这两方面;同时他也要负责单元测试工作,及参与各种各样的测试工作(如类似的集成测试等);

2、软件测试开发工程师(SET, Software Engineer in Test),他也是一个开发角色,只是工作重心会在代码的可测试性和基础的通用测试框架上。他们会参与项目的设计评审,更有甚者对负责对代码进行重构以便增加代码可测试性。SET是SWE在代码库层面的合作伙伴,只是SET会更关注整体质量提升及测试覆盖率的提高,而SWE会更关注业务功能的实现,这就是这两者的区别。

3、测试工程师(TE, Test Engineer),TE把用户放在第一位来思考;他们会组织整体质量实践,分析解释试运行结果,驱动测试执行,构建端到端的自动化测试。他们是真正的产品专家、质量顾问和风险分析师。

3、分工

从上述三种岗位职责基本可以看出来他们是如何配合:

首先,SWE会根据业务需求编写代码实现业务功能;但是做过很多年开发的同学也知道,代码中含有的功能(这里称“代码功能”)应该是业务功能和非业务功能(如容错性代码、运维辅助性代码、测试辅助性等)的总和。因此,需要SET提供测试支持,如建立测试框架保证通用测试能力,参与项目的设计评审,在测试角度(非开发角度)去审核代码与设计方案以确保方案或者代码的可测试性,这样即可实现真正意义上的独立功能模块的要求(因为测试案例也是基于独立功能模块的边界去设计的),后面的模块迁移可以做到功能代码和测试代码的共同迁移;

接着,在我看来,TE的工作主要分为两个阶段,即集成测试后期用户测试(虽然Google里面没有SIT和UAT一说)。在SIT后期阶段,TE会通过SWE和SET在前面阶段产生的测试数据进行统计分析,并根据分析结果要求团队进行相应改进,这一阶段他负责整体的交付质量;在UAT阶段,TE会作为其中的用户测试人员参与,过程中除了考虑用于体验和使用场景外,TE也会考虑性能、安全、国际化等问题。

另外在分工方面,Google的很多项目中,其实测试人员多样化实践也确实做得不错,诸如合同编制的测试人员、众包形式参与的测试者、内部尝鲜者、beta测试者及早期用户,正因为测试用户群体广泛性带来的观念、目的、使用习惯等因素的多样性,才保证了测试的有效性,而这个有效性不是纯在于对功能需求的100%匹配,而是更在于尽早发现不符合用户期望的东西并剔除掉。

4、组织架构

Google的测试是作为独立的部门而存在的,与各个专注于各领域的业务条线部门平行,测试组织被称为工程生产力团队。在每个项目中,测试人员是以租借的形式进入产品团队,去做提高质量相关的事情。因为测试人员并不是直接向产品团队汇报,因此在发布流程中测试并不是一个被通知的角色。他们有自己的优先级,在安全性、可靠性等问题上不会妥协,除非碰到更重要的事情,但是该事情必须得与测试部门提前沟通。

正因为上述的组织架构,才保证了测试团队的人员数量控制在数量较少规模。同时,测试团队会要求产品团队不能降低要求来招聘更多的测试人员,从而让他们做一些简单重复琐碎的脏活累活,这样则反向要求开发人员对自己的交付有一定的要求,而不是随便写完代码就丢给测试人员去测,这样对开发人员反而是一种测试能力和开发素养上的培养。

5、版本

Google的发布过程虽然快,但是实际上在正式发布前还是经历了一系列的内部版本验证过程以证明它已经具备一定的质量。主要分为以下的顺序:

1、金丝雀版本:

这是每天构建的版本,用于排除一些有明显不适宜的版本。一般来说,只有该产品的工程师和管理人员使用。

2、开发版本:

这是开发人员日常使用的版本,每周发布一个。该版本相比金丝雀版本较为稳定并且要求该产品下面的工程师在日常真实工作中强制使用。

3、测试版本:

该版本应该是最近一个月的最佳版本,也是最稳定最合适的一个版本。同时也作为内部尝鲜版给内部尝鲜者使用,如果该版本有持续的良好表现即可能被作为beta测试的候选版本。

4、beta或发布版本:

该版本由非常稳定的测试版本演变而来,并且经理内部使用和通过所有质量考核,因此也是对外发布的第一个版本。

Google里面的这种爬、走、跑的模式,能够为应用程序尽早提供一个测试验证的机会,与从自动化测试反馈一样,每天都能从用户那里得到有用的反馈。

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
# 图书管理系统说明V2.0 ### 项目介绍及再版说明(2016-01-24) 其实一开始做这个小项目在2014年的9到11月,当时是作为加入Pureweber开发组的大作业完成的。虽然用了两个月的时间,但是做出的东西还是有很多的缺陷。前些日子在整理GitHub时又想起来了这个项目,记得曾经还在Django中国社区里安利初学者来读代码什么的。但是想想里面还有很多不规范的代码和一些很糟糕的写法就感觉很蛋疼。本来想直接删除了好了,但是后来想想,何不花点时间把这个小项目重构一下,就可以给以后学习Django的同学一个完整的项目参考,就可以代替了一般培训课程或者老师上课PPT里那种陈旧或者不完整的例子。 于是一共花费了大约两天时间对项目进行了重构,主要做了以下方面的工作: * 将Django的版本更新到了最新的1.9.1。 * 修改了原先项目中不规范的格式、变量名等。 * 更改了项目的目录结构,换成了Django官方推荐的目录结构模式。 * 将原来缺失的文件上传保存部分补充完整了。 * 更改了用户部分的代码,将原来手动设置session的方式去掉了,替换为Django用户模块默认的登录态保存方式. * 修复了注册用户时用户提交空密码可能造成的安全漏洞。 * 做了对python3的支持。改动不多。 ### 项目所涉及的和Django相关的功能 项目的目的是为了给Django的初学者一个完整项目的参考案例,所以尽可能多的选择了初学者常用的方法处理一些问题,比如在视图的处理上选择了视图处理函数,而不是更好用的视图处理类。在参数传递上只使用了标准的POST和GET的方式传参,而没有使用url地址中提取参数的办法。该项目中主要涉及到的Django框架相关的内容有: * Models模型字段用法,外键关系用法。 [文档](https://docs.djangoproject.com/en/1.9/topics/db/models/) * 使用ORM进行数据库查询。 [文档](https://docs.djangoproject.com/en/1.9/topics/db/queries/) * Urls配置文件的写法,Urls命名与反向查询。 [文档](https://docs.djangoproject.com/en/1.9/topics/http/urls/) * Views视图处理函数。 [文档](https://docs.djangoproject.com/en/1.9/topics/http/views/) * Templates模板。 [文档](https://docs.djangoproject.com/en/1.9/ref/templates/language/) * 在admin站点中注册模型。 [文档](https://docs.djangoproject.com/en/1.9/ref/contrib/admin/) * Django自带用户模块的注册和登录。 [文档](https://docs.djangoproject.com/en/1.9/topics/auth/default/) * 对Django自带的用户模块进行拓展。 [文档](https://docs.djangoproject.com/en/1.9/topics/auth/customizing/) * 静态文件处理。 [文档](https://docs.djangoproject.com/en/1.9/ref/contrib/staticfiles/) * 还有一大堆其他的…… ### 系统说明 * 本系统使用PythonDjango框架搭建。 * 前端部分使用bootstrap。 ### 运行说明 * 请参考Django官方文档[下载](https://www.djangoproject.com/download/)Django1.711.9.1版。 * 请按照Django官方文档[安装](https://docs.djangoproject.com/en/1.9/intro/install/)Django。 * 如果是水果电脑。。。请额外安装[PIL](http://www.pythonware.com/products/pil/)库。 * 通过终端进入项目文件夹。 * 在终端中执行`python manage.py runserver`命令即可运行本地开发服务器。 * 在浏览器里访问`http://127.0.0.1:8000`即可查看该网站。 ### 功能实现 * 实现了用户权限相关的基本操作(注册、登陆、修改密码、注销) * 实现了用户分级(普通用户与管理员用
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值