探索式软件测试之基本概念

1.定义

探索性测试可以说是一种测试思维技术。它没有很多实际的测试方法、技术和工具,但是却是所有测试人员都应该掌握的一种测试思维方式。探索性强调测试人员的主观能动性,抛弃繁杂的测试计划和测试用例设计过程,强调在碰到问题时及时改变测试策略。

对探索性测试最直白的定义是:同时设计测试和执行测试。探索性测试有时候会与即兴测试(ad hoc testing)混淆。即兴测试通常是指临时准备的、即兴的Bug搜索测试过程。从定义可以看出,谁都可以做即兴测试。由Cem Kaner提出的探索性测试,相比即兴测试是一种精致的、有思想的过程。

在对测试对象进行测试的同时学习测试对象并设计测试,在测试过程中运用获得的关于测试对象的信息设计新的更好的测试。探索性测试强调测试设计和测试执行的同时性,这是相对于传统软件测试过程中严格的“先设计,后执行”来说的。测试人员通过测试来不断学习被测系统,同时把学习到的关于软件系统的更多信息通过综合的整理和分析,创造出更多的关于测试的主意。

2.探索性测试的基本过程

探索性测识别软件系统的目的;

识别软件系统提供的功能;

识别软件系统潜在的不稳定的区域;

在探索软件系统的过程中记录关于软件的信息和问题;

3.探索性测试的四个类型

探索式软件测试一共分为自由式探索式测试、基于场景的探索式测试、基于策略的探索式测试和基于反馈的探索式测试。下面将详细介绍4种类型的应用场景。

一:自由式探索式测试

自由式探索式测试指的是对一个应用程序的所有功能,以任意次序、使用任何如数进行随机探测,而不考虑哪些功能是否必须包括在内。自由式测试没有任何规则和模式、只是不停的去做。很不幸,很多人认为所有的探索式测试都是自由式的,从长远的观点来看,这种看法低估了探索式测试技术的能力,我们在随后将看到这类测试的一些变种。

一个自由测试用例可能会被选中成为一个快速的冒烟测试,用它来检查是否会找到重大的崩溃或者严重的软件缺陷,或是在采用先进的技术之前通过它来熟悉一个应用程序。显然,自由式探索式测试无需也不应该进行大量的准备规则。事实上,它更像是“探索”而不是“测试”,所以我们应当相应的调整对它的期望值。

自由式测试不需要多少经验或者信息。但是,同以下提到的探索式技术相结合后,它将成为一个非常强大的测试工具。

二:基于场景的探索式测试

基于场景的探索式测试和传统的基于场景的测试有类似之处。两者都涉及到一个开商店,就是用户故事或者是文档化得端到端场景的开始之处,那也是我们所期望的最终用户开始执行应用程序的地方。这些场景可以来自用户研究、应用程序、以前版本的数据等,并作为脚本用于测试软件。探索式测试对传统场景测试的补充,脚本的应用范围扩大到了更改、调查和改变用户执行路径的范畴。

使用场景作为指导的探索式测试人员经常会修改他感兴趣的输入或者是追寻一些并没有包括在脚本中的潜在副作用。不过,由于最终的不表是完成给出的场景,这些测试上的弯路、最终总是会回到脚本文件记载的用户主要执行路径。

三:基于策略的探索式测试

将自由式测试探索式与具有测试老手的经验、技能和感知融合在一起,就成为基于策略的探索式测试。它属于自由式的探索,只是他是在现有的错误搜索技术下引导完成的。基于策略的探索式测试应用所有的已知技术(如边界值分析或组合测试)和未知的本能(如异常处理往往容易出现软件缺陷),来指导测试人员进行测试。

这些已知的策略是基于策略的探索式测试成功的关键,存储的测试知识越丰富,测试就会更有效率。这些策略缘于积累下来的知识,它们指导软件缺陷隐藏在哪里,如何综合人工输入数据,那些代码路径常常出现故障。

基于策略的探索式测试结合了测试老手的经验和探索型测试人员的随机性。

四:基于反馈的探索式测试

基于反馈的探索式测试缘于自由式测试,但是随着测试历史的形成,测试人员们就会利用反馈来指导今后的探索。“覆盖”就是典型的例子。一名测试人员通过咨询那些覆盖指标(代码覆盖、用户界面覆盖、特性覆盖、输入覆盖或者其中的某一些组合)来选中新的测试用例,以使这些覆盖指标得以提高。覆盖指标只是收录反馈信息的标志之一。我们也会看其他标志,如代码改动数量和软件缺陷密集程度等。

基于反馈的探索式测试时一种“上一次测试”:在上一次我根据应用程序的最后状态选了每某一个输入之后、下一次我就会选中另外一个输入。或者是,在上一次遇到这个界面时我用A属性,这一次我就会用B属性。

基于反馈的探索式测试工具是非常有价值的,它可以是测试人员保存、搜索测试历史并据此采取实时行动。不幸的是这样的工具很少。

更多相关文章
  • 在本书的开头,有必要先澄清对软件测试的理解,包括软件测试的核心价值和作用,以及软件测试和软件开发的关系等,帮助读者建立起软件测试的正确理念,这样对阅读和理解以后各章的内容会有很大帮助.如何理解软件测试和建立起软件测试的正确理念呢?还是从软件测试的基本概念出发,回答下列几个问题,逐步揭示软件测试的内涵 ...
  • 软件测试之魂:核心测试设计精解(第2版)(掌握核心竞争力成为不可替代的测试精英)肖利琼著ISBN 978-7-121-19677-52013年5月出版定价:59.00元356页16开编辑推荐本书之所以被数位测试界技术权威联名推荐,是因为其紧扣测试工作命门,围绕测试设计展开全部内容:更是国内外以此为题 ...
  • 探索式测试(Exploratory Testing)是敏捷测试中的重要组成部分,其价值与一般性测试如用户故事测试或者自动化测试不同,它所关注的是“意料之外”的软件缺陷,探索式测试作 为一个研究性.启发性和严肃性并存的测试方法,是一般性测试的重要补充.随着敏捷测试的推广,探索式测试逐渐受到大家的关注和 ...
  • 1.集成测试概念 1.集成测试也叫组装测试.联合测试.子系统测试或部件测试. 2.集成测试是在单元测试的基础上,将所有模块按照概要设计要求(如根据结构图)组装成为子系统或系统,进行集成测试. 2.集成测试的目的 1.找出模块接口以及整体体系结构上的问题: 2.确保各组件组合在一起后能够按照既定意图协 ...
  • 探索式测试实践之路
    探索式测试实践之路(国际大师JamesBach题词推荐之探索式测试唯一本土著作)史亮,高翔著ISBN 978-7-121-17713-22012年8月出版定价:65.00元16开316页宣传语:国际大师JamesBach题词推荐之探索式测试唯一本土著作内容简介探索式测试是一种重要的软件测试思想.随着 ...
  • 257期门诊集锦探索式测试的奥秘
      技术门诊是51CTO社区品牌栏目,每周邀请一位客座专家,为广大技术网友解答疑问.从热门技术到前沿知识,从技术答疑到职业规划.每期一个主题,站在最新最热的技术前沿为你引航!       本期特邀淘宝资深软件测试工程师.畅销书作者高翔老师针对探索式测试的问题给予解答,欢迎网友积极提问,与专家一起讨论 ...
  •  前段时间的QCon北京2011大会里面有个探索式测试的分享,是Erik Petersen 演讲(资料下载)的,我由于一些原因,没有在现场向大师学习,之后发现他讲的非常好,效果也很好,引起了很多人对于探索式测试的兴趣.这里也感谢InfoQ的给力,我把了Erik的PPT看了两遍,有非常深刻的体会.也确 ...
  • 不久前,我接受"火龙果讲堂"的邀请,以"探索式测试简析"为题,做了一场在线报告,并和听众进行了交流.报告的录像已经上线,报告的幻灯片分享在网盘.以下是报告的大纲. 什么是探索式测试? 术语提出者Cem Kaner的观点 解读:测试风格 解读:人是第一要素 解读 ...
一周排行
  • 5 算法 ~~~~~~~5.1 确保目标区间足够大或者在算法执行时可以增加大小 ===================================================   1. 在算法中,要往Cont ...
  • 1,转义字符 \b 退格字符   \f 换页符   \n 换行字符  \r 回车字符  \t 制表符  \'单引号 \"双引号 \\ 反斜线 \xNN 其中NN是一个十六进制数,表示Latin-1字符集中的 ...
  •  很多朋友对于"专线接入"还不是很了解,对于"专线接入"的类型更加不了解,在这个博文中,特对专线接入定义及类型做个介绍,对于需求高速.高效网络的企业及朋友是有帮助的.专线接入的 ...
  • 一.       简单介绍inux中有两类函数库,分别是静态库和动态库.1.静态函数库: 这类库的名字一般是libxxx.a:利用静态函数库编译成的文件比较大,因为整个函数库的所有数据都会被整合进目标代码中,他的优点 ...
  • 虚拟机创建的50个步骤以及100个知识点仅作为个人笔记使用
    网上大侠们分享的资料都非常好,就看你会不会用,如何使用,再次对本文所引用资料的作者表示感谢 ...
  • volatile 变量提供了线程的可见性,并不能保证线程安全性和原子性. 什么是线程的可见性: 锁提供了两种主要特性:互斥(mutual exclusion) 和可见性(visibility).互斥即一次只允许一个线 ...
  •         爱因斯坦小时候是个十分贪玩的孩子.每天,他不是在大街上闲逛,就是和周围的一群孩子到庄园或河边玩耍,像个十足的少年嬉皮士.        爱因斯坦的母亲常常为此忧心忡忡,她再三告诫爱因斯坦说:" ...
  • 喜欢DELPHI游戏开发的人加我QQ:317871868我是一个初学者,希望高手能指点一二. 
  • 由于这边大部分是redhat,所以在安装PXE服务器的时候需要有些更改.Centos不需要更新源. 首先是编辑源文件 mv /etc/yum.repos.d/rhel-debuginfo.repo  /etc/yum ...
  • 搭建ModelsimSE仿真环境-使用do文件仿真
    进制的显示. add wave–position  insertpoint  sim:/t ...