大家可以想象一下,项目就像一场陆地旅行,有的项目简单,像白天开车去商店买东西,而大多数像夜间在山里开越野车,夜间开车不掉到坑里,就必须要有足够亮的前灯了,而测试就是这些项目的前灯,要照亮前面的道路。
开发和需求拿着地图在争吵,测试也只能看地图,但可以看清楚他们在哪,要从什么路开过去,所以需要测试人员来找到信息,有关项目或产品的关键决策都要根据这些信息做出。
(注:本图出自james bach 快速软件测试培训课件)
我们可以问自己几个问题
为什么一定要测试呢?
因为没办法一次性把事做好,所以一定要测试。
为什么开发自测不行呢?
因为开发的目的是把产品做出来,开发出来的功能就好比自己的孩子,没有哪个父母觉得自己的孩子是垃圾的。都觉得自己的孩子是好孩子,都长得漂亮。例如我小孩刚出生的时候,我就觉得很漂亮,还琢磨别人家小孩刚生出来那么丑,我家小孩生出来却不一样。过了3个月后,再回去看刚出生的相片,对比三个月后的孩子,发现刚出生时皮是皱的、脸是黑的,确实挺丑的。
开发自测可以吗?
关注点不同,开发主要熟悉自己的具体模块和具体技术,测试更熟悉整个系统和实现的业务,并且习惯从发现问题的角度考虑。
所以需要产品、开发、测试共同合作,一起把产品做好。
那测试能否发现产品中所有的bug呢?答案非常残酷,不能!测试就好像在拿着手电筒在一个没有灯的仓库里找虫子,你只能确保你找过的地方虫子都找出来了,也只能确定自己找出了多少虫子,没办法确定仓库里面是否还有虫子。
所以测试要做到的是尽可能找出所有影响大的大虫子,尽可能在较短时间内找到更多的虫子,在有人可能会走的路上把虫子扫除干净。