在敏捷测试(Agile testing)中,探索性测试是作为一个重要组成部分而出现的,把“对系统的探索”和“对系统进行测试”结合在一起,敏捷测试可以利用探索性测试达成“敏捷”的目标。
探索性测试并不是一个近才被提出来的测试技术,也不是一种很深奥的技术——事实上,许多测试工程师在自觉或不自觉地使用这种技术。那么,究竟什么是探索性测试呢?
对探索性测试的理解本身会存在一些争议,因此,很难给出探索性测试的准确定义,不过,一般来说,探索性测试具有这样的一些特点: 1、探索性测试强调测试设计和测试执行的“同时”性——这个“同时”是相对于传统软件测试过程中严格的“先设计,后执行”来说的; 2、测试工程师通过测试来不断学习被测系统; 3、探索性测试的重点是创造;
探索性测试的出发点是“测试者如果没有真正使用过系统,不可能真正理解和掌握系统,也不可能真正有效地测试该系统”,相信所有有过测试实践的测试工程师都会承认这一点,确实,在我们没有接触到一个真正的系统之前,很难完全认识到这个系统,虽然可以在测试计划阶段按照需求或是设计的要求写出测试方案和用例,但总觉得这些用例不可能具有太强的可操作性。
事实上,探索性测试给出的另一个测试的思路:“如果我们可以在对系统的测试中逐渐深入地学习系统,测试是否会更加有效率?”在我看来,这个问题的答案是显然的,如果测试工程师能够在测试中对系统越来越深入地了解,那么,利用这些逐渐增加的了解,自然可以让测试变得更加有效率。
探索性测试只是一种方法和思路,并不是一个确定的过程。因此,在使用探索性测试时,无法回避的是When的问题,也是说,在什么时候进行探索性测试更加有效呢?我的答案是“在你认为合适的时候”:)因为,探索性测试可以针对不同的测试层面,例如,针对业务场景的探索性测试、针对功能点的探索性测试,甚至是头脑风暴式的探索性测试,都能够在测试中发挥积极主动的作用。