51Testing软件测试论坛

标题: 就“程序员不要测试自己的程序或者尽量避免测试自己的程序”这一观点的讨论 [打印本页]

作者: lee025x    时间: 2010-2-25 11:30
标题: 就“程序员不要测试自己的程序或者尽量避免测试自己的程序”这一观点的讨论
我曾经有过2年的C语言嵌入式软件项目开发工作经历,今年刚刚转入做软件测试,现在在一个中型企业担任软件测试工程师。我在过去半年的相关于软件测试的学习中发现一个常常出现在各种资料中的观点“程序员应该尽量避免测试自己的程序”或者是“程序员不应该测试自己的程序”,这个观点一直让我十分的质疑。
       首先,软件开发过程中模块管理与分配都是有规范的,程序员之间不会相互熟悉其他程序员的程序,所以程序员基本上不会调试到其他不相关的程序;其次,软件测试中有十分重要的一点:‘测试人员应该尽早测试尽早发现软件缺陷’,大家都知道软件缺陷的滞留会给软件开发带来的后果,而最早接触程序的人员应该是程序员本身;再者,程序员容易忽略自己程序中的软件错误这点是毋庸置疑的,但是在规范的软件开发过程中程序员不会同时担任测试员的角色,他们进行软件开发既然相信自己的程序的正确性,就必须在软件测试过程中不断证明自己的软件的正确性,而由测试人员担任证明软件错误的角色;最后,从心里学上一个优秀的软件开发工程师同样应该具备时刻做好自己的程序出现软件缺陷的准备,人们往往更容易接受自己发现自己的不足而不是常常被别人被别人指出自己的不足。
       就以上个人观点以及自身的工作状况总结,我以为“程序员应该尽量避免测试自己的程序”或者是“程序员不应该测试自己的程序”这些观点是错误的,反之,程序员应该尽量多的测试自己的程序,但并不是串演测试员的角色,程序员的测试是为了证明自己的软件正确性而存在,测试员的测试则是为了证明软件错误而存在,二者具有互补、促进作用,能更好的保证软件质量。
       这纯属个人观点,我也算是个软件测试新人,如有不对的还请各位前辈指教。
作者: lee025x    时间: 2010-2-25 11:45
真安静,不要沙发、板凳、毯子、地板都我自己坐哦,我是非常希望能得到大家的帮助的,谢了!
作者: willingchenlp    时间: 2010-2-25 11:59
“程序员的测试是为了证明自己的软件正确性而存在,测试员的测试则是为了证明软件错误而存在”
这一句不大认同。程序员的职责应该是开发和修正,测试员是查错补漏。
测试员的工作虽然貌似是一直在查错,但本身并非为错误的存在,错误并不能真正体现出测试员的价值。软件完工后的质量才能真正体现出测试员的价值所在。
程序员也并非为自身软件的正确性而存在,LZ这个观点实在让人太尴尬。

但是程序员自测是必然的,这个果断不解释。
作者: zpwmn    时间: 2010-2-25 12:27
程序员如果不测自己写的程序,那么就不是个有良好习惯的程序员,单元测试是程序员需要具备的一个基本技能。
作者: lee025x    时间: 2010-2-25 12:42
额,我说的程序员的测试是为了证明自己的软件正确性而存在,而并非程序员,程序员的测试视乎与程序员的职责不存在很大的冲突吧。
测试员的目的应该放在证明软件错误上,而且我认为还有一点就是证明了软件有错误也应该是测试员的价值所在,如果测试员一开始把目标放在软件质量上,往往会把目标错误的转移到证明软件的正确性上,就如同开发人员同样也要保证软件质量一样,这是二者根本上的却别所在。
作者: wjtest    时间: 2010-2-25 12:54
新手上路,顶一下
作者: hueslife    时间: 2010-2-25 13:44
感觉都有理呢::xsjsn:::
作者: lee025x    时间: 2010-2-25 13:45
难道就没什么人来为我指出错误或者是支持下我的意见吗?作为测试员不就是要敢于发现错误嘛。
作者: ermine    时间: 2010-2-25 13:57
你说的“软件错误”指的是什么呢?不符合需求?
“软件的正确性”呢?
作者: lee025x    时间: 2010-2-25 14:17
软件错误自然是指通常说的软件缺陷或者是BUG,不符合需求也算是软件的一个BUG吧。软件正确性就是指能够通过正确操作运行软件,比如能够实现需求功能。
作者: eggtoegg    时间: 2010-2-25 14:17
这句话是说最后把关的时候,不应该是由程序员给自己编写的代码盖章的意思。
《部分内容是不合主题的讨论范围,修改了下》
二米呢的那句,让我想起了verification和validation,

[ 本帖最后由 eggtoegg 于 2010-2-25 14:58 编辑 ]
作者: eggtoegg    时间: 2010-2-25 14:21
原帖由 lee025x 于 2010-2-25 14:17 发表
软件错误自然是指通常说的软件缺陷或者是BUG,不符合需求也算是软件的一个BUG吧。软件正确性就是指能够通过正确操作运行软件,比如能够实现需求功能。


与需求不符就是缺陷,能够正常执行的软件不一定是正确的软件。
客户要一个录音机,你给他一个能够正常使用的照相机,也是错误的,不,单反也不行~~!
作者: lee025x    时间: 2010-2-25 14:44
呵呵,11楼说的不错,或许是我孤陋寡闻或是见识浅薄,对于软件测试这一块我只是单纯的自习,但至少在我看过的资料上并没有看到过您所谓的上下语句,这难道就是我的失误:没有给这个观点寻找合理的上下文。谢谢!
作者: lee025x    时间: 2010-2-25 14:56
标题: 回复 11# 的帖子
请只针对观点的讨论,谢谢指点,但是请不要做讥讽性攻击,谢谢!
作者: eggtoegg    时间: 2010-2-25 15:01
原帖由 lee025x 于 2010-2-25 14:56 发表
请只针对观点的讨论,谢谢指点,但是请不要做讥讽性攻击,谢谢!

已修改不和谐的语句,望谅解。

单凭<程序员应该尽量避免测试自己的程序>这句话,肯定是有语病的,
应该理解为:若要对软件进行测试,由开发人员以外的人员进行测试更为妥当
作者: yuetiantian    时间: 2010-2-25 17:27
这个观点没有什么不对的,因为这里面的测试主要指的是除了单元测试以外的测试。
单元测试自己做
其它测试自己最好不要做
作者: lihuanchao    时间: 2010-3-11 19:16
如果开发和测试都是同一个,那么你开发和测试时用的都是同一个人同一种思维,假如程序中有一个BUG你开发的人认为不是BUG,这时你还自己去测试的话,这个BUG你自然就发现不了,但让另一个人用另一种思维去测试,发现BUG的几率就大很多!!
作为一个开发人员或测试人员,你总是想自己发现自己的错误,不想给别人发现指出自己的错误,我只能说你不具备作为开发或测试人员应该具备的思想和品质!!
所以我还是支持“程序员不要测试自己的程序或者尽量避免测试自己的程序”这个观点
以上纯属个人见解,我也是个测试新人!!
作者: selow    时间: 2010-3-12 10:16
错误并不能真正体现出测试员的价值。软件完工后的质量才能真正体现出测试员的价值所在。
3楼的这段话说的很到位!
作者: xiaoshancom    时间: 2010-3-12 11:15
非常同意#17楼的观点

思路问题并不是证明了程序员智力差,只要是人就会出错, 不出错你还是人吗?

[ 本帖最后由 xiaoshancom 于 2010-3-12 11:21 编辑 ]
作者: chengning    时间: 2010-3-12 11:43
程序员测试自己的程序 叫冒烟测试,冒烟测试一词的来源是当时电路板在出厂前都要进行通电检查,淡然 冒烟的就是不合格的产品,为什么要引入这个感念了,因为程序员做的测试和电路板的测试时一样的,他只能保证通电以后预期的功能能够实现 ,而不能保证所有的路径都能测完,更看不到用那条路径具体实现了具体的那个功能。
而测试人员主要做的是对程序的语句进行查错,对程序的每个路径进行覆盖,对每个条件进行覆盖以做到 测试程序的每种正确的和不正确的可能结果,主要目的是防止程序有错和提高容错处理。
个人意见  呵呵 望大家指教
作者: chengning    时间: 2010-3-12 11:44
所以程序员在软件提交前作冒烟测试是必要的 测试人员在后面的测试也是必要的




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2