“…我们能看懂代码,找出代码里的问题,不仅如此,我们还能修复Bug。”

  “好是好,不过代码量那么多,你们需要多少人来做啊?至于修复Bug,还是让他们自己改吧,不然我花那么多钱请他们干吗?”

  “…我们现在用的好的测试管理工具,还有好的自动化测试工具,可以把测试完全自动化。”

  “挺好,不过我还是担心需要的资源太多,自动化测试是挺好,你说说具体好在哪里呢?如果比手工测试成本低,行。”同样的,用户对我们用什么方式测试并不特别关注,成本才是关键。

  “…我们的工程师工作效率很高,测试速度非常快,比你们部门的人要快50%。”

  “厉害!不过我们这里的薪水都比较低的,你们都是高薪IT,人月成本这么高,如果测的结果差不多,还是我自己找人来做吧。”

  “…我们的工程师都是专业人员,你的人只能发现一些表面的Bug,而我们能找出隐藏很深,并且很严重的Bug,这些Bug提早发现,能减少很多损失。”

  “有道理,其实我也担心他们这样点点,有些深层次问题发现不了,要是上线一段时间以后,大家才发现,那改都来不及了。”

  好了,这段虚拟的对话到此为止,下面我们来做一些分析。先看一下开始提到的性能测试和安全测试,这两个测试类型有一定的技术壁垒,因此性能和安全的Bug,不是每个人随便能发现的。另外虚拟对话中提到,发现软件设计方案中的问题,也非常有难度。而功能测试的门槛相对较低,即使没受过训练,一般人也能发现一些初级的Bug,这让很多人产生一个错觉:“一般人”都能做功能测试。

  要证明这个错觉不成立,其实也挺容易,那是看测试人员所发现的Bug,与“一般人”有哪些不同。如果找不到明显的不同,那错觉变成了现实,如果测试人员没发现的Bug,让一般人或者用户发现,那更杯具了。由此我们推理出测试的核心价值:

  能发现一般人发现不了的Bug!

  这句话看起来非常简单朴实,但是包含了很多因素。目前淘宝测试团队所设定的金Bug大奖(Gold Bug Award),是为了鼓励测试工程师体现这一核心价值。

  有的测试工程师,由于项目时间太紧,开发匆忙赶出的代码质量又不合格,所以大部分时间都纠缠在初级的Bug里面,根本没时间、没精力去关注深层次Bug,虽然做的很辛苦,也做了很多项目,但是成长很慢,原因在这里。

  要解决这个问题,测试工程师一方面要加强对开发技术的学习,了解软件程序的内部结构,为发现深层Bug创造必要条件;另一方面,要想办法推动开发提高代码质量,让自己从初级Bug里解脱出来,为自己赢得更多的时间,来寻找深层Bug,并且总结发现Bug的技巧和经验。

  到这里我们对测试核心价值的讨论可以告一段落了,软件测试要体现核心价值,自说自话是没有意义的,只有把测试作为一种服务提供给客户,让客户来评判,测试才能发展得更好。