谈如何提高产品质量

标签: 产品 质量 | 发表时间:2014-07-14 07:28 | 作者:ynnmnm
出处:http://blog.csdn.net

    最近,我们的产品上线了,上线之后,稳定是最重要的,但是,出现了几次bug,都是不应该犯的错误,所以,避免bug特别是重大bug出现,提高产品质量,非常迫切。为此,我花了几天时间,翻一些资料来系统地学习,此文是学习的总结。


    产品开发过程

    产品开发过程:需求分析、设计、编码、单元测试、集成测试、功能测试、Beta测试和发布。在工程师开发之前,策划或产品提过来的需求、策划的配置文件或者后期的测试,都可能影响产品质量,但是,本文侧重于从开发者角度谈提高产品质量。先分享一张来自 《Code Complete》的插图。



    可以看到,随着项目规模变大,架构、设计和集成测试、系统测试需要的时间会更多,而编码和开发者测试的时间更少。因此,提高效率最为明显的方法是提高产品质量, 减少测试、调试和修改所需时间。所以,设计、测试和编码同样重要,要分配更多时间,编码完 != 工作完成。


    测试的重要

    在很多大一些的IT公司,比如微软,开发职位叫Software Development Engineer,SDE,软件开发工程师;测试职位叫Software Development Engineer in Test,SDET,软件测试 开发工程师,可见测试人员本质还是开发工程师。这有别于我们在公司里常常见到的QA,我是做游戏的,我见到的QA都是打开游戏,然后点点点,从表现上测试功能是否正常,这样测试是无法全面测试的,这也难怪在很多公司里QA比开发团队地位低。我觉得,对于测试这个职位,要做好,是很难的。他要能读懂策划文档和开发文档,从源头上开始着手。如果白盒测试,要能看懂别人写的代码;如果黑盒测试,要和开发人员多沟通,画出来实现的流程图,并且分析网络协议;然后,设计完备的测试用例。如果不根据需求、设计和实现,设计完备的测试流程,而只是操作一下试试功能是否正常,很多隐藏的bug是测试不出来的。


    在传统软件行业:软件的质量和稳定最重要,代表企业:IBM、微软、思科等。根据我查到的资料,开发与测试人员比例,微软1:1,思科1:1.5,普遍在1:1 - 3:1。SDET从需求文档、设计文档开始Review,SDE编码,SDET写测试用例,跟极限编程的过程类似。极限编程的基本过程:构思 -> 编写测试代码 -> 编写代码 -> 测试,编写测试和编写代码都是增量式的,写一点测一点,在编写以后的代码中如果发现问题可以较快的追踪到问题的原因,减小回归错误的纠错难度。


    而互联网行业:快很重要,有bug在线上也方便修改发布,更提倡full stack developer,代表企业:amazon、facebook、google等。开发与测试人员比例,google 10:1, MySpace 5:1。阿里资深专家,amazon前高级经理, 陈皓认为:并不是互联网公司认为测试不重要,而是他们认为正因为测试很重要,所以才不应该交给只做测试的人,开发人员要对自己开发的产品质量负责。对于一个公司,“产出性”的人应该多于“支持性”的人。当你的条件受限人手不够的时候,你必然不能干所有的事,但你要去做很多自动化的事情,不管是自动化部署还是自动化运维。然而当你的人多的时候,你必然只会简单用人来解决问题。劳动密集型与知识密集型的公司差别就在这里。


    以微软和google为代表的保证产品质量的做法,都有道理,而且都是成功的。但是,我个人更倾向于full stack developer,第一,招很多SDET对大部分公司都不现实,合格的SDET薪资不会比SDE低;第二,我认为开发人员要对自己的开发的内容负责,主动的想办法提高产品质量,而不是被动的等测试。


    产品质量目标

    评估产品质量,常用的是千行代码缺陷率,以下是查到的一些业界的千行代码缺陷率数据。典型的统计表明,在开发阶段,平均50~60个,交付后15~18个;微软内部测试的产品10-20个,正式发布产品0.5个;某外包公司,A级≤ 0.5个,B级≤1个,C级≤5个;航天飞机的软件,0个/50万行。缺陷率做到平均水平的1/10是很少见的,而如果10倍以上,产品可能永远也不会完工。


    跟性能瓶颈一样,80%的错误往往出现在20%的代码中。大部分错误都是低级错误,比如,对需求或设计的误解、书写错误、赋值语句、边界错误或循环错误。大多数错误是容易改正的。另外,warning是很多错误的根源,所以工程里要禁止warning。


    发现错误

    主要通过检查和测试。检查包括:需求检查、设计检查、代码详查,测试包括:单元测试、集成测试、系统测试等。


    有统计数据表明:单元测试的平均错误检出率是25%,集成测试35%,小规模Beta测试35%,系统测试45%。而对设计和代码进行详查的错误检出率分别是55%和60%。


    检查

    阅读代码要比测试平均每小时多发现80%多的错误,代码检查和测试所获得的收效之比为8:1。这是因为,错误越早发现,解决成本越低。


    检查方法:协同编程,详查需求、设计、代码。不仅仅是检查,要提前思考怎么做?带着思考检查。


    单元测试

    1. 基于结构的测试。测试用例要覆盖每一条控制语句,if for while and or switch case等。


    2. 数据流测试,避免重复初始化、重复销毁、定义不使用、未初始化使用等情况,检测数据流变化。


    3. 错误猜测:

        1). 边界分析,>=与>的区别,null、size是0的情况,比如测试小于MAX,三种边界情况<MAX、MAX本身、>MAX,10000个好友/道具的时候会不会导致游戏卡死?
        2). 复合边界,int add(int a, int b),a和b都小于2^31,但是,如果a和b都很大,它们的和会不会出界?
        3). 坏数据,太小/大的数据,未初始化的数据,错误类型的数据,错误长度的数据等。

        4). 向前兼容和向后兼容。比如,游戏最新版本是2.5,但是有的玩家一直不更新,还是1.0,要兼容这些玩家。


    集成测试

    在单元测试的基础上,将所有模块按照设计要求组装成为子系统或系统,进行集成测试。


    执行方案

    综合考虑我们团队的实际情况,最后我制定了“ 详查+单元测试+集成测试+系统测试”的方案,来提高我们的产品质量。有些方法,比如协同编程、 净室开发,虽然很好,但是对于我们的团队来说,执行起来太难。ps:我对净室开发很感兴趣,正在研究,研究透以后可能会试着采用。


    详查:先自己详查,从需求开始,然后是设计和编码;然后,团队中的小伙伴互查。关于详查,有两点需要注意:1. 检查前,要先制定代码规范,让开发人员不把精力耗在代码规范的争执上。2. 详查结果不作为员工表现的考核标准,考核应该基于最终的产品。


    单元测试:重点是理清流程,针对每个流程都测试到。集成测试:把单元测试的功能组合起来测试,侧重于模块的整体性。系统测试:有点像QA的普遍工作,从功能上测试,各个需求点是否都正常。


    执行:我首先制定了代码规范,并给大家讲解,然后征求大家的意见统一。然后,写了一份本文章的内部版本,并给大家详细讲解(为了让小伙伴们更容易,内部版本细节比较丰富,举了一些例子,写的比较啰嗦,稍微精简、加工之后,形成了这篇blog)。另外,需要注意,详查结果不要作为员工表现的考核标准,考核应该基于最终的产品。


    转载请注明出处:  http://blog.csdn.net/ynnmnm/article/details/37743403。作者:夜风。

作者:ynnmnm 发表于2014-7-13 23:28:25 原文链接
阅读:90 评论:0 查看评论

相关 [产品 质量] 推荐:

关于产品质量

- 茫茫 - 弯曲评论
记得去年某天曾去1号楼机房参观T系列存储系统的硬件,由于前期知道T系列的IO接口卡均可热插拔,而这在中端存储产品里是没有其他友商可以做到的. 抱着好奇的心态,我就反复尝试了一下,可以任意插拔IO接口卡而不影响业务,效果非常好. 为了进一步验证T系列的可靠性,我直接拔出了正在运行的双控中的一个控制器,此时主机端正在从阵列中拷出一个大文件,拔出控制器之后,拷贝出错终断了,这个也是可以理解的,毕竟操作系统自带的拷贝是写死的,超时值不可调.

谈如何提高产品质量

- - CSDN博客综合推荐文章
    最近,我们的产品上线了,上线之后,稳定是最重要的,但是,出现了几次bug,都是不应该犯的错误,所以,避免bug特别是重大bug出现,提高产品质量,非常迫切. 为此,我花了几天时间,翻一些资料来系统地学习,此文是学习的总结.     产品开发过程:需求分析、设计、编码、单元测试、集成测试、功能测试、Beta测试和发布.

调查显示44%的用户最担心小米手机产品质量

- 小熊TONY - cnBeta.COM
北京时间2011年8月18日,小米手机于16日正式揭晓,凭借1.5GHz双核处理器等硬件配置和1999元的超低价格成为用户和业界关注焦点,不过用户需要等到10月份方能购买到正式版.

Haypi创始人任刚:做好推广的核心是产品质量

- godlaugh - 技术改变世界 创新驱动中国 - 《程序员》官网
口述 / 任刚     整理 / 董世晓. 在任刚看来,应用推广的核心是产品质量,没有好的产品质量,再完美的推荐最终结果都得不偿失. Haypi的创业之路,可以说是既简单又充满戏剧性. 记得那是2000年,我在《程序员》上读到了时任主编的李学凌撰写的那篇名为《到美国去,挣美元!》的文章,文中主角周奕通过做共享软件实现月销售收入超过5万美元的成绩对我触动很大,让我萌生了做共享软件的想法.

港媒称中国最好农产品用于出口 国内存质量问题

- - 网易探索频道
核心提示:近日,香港《南华早报》称,中国最好的农产品用于出口了,尽管粮食再获丰收,产量连续第九年创下纪录,但卖给中国国内消费者的粮食产品仍存在质量问题. 香港《南华早报》网站12月9日文章,原题:消费者买到质量差的农产品,最好的用于出口了 尽管粮食再获丰收,产量连续第九年创下纪录,但卖给中国国内消费者的粮食产品仍存在质量问题.

像富士康这样的大型成熟代工厂如何保证产品质量?客户参与质检到什么程度?

- - 知乎每日精选
如果是问控制质量的管理手法那真的是太多了,CPK,6sigma,PRIME,nazenaze(なぜなぜ). 而在现代工业开始之时,质量管理的知识也开始了系统化之路. 上面是一个品质管理的基本框架,这边姑且称为一个cell. 这个cell描述了品质管理的基本元素,不论大到富士康这样的大型企业,小到家庭作坊.

产品

- - 人月神话的BLOG
最近一直在思考产品规划和产品设计研发的事情,原来谈的比较多的都是关于咨询和实施方面的内容,而对于软件和信息化行业来说,真正可持续的盈利模式仍然是有核心竞争力的产品,能够在垂直细分领域具备有定价权解决实际业务核心问题的产品. 有时候我们在考虑类似ERP类综合管理软件产品化的困难,但是实际在某个垂直细分领域,进行核心产品开发并实现产品化是完全可行的思路.

技术文章的质量

- Kai Chen - 4G spaces
推友 @StarrySource 就微薄和推特的好坏问题写了一篇文章,正好和霍炬的文章同时发出来,推特上对这两篇文章叫好的人不少,其中还有一些直接就说 StarrySource 这篇比 virushuo 写得好. 文章好坏诚然是个很主观的事情,不过就仅从文章内容来说,就算有一千个读者一千个主观标准,我也想不出什么理由来说明 StarrySource 的这篇比 virushuo 写得好,因为客观上这两篇文章的差距会抵充掉主观上的一些好恶.

苏泊尔“质量门”

- 棉花 - 南方周末-热点新闻
有业内人士质疑,以锰代镍是原材料价格上涨导致成本的增加后企业应对压力采取的手段. 对此,苏泊尔方反复强调“产品质量安全是没有问题的”,但未提及相关材质含量的问题.

软件质量之道

- - CSDN博客系统运维推荐文章
        我曾与一些资历非常高但毫无实际经验的人共事过,也曾与一些只有很少或根本没有资历但才华横溢的工程师一起工作过,我也曾经不得已跟一些并不想用心做事、也对学习新东西丝毫不感兴趣的人共事过. 如果说我们这个职业是一张纸,那么这些人就好比纸上的污点. 软件开发业的低劣性不能完全怪罪于那些无知的经理、狡猾的市场营销人员以及总是急不可耐的用户,实际上很大程度上要归咎于这个行业的某些从业人员,他们应该去从事一些即使玩忽职守也不会造成像软件业里这样大的危害的行当,而不应该混迹于这个聚集着人类想象力的最复杂的创造性的行业.