`
kyke
  • 浏览: 53015 次
  • 来自: 广州
社区版块
存档分类
最新评论

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

阅读更多

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

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

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

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

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

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

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

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

相关推荐

    华为P40安装谷歌框架步骤1——backup.rar

    华为P40下载谷歌框架第一步。 使用手机浏览器下载(对浏览器无要求),在文件管理中找到下载的安装包 1、文件管理——长按压缩包——更多——解压至——内部存储——选择目录——Huawei(位置在中间偏下)——勾选右...

    软件测试方法和技术(又名全程软件测试,电子版,朱少民著)

    在介绍两个典型项目(Google Talk客户端功能和Web应用——雅虎日访功能)后,作者给出了制定测试规范的建议。 在测试计划的制定方面,书中详细讲解了需求评审的重要性和标准,以及测试人员在需求评审中的角色。书中...

    解析Google Android SDK——智能手机开发范例手册-下载代码

    《解析Google Android SDK——智能手机开发范例手册》是一本深入探讨Android应用开发的书籍,它提供了丰富的实例,帮助开发者理解并掌握Android SDK的各种工具和技术。本文将基于书中的章节命名,如c3、c12等,来...

    Google Android SDK开发范例大全——示例代码

    总之,"Google Android SDK开发范例大全"的第三章提供了Android开发的关键概念和实践操作,帮助开发者扎实基础,提升技能。通过书中详尽的示例,读者不仅可以理解理论知识,还能动手实践,真正掌握Android开发的精髓...

    安卓Android源码——引用第三方库的方法.zip

    在现代Android开发中,大部分第三方库的引入都是通过Gradle构建系统实现的。Gradle是一个灵活的构建工具,允许开发者在build.gradle文件中声明依赖。例如,要添加一个名为`library_name`的库,只需在app模块的build...

    从入门到精通HTML5——PDF——网盘链接

     第8章 层标记——div 161  教学录像:33分钟  8.1 层 162  8.1.1 层的分类 162  8.1.2 定义数据块 162  8.2 <div>标签 163  8.2.1 <div>标签的简介 163  8.2.2 <div>标签的属性 164  ...

    安卓Android源码——精典源码之引用第三方库的方法.zip

    本资料包“安卓Android源码——精典源码之引用第三方库的方法”旨在深入探讨如何在Android项目中集成和使用外部库。下面将详细阐述这一主题。 1. **依赖管理工具Gradle** Android项目主要使用Gradle作为构建工具...

    hadoop实战——初级部分学习笔记 2

    ### Hadoop实战——初级部分学习笔记 2 #### 一、引言与背景 随着大数据时代的到来,Hadoop作为处理大规模数据集的核心工具之一,其重要性和应用范围日益扩大。本文将基于私塾在线《Hadoop实战——初级部分》的...

    动手学Android之三——第一个界面例子程序

    总的来说,"动手学Android之三——第一个界面例子程序"是一个引导性的实践教程,旨在帮助初学者建立起Android开发的基础。通过这个过程,你不仅学会了如何创建基本的用户界面,还了解了Android应用的基本架构和工作...

    云应用开发 ——Google App Engine & Google Web Toolkit入门指南

    ### 云应用开发 ——Google App Engine & Google Web Toolkit入门指南 #### 第1章 应该了解下 ##### 1.1 云基本知识 云计算是一种通过互联网提供按需计算资源和服务的方式,包括网络、服务器、存储、应用程序和...

    android真实项目教程(五)——有时三点两点雨_by_CJJ

    6. **天气API集成**:开发者通常会使用第三方天气API(如OpenWeatherMap、Weather Underground等)来获取实时天气数据。 7. **位置服务**:应用可能需要获取用户的地理位置以显示当地天气,这就涉及到了Location ...

    Google.Android开发入门与实战第12章.Android综合案例一——RSS阅读器实例

    在本章节中,“Google.Android开发入门与实战第12章.Android综合案例一——RSS阅读器实例”主要聚焦于Android应用程序开发中的一个实际应用场景——构建一个RSS阅读器。这个实例将帮助初学者理解如何将Android SDK的...

    信息化革命的第三次飞跃——云计算.pdf

    云计算是信息技术领域的一次重要革命,它标志着信息化发展历程中的第三次飞跃。云计算的概念最早于2007年由谷歌提出,它基于互联网,允许用户在线共享硬件、软件及信息资源,并通过这种超级计算模式实现资源的存储与...

    Java集成第三方OCR识别 ——代码篇

    在Java开发中,集成第三方OCR(Optical Character Recognition,光学字符识别)技术是常见的需求,尤其是在处理图像中的文字提取和识别场景。本篇文章将重点介绍如何在Java项目中实现这一功能,通过代码来阐述具体...

    IOS应用源码——简单的google应用demo.zip

    通过研究这个源码项目,开发者不仅可以学习到基础的iOS编程,还能深入了解如何在实际项目中整合Google服务,同时掌握第三方库的管理和使用。这对于提高iOS开发技能和理解应用程序的全貌非常有帮助。

    谷歌浏览器_编码工具——

    相反,Chrome浏览器通过其庞大的扩展生态系统,为用户提供了丰富的第三方插件选择。比如“Chrome-Charset-master.zip”这样的编码插件,它可能是一个专为Chrome设计的扩展程序,用户通过安装这样的插件,即可恢复并...

    安卓Android源码——三个语音识别例程mystt.zip

    如果需要更复杂或者特定的识别功能,开发者可以考虑使用第三方SDK,如阿里云、讯飞等提供的语音识别服务。这些服务通常提供更准确的识别效果,支持多种语言和方言,并且可能有额外的特性,如实时流式识别。 最后,...

    Android源码——手机铃声软件源码.7z

    10. **发布与打包**:最后,开发者需要将应用打包成APK文件,签名并发布到Google Play Store或其他第三方应用市场。 以上就是基于提供的标题和描述所涉及的Android开发主要知识点。具体的源代码实现会根据设计和...

Global site tag (gtag.js) - Google Analytics