定义

探索性测试(Exploratory Testing)是一种自由的软件测试风格,强调测试人员同时展开测试学习,测试设计,测试执行和测试结果评估等活动,以持续优化测试工作。

其特征有:即兴发挥,快速实验,动态调整。

核心

探索性测试是一种软件测试风格(Style),它强调独立测试人员 (Individual tester)的个人自由和职责(Personal Freedom and Responsibility)。

为了持续优化其工作的价值(Value),将测试相关学习(Test-related Learning),测试设计,测试执行和测试结果分析作为相互支持的活动,在整个项目过程中并行的执行。

特性描述

  • 是一种思维方式和测试风格,而不是一种具体的软件测试技术,可以应用于任何测试阶段。
  • 强调“同时进行测试设计和执行”, 通过执行阶段的发现进一步设计新的测试,能够充分发挥软件测试工程师的“主动发现和思考”的技能。
  • 将测试学习,测试设计,测试执行和测试结果分析同时进行,作为一个循环快速的迭代,以不断收集反馈,调整测试,优化价值。
  • 与随机测试和漫游测试并不相同,具有一定的思维模式CPIE。
  • 符合敏捷价值观,通过测试逐渐学习产品,并让所学指导测试实践
  • 详细的测试记录是测试执行的自然结果,通常应该包含测试目标,测试范围,测试策略,缺陷列表,测试过程中发现的值得进一步探讨的问题,可以复用的测试资源,测程耗时等。

测试过程

测试人员制订测试计划和测试用例,在后续步骤的细微时间片中,它们将会被被反复执行。

分解测试任务,每个任务都需要有明确的退出条件和时间限制。

在一个测试用例内执行测试,在该过程中,测试人员设计测试,执行测试,评估测试结果。根据获得的知识和发现的疑问再设计测试用例,以拓展测试的广度和深度。

反思当前的测试进展,并优化测试计划,根据新的认识:可以追加一个测试用例,可以修改当前计划的不足,可以删除一些多余的任务等。

集合团队力量,评审测试计划,头脑风暴,分析测试结果。

  1. 测试人员按照一个测试用例来执行测试,得到的程序输出与预期不一致。
  2. 但是经过分析并不是一个缺陷,根据这个输出想出了新的测试思路。
  3. 根据新的思路做详细的测试,就这样一直探索下去,最终发现一个问题。
  4. 而发现问题的这个测试思路和测试用例并没有出现在最初的设计中。

对比即兴测试

  • 相同点:

    都强调即兴发挥,利用直觉和经验,快速地测试软件,并不停的调整测试策略。
  • 不同点:

    探索性测试:是带着反思的测试,在整个过程中测试人员不断地提出假设,用测试去检验假设,持续完善测试模型,然后分析测试结果来证实或推翻假设,驱动进一步的测试。

    即兴测试: 往往是利用错误猜测,典型风险和常见缺陷来快速地试探,它可以在短时间内发现问题,但是不强调系统性,完整性。

CPIE

该模型包含了一组启发式问题,以推动测试人员在知识,分析,实验和测试执行上深入探索。

整理 (Collation):尽可能收集关于测试产品的信息,去了解和理解它们

排序 (Prioritization):确定所有测试任务的优先级。

调查 (Investigation):对即将执行的测试任务进行仔细的分析并确定测试输入和预期输出。

实验 (Experimentation):执行测试,验证预期结果,检查获取信息的正确性。根据实验结果,收集更多的信息,调整测试优先级,深入探索。

HTSM

启发式测试策略模型HTSM(Heuristic Test Strategy Model)

测试人员利用质量标准(Quality Criteria)、项目环境(Project Environment)、产品元素(Product Element),指导测试技术(Test Techniques)的选择与应用,并产生观察到的质量(Perceived Quality)。

  • 项目环境(Project Environment):资源,约束和其他影响测试的项目元素。
  • 产品元素(Product Elements):需要测试的对象。
  • 质量标准(Quality Criteria):分操作性标准和开发标准
  • 测试技术(Test Techniques):生成测试的策略,有效的选择和实施测试技术,需要综合分析项目环境,产品元素和质量标准。

参考信息

什么是探索性测试?

探索式测试:基本概念

测试建模:启发式测试策略模型(Heuristic Test Strategy Model)

Testing - 测试基础 - 探索的更多相关文章

  1. Testing - 测试基础 - 方法

    选择和使用测试方法和工具 按照测试需求用途(或测试技巧)选择 在软件开发生命周期和软件测试流程中适当地选择 按照测试人员实际技能选择 选择可提供的和可执行的 测试方法 类别及技巧 目标 使用方法 举例 ...

  2. Testing - 测试基础 - 自动

    自动化测试模型 一个自动化测试框架就是一个集成体系,在这一体系中包含测试功能的函数库.测试数据源.测试对象识别标准,以及种可重用的模块. 自动化测试框架在发展的过程中,不断有新的模型(概念)被提出,目 ...

  3. Testing - 测试基础 - 概念

    测试是为了度量和提高被测试软件的质量,对测试软件进行工程设计.实施.维护的的整个生命周期过程. 仅仅发现Bug是测试的初步,而分析出根本原因推动问题的解决,却要有很深的功底. 不同的测试岗位从事不同的 ...

  4. Testing - 测试基础 - 分类

    对软件内部结构的深入程度 黑盒测试:又叫功能测试.数据驱动测试或基于需求规格说明书的功能测试. 白盒测试:又称结构测试.逻辑驱动测试或基于程序代码内部构成的测试. 灰盒测试:包含性能测试.自动化测试. ...

  5. Testing - 测试基础 - 流程

    测试存在于各个阶段: 需求测试--->单元测试--->集成测试--->系统测试--->性能测试--->用户测试--->回归测试 需求测试 完整性&正确性 一 ...

  6. Testing - 测试基础 - 用例

    测试用例 是指对一项特定的软件产品进行测试任务的描述,体现测试方案.方法.技术和策略. 内容包括测试目标.测试环境.输入数据.测试步骤.预期结果.测试脚本等,并形成文档. 每个具体测试用例都将包括下列 ...

  7. Testing - 测试基础 - 阶段

    估算 测试对软件工作量的估算的准确性 测试评估软件系统的状况的准确性 关注点: 不准确的估算 不适当的开发过程 不真实的状态报告 如何知道对工作量的估算是正确的 估算工作量的工具很容易出错 对软件工作 ...

  8. Testing - 测试基础 - 理解

    理解 目的 测试就是要找到关键信息,有关项目和产品的关键决策都是根据这些信息做出. 对产品质量做出总体评估. 找出并报告团队所有可能会对产品价值产生消极影响的问题(但并不意味着能发现所有问题). 重心 ...

  9. Testing - 测试基础 - 模型

    珠玉在前,不再赘言. 软件测试模型 软件测试模型汇总

随机推荐

  1. java的 new 关键字

    java的new关键字想必大家都知道这是实例化一个对象.没错,也是为新对象分配内存空间. 比如new MyDate(22,7,1964)这样一个案例,他的完成需要四部: 一.为新对象分配内存空间,将M ...

  2. JS设计模式初探

    目的:设计模式众多,尝试用博客记录下学到的不同设计模式的优劣,方便以后查阅. 前言:半年前看高程的时候看到设计模式这章,云里雾里,不是看不明白,而是不明白为啥要如此麻烦只为创建一个对象.直到最近完成了 ...

  3. c# gridview数据列表中NamingContainer容器的用法

    当在前台我们绑定了一个linkbutton型的按钮,并触发了onserverclick="delBook_Server"的服务端事件,前台代码如下: <asp:Templat ...

  4. java 调用 C# 类库搞定,三步即可,可以调用任何类及方法,很简单,非常爽啊

    java 调用 C# 类库搞定,三步即可,可以调用任何类及方法,很简单,非常爽啊 java 调用 C# 类库搞定,可以调用任何类及方法,很简单,非常爽啊 总体分三步走: 一.准备一个 C# 类库 (d ...

  5. Actor的原理

    先从著名的c10k问题谈起.有一个叫Dan Kegel的人在网上(http://www.kegel.com/c10k.html)提出:现在的硬件应该能够让一台机器支持10000个并发的client.然 ...

  6. linux 2.6 驱动笔记(三)

    驱动的并发与应用的并发实现一样,以信号量为例,修改基本字符驱动代码如下: 1. 增加sem定义 struct globalmem_dev{ struct cdev cdev; /*linux 2.6 ...

  7. Javascript事件模型系列(四)我所理解的javascript自定义事件

    被我拖延了将近一个月的javascript事件模型系列终于迎来了第四篇,也是我计划中的最后一篇,说来太惭愧了,本来计划一到两个星期写完的,谁知中间遇到了很多事情,公司的个人的,搞的自己心烦意乱浮躁了一 ...

  8. redis使用心得

    原创文章转载请注明出处:@协思, http://zeeman.cnblogs.com   redis是继memcached之后兴起的内存数据库,作者非常崇尚简洁高效,力求以最简单的方式最高效的解决问题 ...

  9. [stm32] SIM808模块之发短信\GPS\TCP\HTTP研究

    SIM8008是四频模块,全球可用.含有TTL电平接口等接口,能够实现发短信.打电话.GPRS传输数据.GPS等功能.[正版资料请找beautifulzzzz·博客园] 一些细节: >> ...

  10. C#开源磁盘/内存缓存引擎

    前言 昨天写了个 <基于STSdb和fastJson的磁盘/内存缓存>,大家可以先看看.下午用到业务系统时候,觉得可以改进一下,昨晚想了一个晚上,刚才重新实现一下. 更新 1. 增加了对批 ...