探索性测试可以说是一种测试思维技术。它没有很多实际的测试方法、技术和工具,但是却是所有测试人员都应该掌握的一种测试思维方式。探索性强调测试人员的主观能动性,抛弃繁杂的测试计划和测试用例设计过程,强调在碰到问题时及时改变测试策略。
对探索性测试最直白的定义是:同时设计测试和执行测试。探索性测试有时候会与即兴测试(ad hoc testing)混淆。即兴测试通常是指临时准备的、即席的Bug搜索测试过程。从定义可以看出,谁都可以做即兴测试。由Cem Kaner提出的探索性测试,相比即兴测试是一种精致的、有思想的过程。
在对测试对象进行测试的同时学习测试对象并设计测试,在测试过程中运用获得的关于测试对象的信息设计新的更好的测试。这个有趣的过程如下图所示。
探索性测试
探索性测试强调测试设计和测试执行的同时性,这是相对于传统软件测试过程中严格的“先设计,后执行”来说的。测试人员通过测试来不断学习被测系统,同时把学习到的关于软件系统的更多信息通过综合的整理和分析,创造出更多的关于测试的主意。
1.探索性测试的基本过程
探索性测试的基本过程包括如下:
识别软件系统的目的;
识别软件系统提供的功能;
识别软件系统潜在的不稳定的区域;
在探索软件系统的过程中记录关于软件的信息和问题;
创建一个测试纲要,使用它来执行测试。
注意:上面的过程是一个循环的过程,并且没有很严格的执行顺序,完全可以先创建测试纲要,执行测试,然后在测试中学习软件系统;也可以先探索软件系统的各个区域,然后再列出需要测试的要点。
探索性测试强调创新的测试思维,在测试过程中不断地出现许多关于测试的新想法,因此就像一把叉,下图就是一个所谓的“探索叉”(exploratory forks)。
探索性测试强调测试过程中要有更多的发散思维,这也是与传统测试方式的最大区别。传统测试方式强调设计完善的测试用例,测试人员严格按测试用例执行测试,这多少限制了测试人员的测试思维,测试人员往往缺乏主观能动性。
探索叉