谷歌如何测试软件 —— 第三部分

本文作者 James Whittaker, 前微软架构师,是“How to Break Software”系列图书中好几部书的作者,现任Google测试工程主管,最近他写了一系列的关于谷歌如何测试软件的文章,本文为其系列的第三部分。

在前两部分的文章中,很多人在评论里提出了问题。我没有忘记他们。希望大部分的人能在余下的几部分文章里找到答案。我现在还是开始这篇文章的主题。

在Google,质量并不等于测试。我相信在任何一个地方都是如此。“质量不是被测试出来的”这句老话是再正确不过了。从汽车到软件,如果它们起初制造的就有问题,那它们永远都不会没问题。试问任何一个曾经被迫大量召回的汽车公司,掩盖质量问题的代价有多大。

然而,事实情况并不是像这句话那样既简单又精确。虽然质量并不是测试出来的,但我们有同样的证据表明,没有测试,你不可能开发出任何有质量的东西。一个人怎么可能在没有测试的情况下认定你的工程具有高质量?

对于这种难题,最简单的解决办法就是:禁止对开发工作开方便之门,以独立自由之精神进行测试。测试和开发工作需要同步进行。编写一点,测试一点。再编写一点,再测试一点。更好的方法是制定测试计划,或者你开发之前先把计划做好。测试并不是一个独立的工作,它是开发工作的一部分,伴随着整个开发过程。质量不等于测试;为了质量,需要你把开发工作和测试结合到一起,搅拌它们,直到分不清你我为止。

在Google,这是我们明确的目标:把开发和测试融合,你不能单独进行任何一项工作。做一点,测试一点。再做一点,再测试一点。关键就是看谁在做测试。因为在Google,专职测试人员是出奇的少,所以唯一可行的方法就是使用开发人员。还有比这些实际开发了这些程序的人员更合适做测试的吗?还有比程序的作者更适合去发现bug的吗?是谁具有更多的愿望在程序第一次写出时避免bug?Google之所以安排这么少的专职测试人员的原因就是,开发者负责质量。事实上,坚持使用大型测试机构的团队通常会开发出有问题的东西。测试机构庞大,这是一个信号表明编码/测试工作的融和有问题。增加测试人员并不能解决任何问题。

这就是说,质量措施更多的应该是一种预防行为,而不是一种发现过程。质量属于开发问题,而不是测试问题。通过把测试工作一定程度的融合到开发过程中,我们极大的降低了一些本来被认为会写很多有问题的代码的人的出错机会。我们不仅避免了大量的客户方的问题,我们还非常有效的降低了测试人员提出的、其实不是bug的bug。在Google,测试工作的目标就是检查这些预防工作是否在有效的运行。测试工程部一直在寻找这种作为bug创造者的软件工程师和作为bug预防者的测试软件工程师之间的联合能达到的效果的证据,一旦这个方法出现问题,他们就会拉响警笛。

这种开发和测试的结合随处可见,从代码审查注释上写的“你的测试呢?”到厕所里的给开发者的最好的测试实践方法的宣传画——这是我们臭名昭著的厕所测试指导方针。测试是开发工作中是必不可少的,开发和测试的联姻是孕育质量的过程。软工就是测试者,测试软工就是测试者,测试工程师就是测试者。

如果你的企业也有这种类型的结合,请分享出你们成功的经验与挑战。如果没有,那么这是一个给你的企业带来好处的机会:在开发人员和质量之间画上全等号。你们都听过这样一个老故事:小鸡很高兴能为一顿咸猪腿加鸡蛋早餐奉献自己的力量,可猪究竟做错了什么?的确是 … 去对你的开发人员哼哼两声,看能不能得到他们哼哼回应。如果他们发出的是咯咯哒的声音,那说明你们之间存在问题。

时间: 2025-01-11 09:18:50

谷歌如何测试软件 —— 第三部分的相关文章

在真机里安装 ubuntu 14.04和一些常用的软件(三)

在前面的基础上,最近使用ubuntu上网 看视频和用brackets 缩写PHP代码都可以了,不过我喜欢测试一些新的软件,最近安装了几个软件,在这儿记录一下. 第一.桌面美化软件--docky 和 Cairo-dock 安装都很方便,docky 直接在软件中心里安装就可以 安装完成,添加软件时的操作如下: 1.打开要添加的软件 2.在docky面板上看到图标,右键点击图标,有一个命令锁定在docky上,就可以了 cairo-dock:安装都先找到ppa 源再安装,命令如下: Add the PP

防火墙网络性能测试-(1)测试软件IxChariot 6.7的下载与安装

IxChariot 介绍 美国IXIA公司的应用层性能测试软件IxChariot是一个独特的测试工具,也是在应用层性能测试领域得到业界认可的测试系统.IxChariot能够评估网络应用的性能和容量,对网络和设备进行压力测试,得到设备及网络在不同应用.不同参数下的吞吐量.时延.丢包.反应时间等性能参数.作为压力.故障定位.评估设备及网络应用层性能的测试软件,是维护健康.快速.可靠网络和研发生产高性能网络设备所需的可靠工具.目前被世界众多的知名企业.运营商.制造商和评测实验室所使用造商和评测实验室所

无线信号强度测试软件WirelessMon

在无线覆盖工程中,经常需要测试现场的无线信号强度,确定无线信号是不是覆盖到位,无线信号强度是否达到要求.无线WiFi和声音一样,信号强度是可以测量的,笔记本电脑安装一个测试软件就可以测量无线信号强度,这里介绍一款最最常用的无线信号强度测试软件WirelessMon.    WirelessMon是一款无线信号测试软件,能列出周边所有的无线路由器.无线AP或基站的信号强度.信道等实时信息,测量显示出来的无线信息和数值,是调整信道避免同频干扰的重要依据,是一款无线覆盖工程必备的工具软件.    Wi

《软件工程》第二次作业:编写小学生四则运算测试软件

一.题目: 请编写一个能自动生成小学四则运算题目的 “软件”. 让程序能接受用户输入答案,并判定对错. 最后给出总共以及 对/错      的数量. 二.基本要求: 所编写出来的“软件”选择界面设计,选择加.减.乘.除运算. 系统随机产生一百以内的两个数进行运算. 使用该软件时,用户从键盘输入结果,回答正确和回答错误都有提示,结束后系统会自动给出相应的总题数和 对/错 的数量. 三.需求分析: 程序能实现0~100以内的加法.减法.乘法以及除法的运算. 用户能在java控制窗口输入自己的答案,该

[转帖]linux下CPU、内存、IO、网络的压力测试,硬盘读写速度测试,Linux三个系统资源监控工具

linux下CPU.内存.IO.网络的压力测试,硬盘读写速度测试,Linux三个系统资源监控工具 https://blog.51cto.com/hao360/1587165 linux_python关注0人评论57974人阅读2014-12-06 20:17:16 一.对CPU进行简单测试: 1.通过bc命令计算特别函数 例:计算圆周率 echo "scale=5000; 4*a(1)" | bc -l -q MATH LIBRARY        If bc is invoked w

Keyboard Test Utility v1.0.1.0 电脑键盘测试软件绿色版

软件名称: 电脑键盘测试软件绿色版软件语言: 简体中文授权方式: 免费软件运行环境: Win8 / Win7 / Vista / WinXP软件大小: 917KB图片预览: 软件简介:Keyboard Test Utility 是一个免费绿色的电脑键盘测试软件,它可以测试键盘上的每一个按键,第敲打一下,屏幕上虚拟键盘,就会在所打的键位上高亮颜色,并显示出该键盘的vk code和scan code 软件下载页面:http://www.bkill.com/download/29262.html 软件

一个蛮好的测试软件,测试你是否具有超级预测力

人类超能力测试软件 MyMagic Verison 1.0 版本号1.0 本软件用来测试用户是否具有超级预测力的能力. 本软件测试用户是否可以正确预见软件已经产生的数字,从而推测用户是否具有超能力的可能. 本软件支持1位.2位.3位.4位数字预测的测试. 本软件同时可以记录当前用户的测试正确的分数和具有预测超能力的可能性的百分比. 本软件具有在线用户帮助的能力. 本软件是共享软件.作者吴健保留版权.禁止逆向工程.盗版和破解.允许传播本软件完整软件包.保留法律权利.2015.8 http://fi

使用 IntraWeb (44) - 测试读取 SqLite (三)

使用数据连接池(TIWDataModulePool). 新建工程时勾选 Pool Data Connections: 新增的 Pool(TIWDataModulePool) 被放在 ServerController 的窗体上(其实它也是个数据模块), 需要知道的变化是它增加了两个函数: function LockDataModule: TDataModule1; procedure UnlockDataModule(ADataModule: TDataModule1); 同时 Wizard 还自

【VMCloud云平台】SCCM(七)域内推软件(三)- 静默推送

继上一篇云平台完成SCCM部署篇之后,SCCM篇正式开始,今天将开始介绍SCCM如何为域内机器推送软件并静默安装(紫色为完成实施,红色为实施中): 1. 按照上一章一样添加需要部署的程序,然后点击上端部署: 2. 选择集合为之前创建的集合: 3. 由于已经分发内容,这一页就保持默认即可: 4. 选择部署类型为必须,即不能给用户选择,直接安装: 5. 类型为必须时,必须选择计划,为了达到实验效果,这里选择为尽快: 6. 这里选择默认即可: 7. 默认下一步: 8. 确认下一步后点击确定: 9. 进