提高软件质量实践:Amazon篇

Amazon是一个很传奇的公司,它1995年的时候以一个网上书店起家,在短短的十几年里成为全球最大的在线购物公司。更为甚者,他在2005推出的AWS云计算服务更是被业界公认为云计算的鼻祖,也是现在全球最大最成功的云计算服务提供商。

AD:

前几天回国转了一圈,做了两家企业质量管理培训,一次上海测试沙龙,和chinatest两次演讲。收获颇多,以后慢慢分享。回来后发现我的软件质量实践系列文章距离上一次发表已经有很长一段时间了。我想还是先把它写完,再写别的文章吧。那么今天我们看看互联网公司的另外一个大哥大是如何做质量控制的――Amazon.

Amazon是一个很传奇的公司,它1995年的时候以一个网上书店起家,在短短的十几年里成为全球最大的在线购物公司。更为甚者,他在2005推出的AWS云计算服务更是被业界公认为云计算的鼻祖,也是现在全球最大最成功的云计算服务提供商。我一直坚信成功的产品一定是由成功的质量控制做保障的,采取什么样的测试策略只有两个决定因素。一是企业文化,二是产品特点。在分析Amazon的测试策略之前,我们先看看它的企业文化。

业界关于amazon企业文化和成功要素有很多,我觉得实际上最为核心的只有一个,就是他们的“low margin, large volume”理念。就是通过单个商品的低利润和巨大的销售量来最终提高公司利润和公司业务向前发展。工程团队的理念就是要保障企业文化得以顺利实施,所以Amazon的工程团队的理念就是如何保障公司“low margin, large volume”的企业文化。Amazon工程团队有以下特点:

  • 独立的团队:在Amazon,负责产品功能模块的每个团队相对独立。他们对该模块的所有功能,性能,开发,质量,上线,维护等从头到尾的绝对负责。我们在Google中也可以明显看的这一特征.
  • 敏捷的团队:为了保障团队的敏捷,Amazon采用“2个比萨饼”的原则来看控制一个团队的大小。也就是2个比萨饼就可以吃饱(5-7个人)的大小。团队内部和团队之间尽量减少工作的交接,一方面减少因为交接照成的不必要延迟,另一方面避免互相推卸责任。Amazon是最早采用敏捷开发(scrum)的公司之一,他们现在绝大多说产品组都是用scrum,据说有超过400多个CSM.
  • 面向服务的产品体系架构。在01年的时候,Amazon随着它的产品线迅速扩大,业务逻辑越来越复杂,现有的产品体系架构极大地限制了整个公司的高速发展。他们重新设计了基于面向服务的,松耦合体系架构,使得各个模块独立开发,修改和维护。所以Amazon可以在不牺牲质量的同时,快速推出新产品新服务。

很遗憾的是Amazon很少公开谈论他们的质量管理流程和策略,不过通过有限的资料,还是不难看出他们的质量管理的策略:

  • 开发对质量负责:因为每个团队对模块完全负责,并且要做到敏捷。Amazon要求开发对质量负责:从设计,写代码开始一直到代码上线。开发做测试不仅可以尽快地发现bug,而且可以避免过分依赖测试人来提高质量,更为重要的优点是开发在设计是会考虑代码的可测试性 (因为他们自己要测试,肯定想方设法使得测试更为容易些),从而使得模块容易测试,容易维护,松耦合,最终极大提高模块质量。因为开发做了大量的测试,Amazon专职测试工程师也比较稀少(据说对开发的比例是1:7左右)。测试的主要职责是负责复杂用户环境下的测试,以及开发测试工具,流程和基础设施。而且很多产品组把一部分功能测试外包,所以即使Amazon的测试工程师不多,但是整个产品的测试工作却没有一点减少。
  • 自动化测试:这里我就不在多说了,和microsoft, google一样,他们开发了大量的测试工具和流程基础设施来提高测试效率。开发专注于写代码和测试,不用在搭建环境,部署,运行测试用例,和反馈上浪费时间。除了测试自动化外,他们也开发了一整套用以产品上线,维护和监控的工具和流程。只有这样,开发才有可能既要写代码,又要对代码质量从头到尾负责。
  • 数据驱动的决策流程:和google一样,Amazon全方位监控它的应用服务的运行状态,从每个API调用时间,到用户使用产品的每一步骤。根据对这些数据的分析和挖掘,开发团队决定如何提高产品质量。

如果大家熟悉Google的软件质量实践应该可以发现,Amazon和google在软件质量控制的理念和实践有非常的相似之处。有所不同的是,google的很多项目以实验性为目的,最初没有任何专职测试。只有等到项目真的被重视后,测试才开始介入。做为互联网产品的两个大哥大,他们的测试方式或许可以代表着互联网产品的测试发展方向吧。下一次我们介绍最后一个公司的测试策略-facebook。

时间: 2024-08-01 07:37:09

提高软件质量实践:Amazon篇的相关文章

提高软件质量实践――Facebook篇

Facebook从04年的哈佛校园的学生项目在短短的7-8年的时间中快速增长为拥有10亿用户的世界上最大的社交网络,又一次见证了互联网创业成功的奇迹.同时它的产品研发流程也成为了众多互联网产品公司的追逐对象.今天我们来看一下facebook在产品质量控制方面的实践.有人说,现在的google象早期的微软,现在的facebook象早期的Google. 我觉得无不道理. 虽然facebook已经早已不是创业公司,但是不难看出它在产品研发和质量控制仍然保持着创业公司的风格.在产品研发上,他们以小的研发

jQuery最佳实践完整篇_jquery

上周,我整理了<jQuery设计思想>. 那篇文章是一篇入门教程,从设计思想的角度,讲解"怎么使用jQuery".今天的文章则是更进一步,讲解"如何用好jQuery". 我主要参考了Addy Osmani的PPT<提高jQuery性能的诀窍>(jQuery Proven Performance Tips And Tricks).他是jQuery开发团队的成员,具有一定的权威性,提出的结论都有测试数据支持,非常有价值. ============

网站策划与运营实践心得篇—献给站长

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 企业在互联网上开展电子商务的第一步就是建立企业网站.从这个角度而言,电子商务专业学生毕业后都会必需拥有帮企业做网站的专业技能.但毕业后却发现自己的技术又不高,觉的毕竟不是计算机专业的学生,建立企业网站怎样也比不上计算机专业的毕业生,那电子商务专业的毕业生怎样表现自己的优势呢?能够让更多的企业把网站建设的大权交给电子商务专业的学生呢?下面我提供

NET 下RabbitMQ实践 [实战篇]

之前的文章中,介绍了如何将RabbitMQ以WCF方式进行发布.今天就介绍一下我们产品中如何使用RabbitMQ的! 在Discuz!NT企业版中,提供了对HTTP错误日志的记录功能,这一点对企业版非常重要,另外存储错误日志使用了MongoDB,理由很简单,MongoDB的添加操作飞快,即使数量过亿之后插入速度依旧不减.     在开始正文之前,先说明一下本文的代码分析顺序,即:程序入口==>RabbitMQ客户端===>RabbitMQ服务端.好了,闲话少说,开始正文!     首先是程序入

使用STAF/STAX框架缩短开发时间并提高软件质量

本文简要地介绍 STAF/STAX 测试自动化框架,并且展示如何使用它来构建一个框架,在复杂试验台中实现测试自动化和持续集成. 回归测试往往用于确保软件变更不会在软件中引入新的问题或故障.另外,还可以用它来确保您不会重新引入之前修复的错误.如果软件对第三方组件和库有诸多依赖项,比如 XML 处理 API 或 JPA 等数据库提取 API,那么新问题的引入会非常常见.在这些情况下,数据库架构的一个小小的改动就可能会导致难以预测的应用程序行为变更.如果软件本身很复杂,对常见代码段的一个小小的更改都会

NET下RabbitMQ实践 [配置篇]

这个系列目前计划写四篇,分别是配置,示例,WCF发布,实战.当然不排除加餐情况. 介绍: rabbitMQ是一个在AMQP协议标准基础上完整的,可服用的企业消息系统.他遵循Mozilla Public License开源协议.采用 Erlang 实现的工业级的消息队列(MQ)服务器. RabbitMQ的官方站:http://www.rabbitmq.com/          AMQP(高级消息队列协议) 是一个异步消息传递所使用的应用层协议规范,作为线路层协议,而不是API(例如JMS),AM

NET下RabbitMQ实践 [示例篇]

在上一篇文章中,介绍了在window环境下安装erlang,rabbitmq-server,以免配置用户,权限,虚拟机等内容.今天将会介绍如果使用rabbitmq进行简单的消息入队,出队操作,因为本文演示的环境要用到上文中配置的环境,所以要运行本文sample,请先按上一篇中完成相应环境配置.         首先,我们下载官方的.net客户端软件,链接:http://www.rabbitmq.com/dotnet.html.下载并安装之后,将安装目录下的这两个DLL文件复制到我们示例项目中,并

一起谈.NET技术,NET下RabbitMQ实践 [配置篇]

     这个系列目前计划写四篇,分别是配置,示例,WCF发布,实战.当然不排除加餐情况.      介绍:      rabbitMQ是一个在AMQP协议标准基础上完整的,可服用的企业消息系统.他遵循Mozilla Public License开源协议.采用 Erlang 实现的工业级的消息队列(MQ)服务器.      RabbitMQ的官方站:http://www.rabbitmq.com/          AMQP(高级消息队列协议) 是一个异步消息传递所使用的应用层协议规范,作为线路

如何提高网站访问量 内容篇

中介交易 http://www.aliyun.com/zixun/aggregation/6858.html">SEO诊断 淘宝客 云主机 技术大厅 空间.域名选好了,下一步就是建站了.你可以下载一个建站系统,或者自己制作网页 首先,你要确定网站主题.要知道,想通过搜索引擎带来大流量,最简单直接的方法就是写原创内容.所以,你网站的主题应该是你了解的,如果你对它还很陌生,就很难搞好你的站.比如说,你是家庭主妇却去搞IT网站,就很不合适. 网站主题确定好了,就写文章.文章的内容要与网站主题相符