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

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的观点 解读:测试风格 解读:人是第一要素 解读 ...
一周排行
  • 国防及航空制造业信息化顶层架构的大变迁
    中国的航空制造业在这些年得到长足发展,伴随着人员成本的提升和一般性仿制的格局层瓶颈,要实现 ...
  • Nginx配置网站适配PC和手机
    考虑到网站的在多种设备下的兼容性,有很多网站会有手机版和电脑版两个版本.访问同一个网站UR ...
  • nginx 有好几个参数控制缓存,以nginx缓存图片文件作为例子.第一,缓存池proxy_cache_path  /var/cache/nginx/proxy_cache levels= keys_zone= ...
  •      因为nginx自身不带日志分割的功能 所以我们用shell脚本来完成这一任务1.首先我来说明下nginx的主进程号:  如果nginx.conf 配置文件中使用了"pid /usr/local/n ...
  • 使用Zatree来一览Zabbix图表
    zatree 是来自国内58同城开发的监控软件zabbix的一个插件,主要功能是提供hos ...
  • 前些日子,刚刚结束exchange 2003的课程,在整个课程中exchange的灾难恢复也是个比较重要的实验,我用VM模拟真实环境做灾难恢复实验.一.说明:企业的邮件服务器硬盘坏了.二.要求邮件管理员:1.快速恢复 ...
  • shift:删除原数组的第一项,返回删除元素的值:如果数组为空则返回undefinedvar arr = [1, 2, 3, 4, 5];var out = arr.shift();console.log(arr); ...
  • cat /etc/os-release  #查看系统基础环境mkdir /home/user1/src   #创建目录cd /home/user1/src      #进入目录wget http://labfile. ...
  • 一.排序1 获取DataTable的默认视图2 对视图设置排序表达式3 用排序后的视图导出的新DataTable替换就DataTable(Asc升序可省略,多列排序用","隔开)DataView  ...
  • 一只oracle好不容易解决了一个问题啊因为原先数据库无法启动了,博主没有办法,只能用dbca删了数据库再创建数据库但是创建完后悲催的发现数据库连nomount都起步不来,一下子傻了最后在问了几个大神之后发现,对于这 ...