首先,测试存在的必要性。
关于测试的目的各种书上不一致,比较通用的是验证需求和实现的一致性。为什么这些事情开发不能自己做?需要测试来做?原因有以下几点。
从认知上:自己无法知晓自己的错误。
开发若是对产品需求理解错误,那么实现必然错误,即使自己测试也无法找出这些沟通理解和认知上的错误,一旦上线必然导致对用户的伤害。但是测试的需求来自于产品,所以能够弥补这一缺陷,从而最终保证质量。这里引申出一个新的问题,就是那些没有产品开发自己的需求是否需要测试呢?我认为对应没有产品的需求可以合适的降低开发测试比,在用户能够接受不完善的情况下甚至可以没有测试。
从心理上:自己不愿意证明自己的错误。
开发一向视自己的产品如孩子,没有人愿意去说我的**是不好的。一旦有这种想法,他们就很难找出自己产品中的问题了。记得女儿刚出生几个月的时候我老公曾经问我:“女儿是真的很漂亮还是我们自己觉得很漂亮。”我很肯定的告诉他:“她是我见过最漂亮的宝贝。”然后拿着几个月的照片四处炫耀。现在再看到当时照片,我一般会对女儿说:“你看看你小时候长得多难看啊。”心理学上有个现象,叫做自我预言的自我实现,一旦你认为你的产品是好的,你所做的事情只是去证明我们的产品是对的,是好的,很难找出产品中潜在的问题。但是测试从一开始就是抱着找出问题的目的,因此在预防缺陷上更加具备目标性,效率和质量都会优于开发。
从过程上:整体的质量未必是开发的责任。
发现缺陷的过程本身是单调的,尤其是要全面回归整个链路,这意味着开发不只要发现自己的问题还必须发现其他人的问题。发现问题之后还需要和对方进行全面的沟通,复现缺陷,验证缺陷,对开发来说多数人不愿意承担其他人责任,