Aaron之无主题空间

皆主题,此谓无主题。
posts - 54, comments - 236, trackbacks - 12, articles - 8
  博客园 :: 首页 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理
        前段时间公司体检,做了CT、胸透等很多检查,在体检表上很多栏体检的结果都是“未见异常”,刚开始看了挺不舒服,正常就正常嘛,干吗叫“未见异常”,可是仔细想想是对的。医院这样的措辞有其严谨性。“未见异常”的潜台词是:没发现问题,但不代表一定没有问题。这也就是不直接填“正常”的原因。这个分析起来大致有两个原因:(1)所有真理都是相对真理。目前的医学知识并不能发现、解释所有问题,也不能保证绝对正确;(2)根据理论进行操作、分析的主体是人,不同的人由于技术技能等级、责任心等等原因,增加了体检结论的不确定性。所以,“未见异常”是很科学的说法。
        我因此就想到了我们软件测试。
        大家都已公认,软件测试是“证伪”,而不是“证真”。就是说软件测试的目的是证明软件有问题,即找出软件的问题;而不是说经过测试没发现问题就说软件没有问题。看看,和体检多么相近?
        我为什么这样联想呢?因为在我们的开发中有一些错误的看法,这些看法认为:测试是保证软件质量的唯一手段;测试可以找出软件的所有问题;测试是软件质量的责任承担者;等等。这些看法爆出很多同仁对软件测试了解太少,对软件开发过程研究不透。在这样错误的认识下,很多测试人员当了冤大头。
        其实,开发过程中的任何一个环节都对软件缺陷负有责任。软件生产的每道工序都对软件质量至关重要。很简单,料理大师不仅仅是手艺好,他们对原料的要求同样苛刻。看过《大长今》的人都知道,韩尚宫和长今多次为外出找到理想食料而颇费周折。软件质量也是如此,从需求调研开始就应该有明确的质量意识,减少出现defect的机会。好的编程习惯、优秀的设计思想也可以大大提高代码质量,提高软件质量。测试只能做测试做的工作,这个环节已经不能减少软件的缺陷了,因为缺陷的产生过程已经结束,因此通过测试来减少系统可能存在的缺陷同时也是种消极的想法。跟体检同样的道理,没有什么测试方法能够保证把系统所有缺陷都找出来,而且不同的测试团队的能力和水平不同,所以测试人员即使说“我们测试了没有问题”,也不是说软件质量就OK了,而最多是个“未见异常”!

Feedback

#1楼   回复  引用    

2005-08-16 16:09 by xiangdn[未注册用户]
那按你的意思说体检即使“未见异常”也不代表你没有病
软件测试结果正常也不代表软件没有问题
那做软件测试的人岂不是可以整天闲着光吃饭不干活了?

软件的BUG起因在于开发
如果在测试阶段BUG被发现,那么全部责任由开发承担
但是如果BUG一直保持到系统上线,让客户看到BUG那责任绝对是测试人员的

你说的
测试并不是保证软件质量的唯一手段
测试未必能找出软件的所有问题
我同意

测试的根本任务就是模仿用户对软件进行使用
只要在客户面前可能发生的问题测试人员都应该测试到
大多数客户都是在使用业务而不懂技术
所以虚拟客户的使用状态我想对测试人员来说并不难吧
主要就是工作态度的问题了

能够保证软件在客户面前使用正常
我想测试人员就可以说90%+的完成任务了

#2楼   回复  引用    

2005-08-16 16:19 by Aaron[未注册用户]
感谢[ IceSharK - PP.Poet ] 鼓励

#3楼   回复  引用    

2005-08-16 16:41 by Aaron[未注册用户]
哈哈,xiangdn :

如你所说,体检报告说“未见异常”并不说明我没毛病,我就是这个意思。关于这个问题我没有多说是因为我觉得是常识。君不见医疗事故偶有发生?误诊?还有同一病人有的医院检查是普通炎症、而有的医院却检查出是癌症?

“……那做软件测试的人岂不是可以整天闲着光吃饭不干活了? ”你这样说我真是不知道怎么说好了。软件开发是种工程项目,它不同于理论研究,不可能让软件完美无暇(没有任何缺陷)。不过从工程的、实践的角度来讲,虽然它有缺陷,但是它的稳定性、健壮性、适用性可以达到人们使用的要求,还是可以被人们使用的。所以测试人员还是要干活的,呵呵,说简单点,测试虽然不能排除所有问题,但是它至少应该保证人家用户“能用”。(这样说有点偷懒哦,呵呵)

“让客户看到BUG那责任绝对是测试人员的 ”,我有个同事曾经跟你有同样的看法,这篇感想其实有点针对你这个想法的意思。经过测试之后,就把所有责任堆在测试的头上是不合理的。凭什么?这些defect明明是你在设计和开发过程中产生的。
你会说:设计和编码总有纰漏嘛?总有想不周全的嘛?
测试说:就许你有纰漏就不许别人有纰漏、有想不周全的嘛?
你再说:测试是专门抓bug的。
那么,我想说:如果测试能够找到一种方法抓出所有bug,那么这种方法一定可以用在设计和开发过程中。就是没有这样理论上完善的方法,才会要“测试”这么一道工序的。
想法粗糙,权当讨论啊,呵呵

#4楼   回复  引用    

2005-08-16 17:10 by [ IceSharK - PP.Poet ]
@xiangdn

“只要在客户面前可能发生的问题测试人员都应该测试到”

呵呵 真幽默。

见的多了 您就会知道

在客户面前什么问题都有可能发生

#5楼   回复  引用  查看    

2005-08-16 17:15 by 小陆      
一个部门需要承担的责任是和他的业务水平、得到的权利相关的。
如果一个开发组织从需求、设计、编码各个阶段就加入了测试人员,并且给与测试人员很大的权力,允许他们不受生产进度压力,一心扑在质量上,甚至最后有决定产品质量是否可以发布的权利。在这样的情况下,产品质量发生问题,测试人员是要承担主要责任的。除非是测试人员已经发现了危险,一直在反对产品发布,而项目管理人员迫于时间压力没有在乎测试人员的警告。
如果一个开发团队是在编码完成以后,才找了一些水平比较差、工资也比较低的人点点鼠标,测试一下,这样的情况下出了问题,让测试人员承担责任就是不合适的了。

#6楼   回复  引用    

2005-08-16 20:14 by Cavingdeep
没错,完全同意Aaron。我倒是觉得软件质量差绝大部分责任在于开发人员而不是测试人员。就像以前我听到过的一个故事中讲的,曾经在开发Word 1.0的时候,由于任务紧,难度大,程序员心情都变得很烦躁,居然在计算字符高度的代码中直接写入高度=10,然后就去写其他部分的代码了。他期望测试人员能够在今后的测试中找出这一问题并报告出来,然后他再去修正这部分……

#7楼   回复  引用    

2005-08-17 18:38 by Hence[未注册用户]
没错,工作中准确表达结果很重要,在交流中表达不正确,就会产生很多不必要的误会。

#8楼   回复  引用    

2005-10-07 11:29 by Ken![未注册用户]
@xiangdn

看了你写的东西,觉得你是个对测试深恶痛绝的人,是不是你们公司测试很悠闲?

我们讨论的是软件过程,而你说的是个行政问题。

的却从软件过程来说,即使到了客户那里,软件出现了错误,也跟测试人员没有关系,因为软件不是他们写的啊。但是从公司的行政角度,必须有人出来承担这个结果,这个承担结果的人可以使程序员或者项目经理、产品经理。但是正如你说的,那测试不就乐悠悠了?所以现实是由测试或者测试经理来承担这个结果。

最主要的是:在说别人之前想想自己是不是问心无愧。在公司看多了,经常有人抱怨测试这个做的不够、那个做的不够。但是究根问底,TMD谁写代码的?你在代码里弄个很BT的BUG,谁知道啊,你自己都不知道。从这方面看,做程序员和做人一样,谦虚、公正、真诚。

#9楼   回复  引用    

2007-01-09 16:52 by hehe[匿名][未注册用户]
这篇文章不管是作者还是参与讨论的人都非常有见地,佩服。
我是做软件测试的,有些东西都没有想明白,看见此文,简直豁然开朗



发表评论

昵称: [登录] [注册]

主页:

邮箱:(仅博主可见)

评论内容:

  登录  注册

[使用Ctrl+Enter键快速提交评论]

0 216058




相关文章:

相关链接: