当前位置: 首页 > news >正文

Perfect or Good Enough – 关于测试程度的一些探讨

<!-- /* Font Definitions */ @font-face {font-family:"MS 明朝"; mso-font-charset:78; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:-536870145 1791491579 18 0 131231 0;} @font-face {font-family:宋体; mso-font-charset:80; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:3 135135232 16 0 262145 0;} @font-face {font-family:宋体; mso-font-charset:80; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:3 135135232 16 0 262145 0;} @font-face {font-family:Cambria; panose-1:2 4 5 3 5 4 6 3 2 4; mso-font-charset:0; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:-536870145 1073743103 0 0 415 0;} @font-face {font-family:"Heiti TC Light"; panose-1:2 0 0 0 0 0 0 0 0 0; mso-font-charset:81; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:-2147483601 134742090 16 0 1048576 0;} @font-face {font-family:华文宋体; mso-font-charset:80; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:647 135200768 16 0 262303 0;} @font-face {font-family:"ヒラギノ角ゴ ProN W3"; mso-font-charset:78; mso-generic-font-family:auto; mso-font-pitch:variable; mso-font-signature:-536870145 2059927551 18 0 131085 0;} /* Style Definitions */ p.MsoNormal, li.MsoNormal, div.MsoNormal {mso-style-unhide:no; mso-style-qformat:yes; mso-style-parent:""; margin:0in; margin-bottom:.0001pt; mso-pagination:widow-orphan; font-size:12.0pt; font-family:Cambria; mso-ascii-font-family:Cambria; mso-ascii-theme-font:minor-latin; mso-fareast-font-family:"MS 明朝"; mso-fareast-theme-font:minor-fareast; mso-hansi-font-family:Cambria; mso-hansi-theme-font:minor-latin; mso-bidi-font-family:"Times New Roman"; mso-bidi-theme-font:minor-bidi;} .MsoChpDefault {mso-style-type:export-only; mso-default-props:yes; font-family:Cambria; mso-ascii-font-family:Cambria; mso-ascii-theme-font:minor-latin; mso-fareast-font-family:"MS 明朝"; mso-fareast-theme-font:minor-fareast; mso-hansi-font-family:Cambria; mso-hansi-theme-font:minor-latin; mso-bidi-font-family:"Times New Roman"; mso-bidi-theme-font:minor-bidi;} @page WordSection1 {size:8.5in 11.0in; margin:1.0in 1.25in 1.0in 1.25in; mso-header-margin:.5in; mso-footer-margin:.5in; mso-paper-source:0;} div.WordSection1 {page:WordSection1;} -->

和业界同行们交流的一个好处就是会有很多新的启发,让你去思考一些问题,或者把之前想过的一些零碎的东西拿出来再考虑一下,不同的人会带给你新的信息和观点。长期在一个稳定的环境里面做事情,大家的看法和观念难免会有些同质化,而这当然也是受限于大家的经验。所以最近有机会的话就会和同行们多交流,这篇文字很大程度就来源于和Jeff 的交流。他做 QA 十多年了,非常的资深,做过 QA, QM director,难得的是他一直保持着旺盛的学习的热情,当然这是交流后我的另一个收获。

标题用了or,这里探讨的不是一个唯一的方向或者结论,实际上我也给不出来,所以更多的是一些开放的思考。

1. 精细还是创新?

这个对比看起来有点奇怪,但是还真有点关系。

Jeff曾在某日资的软件公司工作过,他和我分享了日本人对软件质量的重视,用他的话说有时候是不计成本,这成本包括严格的 process,非常大量的测试,以及请昂贵的咨询等等。我们公司很多接触日本客户的同事也有类似的感受,他们不仅仅关注结果,而且关注过程,修好了一个 bug,你可能还要准备详细的文档讲解过程,甚至改动了一个看似无关紧要的东西也要说清楚。

过程是很重要的,这是一个核心的观念。所以有很多非常完善的流程以及大量的文档用来控制质量,必须严格的遵守。

这样做当然有很大的好处,那就是做出来的东西质量很高,我相信这方面大家可以举出很多的例子。

凡事有利有弊,另一个方面,大家发现在业界( IT)来看,日本人的创新,特别是比较有革新性的创新还是比较少,或者说相对美国来说比较少。直到现在,无论是在技术还是在新的产品和业务方面,美国还是在执牛耳。

我在想这个和上述的观念是不是有一些关系。如果 process太严格,并且每个人都严格遵守,会不会阻碍创新?一个产品不做到非常高的质量就不发布是不是也会让新的东西无法快速发展?这个有点像人的 personality,一个循规蹈矩的人可以认真的做好很多事情,但是可能不是一个伟大的创新者。一个内向严谨的人和一个活泼不安分的人哪一个更好? 恐怕很难说清楚,我们很难说哪一种个性好,当然个人可能会有偏好,另一方面,对于不同的角色和岗位可能也会有不同的要求。

好吧,你讲了半天,这个和测试有多大关系呢?

这里涉及到另一个看法,那就是我们觉得测试的价值和重要性直接依赖于对产品质量的要求和重视程度,进而对测试的投入也是不一样的。

2. Perfect or Good Enough

这是一个大家经常谈到的话题,但是本质上,我觉得这是一个伪命题,因为没有 perfect Perfect至少有两大致命的问题,一个是在不同的使用场景或者在不同的用户来看,有完全不同的认识,所以你做任何一种都对也都错,就好比手机是直板还是翻盖好?第二个问题是你无法直到是不是完美了,很多时候我们会高估或者低估我们的产品,甚至我们自己。好吧,既然大家都这么用这个词,也就先沿用吧。

和上面说到的日本人和美国人都不同,中国两种都不是,至少现在,但是我们希望我们两种都有。不知道是不是因为受了 agile的快速 deliver功能特性的想法或者是类似 Google always beta的做法的影响,大家开始提 good enough的观念。

不过我发现这种观念也有些问题。嗯,总是有很多问题,所以不要太担心。

第一个问题是很多的时候我们觉得 good enough,但是可能实际上很不 enough,甚至对用户来讲不 qualify。比如一周 crash一次,好像还好,但是可能用户难以接受,进而留下东西很烂的印象。所以是否值得为这个 crash投入开发和测试,并推迟一周发布?

第二个问题是这种观念可能会传递一个错误的信号,让大家放弃对卓越的追求,这像是一种暗示。当你在努力,抓耳挠腮、熬夜加班,到处查资料的时候,突然耳边响起一个声音,“我们对产品的要求是 good enough”,然后你可能回想,“算了吧,费这么大劲,到时候还嫌我麻烦。”,当然你也可以坚持你的信念。

上面的状况都可能会发生,但是实际中那种更合适,确实很难讲,因为这个取决于很多方面,比如你的目标,一个业界的主打产品还是一个新产品的原型?但是有一点,我们应该心里清楚不同的武器的长处和短处,进而在遇到不同的状况做出清楚(至少自己认为)的选择,而不是盲目的跟着潮流去追求某一种。

相关文章:

  • 得到存储过程中最后拼接出来的语句
  • python 同时打开两个文件以及打开文件的基本操作
  • open_basedir restriction in effect,解决php引入文件权限问题
  • Android应用完全退出的几种方法
  • 【AHOI2005】病毒检测
  • 数据挖掘 - 算法 - ID3 - 转自 http://www.cnblogs.com/dztgc/archive/2013/04/22/3036529.html
  • asp.net MVC html.ActionLink的几种参数格式
  • jquery获取元素各种宽高及页面宽高总结
  • c# AOP 文章地址
  • Android中悬浮窗口的实现
  • 面向对象-类-成员变量-局部变量-this
  • 全字匹配替换函数
  • Codeforces Round #342 (Div. 2)
  • LeetCode-Maximum Subarray[dp]
  • vue2.0引入腾讯地图
  • Google 是如何开发 Web 框架的
  • download使用浅析
  • egg(89)--egg之redis的发布和订阅
  • gcc介绍及安装
  • Git学习与使用心得(1)—— 初始化
  • JavaScript HTML DOM
  • JDK9: 集成 Jshell 和 Maven 项目.
  • js正则,这点儿就够用了
  • js中forEach回调同异步问题
  • scala基础语法(二)
  • select2 取值 遍历 设置默认值
  • spark本地环境的搭建到运行第一个spark程序
  • vagrant 添加本地 box 安装 laravel homestead
  • Vue2.x学习三:事件处理生命周期钩子
  • 闭包,sync使用细节
  • 事件委托的小应用
  • 物联网链路协议
  • 翻译 | The Principles of OOD 面向对象设计原则
  • #13 yum、编译安装与sed命令的使用
  • #define、const、typedef的差别
  • #设计模式#4.6 Flyweight(享元) 对象结构型模式
  • $(function(){})与(function($){....})(jQuery)的区别
  • (C语言)输入自定义个数的整数,打印出最大值和最小值
  • (Java岗)秋招打卡!一本学历拿下美团、阿里、快手、米哈游offer
  • (JSP)EL——优化登录界面,获取对象,获取数据
  • (附源码)SSM环卫人员管理平台 计算机毕设36412
  • (转)详解PHP处理密码的几种方式
  • ******IT公司面试题汇总+优秀技术博客汇总
  • .bat批处理(七):PC端从手机内复制文件到本地
  • .net framework profiles /.net framework 配置
  • .net 程序 换成 java,NET程序员如何转行为J2EE之java基础上(9)
  • .net 开发怎么实现前后端分离_前后端分离:分离式开发和一体式发布
  • .NET 药厂业务系统 CPU爆高分析
  • .Net 转战 Android 4.4 日常笔记(4)--按钮事件和国际化
  • .NET/C# 使用 ConditionalWeakTable 附加字段(CLR 版本的附加属性,也可用用来当作弱引用字典 WeakDictionary)
  • @Query中countQuery的介绍
  • @开发者,一文搞懂什么是 C# 计时器!
  • [ NOI 2001 ] 食物链
  • [2016.7.test1] T2 偷天换日 [codevs 1163 访问艺术馆(类似)]
  • [Bzoj4722]由乃(线段树好题)(倍增处理模数小快速幂)