几个月前我还在谈论黑盒测试不一定比白盒测试技术含量低,现在我却可以比较肯定地说,黑盒测试比白盒测试更难,技术要求更高。道理其实非常简单,黑盒,白盒测试的本质区别在于源代码的访问权利,白盒测试具有这种权利,因此也具有更多的资源和信息进行测试,当然事情会变得容易很多,而黑盒测试由于不能看到源代码,使得对于白盒测试人员发现的bug,你要花更多的时间,并且具有更高的技术才有可能发现。

我做黑盒测试已经4年多了,是一个地地道道的黑盒测试人员,可是我具有源代码访问的权利,也是说,虽然我是做黑盒测试的,但是我所拥有的信息并不比白盒测试人员少。随着我黑盒测试经验和技术的提高,我突然发现我已经完全依赖与源代码提供的信息了,如果没有源代码,我的黑盒测试的工作将会变得复杂很多,困难很多,甚者无法实现。这也让我有了一个强烈的感觉,是黑盒测试比白盒测试更难。

在Symantec出版的一本书《TheArtofSoftwareSecurityTest》里边有这个说法。这本书我觉得一般般,但是里边体现着这个道理,是,“对于白盒测试,一个公司可以组成一个测试队伍来进行,而对于黑盒测试,可能很少有公司有这个能力了,只能去外边聘请专业的公司来作,这个成本是很高的,但是是值得的”。

经常听到有人抱怨“我在公司是做黑盒测试的,没什么技术含量,我的目标是转到白盒测试”,我一直觉得这个说法是可以质疑的,也希望看了我的这篇文章以后,不要再出现这种声音,更不要再拿它当成自己不去提高测试技术的一个冠冕堂皇的借口了。

为什么我们大多数人,包括以前我自己都会认为黑盒测试比白盒测试的技术含量低呢?那是因为,我们绝大多数人都是在做低端黑盒测试的。很早以前我曾想过,黑客都是通过黑盒测试的方法来寻找安全漏洞的,我们怎么能说黑盒测试技术含量低呢?随着自己的水平向黑客的方向接近,自己也越来越有更深,更丰富的理解和体会了。

如果我们把刚进入黑盒测试领域的新人的技术打分为0,而黑客的技术打分为5的话,那么根据技术水平我有这样一个列表:

0.测试新手

1.黑盒手工测试

2.黑盒自动化测试

3.具有白盒测试能力

4.安全测试

5.黑客