一般认为“软件测试员”是为了保证软件的正确运行而设置的职位。这样的观点对不对呢?我认为这是软件开发团队的管理者的看法,但正因为这样,这个看法几乎被所有团队成员所接受了,包括测试员自己。 我认为测试员不应该这样看待自己的工作。如果测试员认为自己的工作是要保证软件的正确运行,那么在潜意识里,他(她)就会倾向于忽略那些可以发现Bug的测试用例。这也就是弗洛伊德所说的“失误动作”中的“选择性遗忘”。这样还怎样保证软件的正确性呢? 我的观点是:测试员的工作目的应该是想尽一切非物理攻击的办法毁灭这个软件。测试员就应该有这样的心态,这样才可能更多的发现软件中的Bug,从而提升软件的价值。还是从心理学的角度来说,如果一个测试员有了这样的心态,那么在工作时的不经意间就会有Bug被逮到,尤其是那些莫名其妙的“失误动作”。这也是为什么一些优秀的测试员经常能够不应用一般的测试理论而仅仅凭借“直觉”发现比其它测试员更多的Bug的原因了。 测试员应该给自己定好位。我们不是质量保证人员,我们是“毁灭者”。 伟大的卡尔·波普尔提出过一个叫做“证伪”的论断。大意是“科学的增长是通过猜想和反驳发展的,理论不能被证实,只能被证伪”。这个观点有点奇怪,但我对它深信不疑。公司里制定的每一个项目计划,我们都无法证明那个计划是正确的,我们只能想方设法证明这个计划是错误的,然后修正,再证明,再修正,直到我们不能证明它有Bug为止,这时我们就认为它是可行的。软件开发也是一样,我们永远无法证明一个软件是完全正确的,我们只能不断地找Bug,然后修正,再找Bug,然后打补丁……直到我们找不到Bug为止,这时我们认为这个软件是接近于完美的(完美几乎是不可能的)。 所以,做为测试员,永远要坚定一个信念:这个软件一定有问题,就算它以前没问题,经过我的手,我也要找出问题来。