让我们思考几个常见的问题:
- 软件测试的目的是什么?
- 开发人员能否构建出没有Bug的完美软件?
- 测人人员和开发人员是什么关系?
- 软件测试能否保证软件质量?
先闭目冥想五分钟吧,然后可以尝试着回答上面的问题。
计算机先驱 Maurice Wikes 回忆起 1949 年他在英国剑桥工作的情形,在拖着打孔纸带上楼给雏形计算机 EDASC 装载程序时,他看到了自己的未来:
我强烈的意识到,生命中剩下的好日子,都将耗费在给自己的程序找错误上头。
Maurice Wikes告诉我们,没有完美的软件。
我在我的微信订阅号“程序视界”里发布过一篇荐书文,推荐了温伯格技术思想三部曲中的《颠覆完美软件::软件测试必须知道的几件事》。在这本书里,温伯格也告诉我们,没有完美的软件。所有的开发和测试人员都应该读读那本书。
温伯格在《颠覆完美软件》中几乎讨论所有常见的与软件测试相关的概念、问题和指导思想,所以,在这篇文章里,我只能来吐槽啦,我将从以下几方面列一些常见的现象,希望能引起大家的思考。
- 测试和开发的关系
- 流程与标准
- 资源
- 态度
测试和开发的关系
测试和开发是对立的吗?
从处理Bug的角度看,似乎可以这么说。开发人员既生产代码,也生产Bug。因为开发人员不可避免地会生产Bug,所以测试人员必须存在,以便在软件交付之前尽可能多地检出Bug,保证交付给客户的软件质量更好一些。一个产Bug,一个挑Bug,看起来似乎是对立的。
在现实中,很多测试团队和开发团队也正是因为这一点而搞得关系不和,甚至真的对立起来。请回想一下你周围发生的与开发和测试相关的事儿,看看有没有遇到过下面的情景:
- 开发说,测试净找麻烦,客户跟本不可能像他们那样使用软件
- 测试说,问题总是会在看似极端的条件下产生,用户总是会不经意触碰到看似极端的不可能出现的条件
- 开发说,测试花在异常情况下的精力比测试主流程还多,不知道轻重缓急
- 测试