`
fantasy
  • 浏览: 517283 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

【阿里的感悟】质量该如何做?

 
阅读更多

程序员可能都认为质量很重要,但是很多项目质量都不是很高,原因可能是

  • 程序员是乐观的,觉得自己写的程序没什么问题。
  • 程序员不愿意做测试,做测试没有成就感。
  • 程序员没有时间做测试。

我觉得提高质量,最重要的是提高质量意识,只要你肯花时间,零BUG也是很容易实现的,我所在的团队就成功实现了几次零BUG的项目,零线上故障,冒烟测试都是一次性通过。我们一个迭代的周期是两周,通过几个流程来保证质量:

 

需求评审(半小时)-设计评审(1小时)-单元测试(1天)-晨会(每日)-代码审查(1天)-冒烟测试(半天)-项目总结(半天)。 

 

 

1: Code Review(代码审查)

在一次迭代中会进行四种Code Review:

  1. 自我Code Review,自己写完代码,在自测前进行一次Code Review。
  2. 结对Code Review,结对(本文所描述的结对是指两个人一起设计,分开实现代码)的同学使用Tala工具(由我们团队开发的阿里巴巴内部Code Review工具)搜索出你在这个项目中修改的所有文件,然后一个一个审查。
  3. 专家Code Review,可能结对的同学Review存在一定的局限性,所以项目经理会对一些核心功能进行Review。
  4. 主动Review,团队中有的同学提前完成功能,主动去Review其他同学的代码,这也是团队合作的一种表现。

代码审查的时间,按照情况有三个时间:每日(有时间的话),提测前2天(主要是这个时间)和提测后(如果项目比较紧,这个很少会出现,有些问题即时测试了也发现不了,必须通过Code Review)。

 

2: 单元测试

大家都知道单元测试是非常花时间的,所以我们把单元测试的时间主要花在测试业务逻辑上(Service)。在单元测试的过程中,根据不同的情况我们采用了以下四种方式:

  1. 结对单元测试,由结对的人帮助你写单元测试。
  2. 边实现边写单元测试,项目时间比较充裕的时候,自己在实现的过程中写单元测试。
  3. 测试驱动。业务逻辑比较复杂的时候。
  4. 补写单元测试,这出现在项目比较紧的时候,或者因单元测试没有覆盖的流程所引起的BUG。

我们追求的是单元测试的行覆盖率达到70%,目的是希望单元测试能覆盖大部分业务逻辑。

 

3:团队合作

很多时候质量低下,源于没有时间,比如团队中有的同学实现某个功能发生了延迟,那么他肯定没时间开写单元测试,帮别人做CodeReview,那么这个问题就应该在晨会的时候知会团队成员,由其他团队成员帮助你去完成这些事项,因为我们是一个团队。 

 

4:冒烟测试

提测前我们会进行一次冒烟测试,目的是测试核心流程是否正常,因为我们要求冒烟测试必须一次性通过,所以在冒烟测试前,程序员必须按照测试的check List做最后一次检查,这样可以调动大家重视质量的积极性。

 

5:项目总结

在项目总结的时候,针对于BUG我们会做如下分析

  • 如果项目BUG比较多,那么大家一起分析原因一般前端功能比较多的,BUG会多。后端功能,BUG会比较少。有的时候项目比较紧,以上有些流程没有完全走到,会引起很多BUG。
  • 如果某个成员BUG比较多,那么由他自己先分析下BUG产生的原因,然后加到下次Code Review和自测的check List里。
  • 重复BUG的分析,出现重复BUG是比较严重的问题,这一般都是由于重构引起的。
  • 单元测试可避免的BUG分析。

我们使用一套闭环的方式来保证项目质量:

审查(按照checkList进行需求,设计和代码的审查)- 测试(自动化,冒烟和功能测试)-总结(总结出checkList)

那么再回答下开篇的几个问题

  • 问:程序员是乐观的,觉得自己写的程序没什么问题。

      答:通过以上这些流程提高质量意识。

  • 问:程序员不愿意做测试,做测试没有成就感。

      答:通过写自动化测试脚本来增加程序员的成就感。

  • 程序员没有时间做测试。

      答:通过团队合作来弥补某些成员没时间做测试的问题。

 

  • 大小: 21 KB
分享到:
评论

相关推荐

    国开大学企业战略管理形考任务四:为什么腾讯、阿里这么热衷于组织变革?答案.docx

    腾讯和阿里组织变革的战略升级 在当前快速变化的商业环境中,企业需要不断自我升级和变革,以适应不断变化的市场环境和用户需求。腾讯和阿里这两家中国最大的互联网企业,也在不断地进行组织变革,以保持其竞争优势...

    国开大学企业战略管理形考任务四:为什么腾讯、阿里这么热衷于组织变革?答案.pdf

    腾讯和阿里组织变革的战略意义 在企业战略管理中,组织变革是一个非常重要的策略工具。通过组织变革,企业可以更好地适应市场变化,抓住新的发展机遇,增强自己的竞争优势。腾讯和阿里的组织变革,就是一个典型的...

    阿里云服务器是什么?.docx

    阿里云服务器是什么?.docx

    阿里巴巴做电脑去了?

    - **“阿里巴巴做电脑去了,马总不知道想什么,喜欢看热闹的来DDDD 字数”** 这段描述同样采用了非正式的语言风格,似乎在暗示阿里巴巴进军电脑领域的行为让人感到意外,并且引发了一些网友的好奇心和讨论。...

    阿里云服务器怎么样?最低配置试评.docx

    阿里云服务器怎么样?最低配置试评.docx

    腾讯云和阿里云对比哪个好?云计算优势测评

    价格是影响用户选择的重要因素之一,不过在做出购买决策之前,用户还需要对产品性能、服务质量等方面进行深入的评估。 云服务器作为IaaS的核心产品,为用户提供了灵活的计算能力。在对比云服务器时,需要关注的性能...

    阿里干货内容合集1107新.pdf

    1、阿里巴巴合伙人蒋芳:在阿里,没有如果 2、原来阿里人是这样选出来的 | 湖畔大学彭蕾剖析人才观 3、又是一年双 11,到底有谁成就了阿里? 4、说再多,都不如你亲自示范 | 阿里文化案例 5、卫哲:学会这些招聘秘技,...

    阿里前端开发规范.pdf

    阿里前端开发规范是阿里巴巴集团为其前端开发者所制定的开发规范,旨在提高开发效率、代码质量和团队协作。该规范涵盖了前端开发的各个方面,包括命名规范、HTML 规范、CSS 规范等。 命名规范 命名规范是前端开发...

    阿里巴巴前端开发规范.docx

    阿里巴巴前端开发规范.docx 阿里巴巴前端开发规范是阿里巴巴集团为了确保前端开发的质量和统一性而制定的规范。... 命名规范 ...遵循该规范可以提高前端开发的质量和统一性,提高开发效率和维护性。

    阿里巴巴java编码规范

    这套Java统一规范标准将有助于提高行业编码规范化水平,帮助行业人员提高开发质量和效率、大大降低代码维护成本。 至今为止已更迭了三个版本,2017年9月25日,阿里巴巴Java开发手册(终极版)》正式发布,这是史上...

    Thinkphp做的阿里云OSS后台

    Thinkphp做的阿里云OSS后台,PHP全套代码,Thinkphp3.2整合阿里云OSS图片,thinkphp3.2实现图片上传至OSS可减少服务器压力,节省宽带,安全又稳定,阿里云OSS对于做负载均衡非常方便,不用传到各个服务器了。...

    阿里为何投资高德?.docx

    在资本运作的角度,阿里的投资决策也是为其未来的发展做深远的规划。通过一系列投资行动,阿里巴巴积极拓展在移动互联网市场的份额,确保在关键领域的领先地位,同时也防止竞争对手通过投资来强化自身实力。此外,...

    优秀企业文化战略员工访谈-阿里.docx

    《阿里企业文化战略与员工访谈解析》 阿里巴巴,作为全球知名的企业,其优秀的企业文化与独特的人力资源管理策略一直是业界的焦点。通过这次员工访谈,我们可以深入了解到阿里的企业文化、人力资源管理、客户关系...

    visio阿里云 icons.rar

    总之,Visio阿里云图标模板是提升阿里云相关图表制作效率和质量的有力工具,它为用户提供了标准化的图形元素,使得在Visio中表达复杂的云服务架构变得简单易行。通过熟练掌握和运用这一资源,可以更好地展示和理解...

    阿里云短信云平台发送短信

    阿里云短信服务提供了多种发送方式,包括 API 接口、SDK 等。其中,API 接口是最常用的方式之一,它可以通过 HTTP/HTTPS 协议进行调用,使用简单、灵活。开发者只需要通过阿里云的控制台获取 AccessKey 和 SecretKey...

    阿里巴巴Redis使用规范

    "阿里巴巴Redis使用规范" 本文将详细介绍阿里巴巴28条Redis使用规范,涵盖了Redis性能优化、数据存储、安全、实例管理等方面的内容。 规范一:控制key的长度 为了避免Redis中的keys过长,阿里巴巴建议控制key的...

    阿里巴巴大数据实践之路-9.pdf

    本文将从阿里巴巴的大数据发展历程、数据体系结构、公共技术平台、数据共享、算法共享、知识共享、数据安全、数据质量、数据标准、运营管理、生态建设等方面,详细介绍阿里巴巴的大数据实践经验。 阿里巴巴的大数据...

Global site tag (gtag.js) - Google Analytics