开发人员和软件测试

2010-12-06  张玥晗 

站在开发人员的角度看待测试和站在测试人员看待测试时完全不同的一种东西.

程序员和测试人员的心理差别
程序员和测试人员的心理差别可以简单的归纳为以下几种

成功 / 不成功
什么才是一次成功的测试,大多数的开发人员对自己的程序测试完没发现错误,就会说"这是一个成功的测试",如果发现某些新的错误则称"这是不成功的测试";而测试人员刚好相反,当然这也是因为双方的职责不同而引起的

维护 / 破坏,施虐
开发人员对测试往往是一种维护性的测试,目标在于证明自己开发的程序没有错误,可能跟我们开发人员经常做建设性工作,更倾向创造事物,而不是将事物破坏有关;而测试人员在测试更多是一种破坏的过程,甚至是一种施虐,摆出一种把鸡蛋打碎搅黄来挑骨头的姿态

做了应该做的 / 做了不该做的
开发人员在做测试更多倾向于对实现的功能进行检查,当测试证明了该完成的功能全部通过时就认为测试完毕了,但程序即使能够完成预定的功能,也可能隐藏了错误,如做了应该做的东西,同时也做了不应该做的东西

建立一种信心 / 必须做
测试这个东西对于开发人员来说,更多的是建立一种信心的保证,例如我们尽可能多的单元测试,很多时候就是让我们确信程序的正确性,并让我们建立信心,而对于测试人员来说,测试是他们的职责所在,只有尽可能多的把系统挖出错误来才证明他们的存在价值

测试的态度
测试是一项技术性的工作,但同时也涉及到了心里学的一些重要的因素.
作为程序员的我们也经常会对我们的程序进行相关的测试,但你想想我们为什么要对我们的系统做测试,原因大概有以下的几种

1.测试就是为了证明我们的系统是不存在错误的.
2.测试的目的是想证明系统能够正确完成预定的功能.
3.测试是保证一个系统强壮性的信心过程.
4.测试是上级规定要做的.

站在测试人员的角度来看,除了最后一点,其他的都是本末倒置(难怪他们会抱怨我们做的测试很差)

"测试就是为了证明我们的系统是不存在错误的",试想一下,如果我们的目标是证明程序中不存在错误,那么我们的潜意识就会倾向于这个目标,我们会倾向选择可能较少导致出现程序失效的测试数据,如果我们的测试目标证明程序中存在错误,我们设计的测试数据就可能更多的发现问题.于前一种方法相比,后一种方法会更多地增加程序的价值.
每当测试一个程序,都是想为程序增加多一些的价值,通过测试发现系统的更多错误来增加程序的可靠性质量,提高了程序的可靠性,是指出并最终修改程序的错误.与"测试就是为了证明我们的系统是不存在错误的"比较,更适合的定义是
测试时为了发现错误而执行的过程

"测试的目的是想证明系统能够正确完成预定的功能",这个定义又会带来另一个问题,程序即使能够完成预定的功能,也依然可能隐藏错误,也就是说,当程序没有实现预期的功能,错误时能够清晰显示出来,但程序做了不应该做的呢,这同样也是一个错误,如我们程序实现了一个除法计算器,即使我们通过各种数据正确的完成了计算任务,但在完成了不应执行的任务(除数为0),程序依然是错误的,如果我们将软件测试作为发现错误的过程,而不是只是证明"系统能够正确完成预定的功能",我们发现这类的错误可能性会打很多,所以更好的定义是
测试就是建立程序即使能完成预定功能,也发现存在完成非预定功能

转载来自:http://www.blogjava.net/dongbule/archive/2010/12/03/339721.html
309°/3079 人阅读/2 条评论 发表评论

周炜  2010-12-07

如果是你自己写的就很不错了 不过还是值得看一下


张玥晗  2010-12-07

周炜: 如果是你自己写的就很不错了 不过还是值得看一下
呵呵 在网上转载的


登录 后发表评论