扩展知识:探索性测试(一)文章摘要
上期回顾:预备知识:软件测试专业术语
实 验 简 介
探索性测试(Exploratory Testing)可以说是一种测试思维技术。它没有很多实际的测试方法、技术和工具,但是却是所有测试人员都应该掌握的一种测试思维方式。探索性强调测试人员的主观能动性,抛弃繁杂的测试计划和测试用例设计过程,强调在碰到问题时及时改变测试策略。
实 验 目 的
(1)理解探索性测试的方法与价值。
(2)能够将探索性测试方法应用于实际项目中。
实 验 流 程
一、关于探索性测试
探索性测试可以说是一种测试思维。它没有很多实际的测试方法、技术和工具,但是却是所有测试人员都应该掌握的一种测试思维方式。探索性强调测试人员的主观能动性,抛弃繁杂的测试计划和测试用例设计过程,强调在碰到问题时及时改变测试策略。
对探索性测试最直白的定义是:同时设计测试和执行测试。探索性测试有时候会与即兴测试(ad hoc testing)混淆。即兴测试通常是指临时准备的、即时的Bug搜索测试过程。从定义可以看出,谁都可以做即兴测试。由Cem Kaner提出的探索性测试,相比即兴测试是一种精致的、有思想的过程。
在对测试对象进行测试的同时学习测试对象并设计测试,在测试过程中运用获得的关于测试对象的信息设计新的更好的测试。这个有趣的过程如下图所示。
探索性测试强调测试设计和测试执行的同时性,这是相对于传统软件测试过程中严格的“先设计,后执行”来说的。测试人员通过测试来不断学习被测系统,同时把学习到的关于软件系统的更多信息通过综合的整理和分析,创造出更多的关于测试的主意。
1.探索性测试的基本过程
(1).识别软件系统的目的;
(2).识别软件系统提供的功能;
(3).识别软件系统潜在的不稳定的区域;
(4).在探索软件系统的过程中记录关于软件的信息和问题;
(5).创建一个测试纲要,使用它来执行测试。
注意:上面的过程是一个循环的过程,并且没有很严格的执行顺序,完全可以先创建测试纲要,执行测试,然后在测试中学习软件系统;也可以先探索软件系统的各个区域,然后再列出需要测试的要点。
探索性测试强调创新的测试思维,在测试过程中不断地出现许多关于测试的新想法,因此就像一把叉,下图就是一个所谓的“探索叉”(exploratory forks)。
探索性测试强调测试过程中要有更多的发散思维,这也是与传统测试方式的最大区别。传统测试方式强调设计完善的测试用例,测试人员严格按测试用例执行测试,这多少限制了测试人员的测试思维,测试人员往往缺乏主观能动性。
2.探索性测试的管理
(1).探索性测试是一种不是很严谨的测试方法,缺乏可管理性和度量性。因此,James Bach提出了基于任务的测试管理(Session-Based Test Management)。Session-Based测试管理是用于度量和管理探索性测试的一种方法。
(2).测试人员在采用探索性测试方法的测试过程中,应该及时记录下所谓的“测试故事”,把所有测试中学习到的关于软件系统的知识要点、问题和疑问、测试的主意、进行了怎样的测试等相关信息记录下来,然后周期性地与测试组长或其他测试人员基于记录的“测试故事”展开简短的讨论。
(3).测试组长基于这些记录的结果来判断测试的充分性,测试人员通过讨论可以共享学习到的软件系统相关的信息,交流测试的主意,总结测试的经验,激发测试人员拿出更多的测试主意,从而指导下一次测试任务的执行。
在这种方式的测试管理中,测试组长就像一名教练,但是需要参与到测试的实际任务中,指导测试人员测试的方向和重点,提供更多的关于软件系统相关的信息给测试人员,授予测试人员更多测试技术。
说明:未必需要完全采用探索性测试的方法,但是可把探索性测试方式作为传统测试方式的补充,在每一项测试后留下一定的时间给测试人员做探索性的测试,以弥补相对刻板的传统测试方式的不足。应该更多地采用探索性测试的思维方式,应用在日常测试工作中。
3.ET人员所需要的能力
(1).测试设计:一个优秀的测试设计师,一般有如下几个能力:首先是分析这个产品;评估产品的所有的风险;使用现有的工具去分析或记录;测试设计技术的熟练使用。
(2).细心观察:一个优秀的ET测试人员必须比一般的人甚至是做ST的测试人员更具有细心观察细节的能力。ET测试人员必须去观察一切看似不正常或有疑问的地方,他还要能仔细的在推论和其他一些的假设中辨别出真理何在。
(3).批判性思考:一个优秀的ET测试人员能够快速的评审和解释他们的思考逻辑,并能在独立思考中需找错误。这在重现bug的时候非常重要。
(4).丰富的想法:一个优秀的ET测试人员能够比一般人产生更多且更好的想法。但通过什么来产生这么多且好的idea呢?这个也是ET的核心了,目前ET的牛人们创立了一个叫Heuristics的方法,这个方法比较抽象且实践过程在国内几乎空白,后续讨论下。
(5).丰富的资源:一个优秀的ET测试人员能够构建一个集测试工具,信息资源,测试数据,同仁的一个储存室。这样在测试的时候,可以很快的应用这些资源。
要到达这些要求,测试人员需要做这些努力:
(1).ET要有丰富的测试经验,掌握丰富的bug库,也经产分析bug产生原因
(2).对于风险的知识,需要具有参与各种类型的产品测试经验,并经常总结分析测试效果和bug类型
(3).丰富的测试工具、产品知识
4.关于一些问题的分析
为什么产品提交到测试这边,我们的测试工程师可以发现很多开发或用户都发现不能的Bug呢?
(1).我们是测试工程师,我们是专门干这个的。
(2).我们很好的理解了需求,我们使用了很多且很好的测试设计技术。
(3).我们有较多时间进行测试执行。
(4).开发人员或用户没有时间去进行测试。
(5).开发人员或用户没有时间不知道怎么去进行测试。
(6).我们的运气好,突然发现了这些好的Bug。
(7).……………………
为什么有些测试人员能发现其他测试人员不能发现的Bug呢?大家可能觉得这个原因肯定有很多,比如有这些:
(1).其他测试人员对于业务需求不熟悉,该测试人员对于业务非常精。
(2).其他测试人员没有很好的状态,注意力不够集中。
(3).其他测试人员的测试经验较少,该测试人员测试经验非常丰富。
(4).其他测试人员的运气不怎么好,该测试人员是突然灵感出来发现的。
(5).其他测试人员的测试环境和测试数据不一样。
(6).……………………
5.ET的思维过程:
6.漫游测试:
(1).商业区:(银行、办公楼、餐馆)在系统中完成实际业务的模块
(2).历史区:(博物馆)它从前版本遗留下代码,还有那些曾经出现较多缺陷的特性和功能
(3).旅游区:(旅游景点)有些特性和功能对新用户非常有吸引力,然而老用户不再使用它们。
(4).娱乐区:(休闲场所) 具有辅助特性和功能,适用于娱乐区的测试。
(5).旅馆区:(旅馆及住所) 软件休息时,它实际上还非常繁忙
(6).破旧区:(违法乱纪常发地带)这里可能存在非常令人讨厌的漏洞。
测试就好比旅客在假期里面旅行的目的就是在尽量短的时间里看到多的景点。
下周分享:探索性测试(二)
版权所有,转载本站文章请注明出处:蜗牛学院在线课堂, http://www.woniuxy.com/note/514