定义
探索性测试(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 - 软件测试知识梳理 - 相关词汇

    测试策略 描述测试工程的总体方法和目标:根据测试需求,描述在什么测试阶,依据什么测试要素和目标,进行什么种类的测试,使用什么样的测试方法和工具. 测试策略的制定主要包含如下内容: 确定测试过程要使用的 ...

  4. Testing - 软件测试知识梳理 - 测试分类

    参考信息 软件测试分类 经典软件测试技术分类 软件测试方法汇总 简洁分类 对软件内部结构的深入程度 黑盒测试:又叫功能测试.数据驱动测试或基于需求规格说明书的功能测试. 该测试类别注重于测试软件的功能 ...

  5. Testing - 软件测试知识梳理 - 测试模型

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

  6. Testing - 软件测试知识梳理 - 测试流程

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

  7. Testing - 软件测试知识梳理 - 软件性能测试

    软件性能测试的基本概念 软件的性能是软件的一种非功能特性,它关注的不是软件是否能够完成特定的功能,而是软件在完成该功能时展示出来的及时性. 软件性能的指标 响应时间:是指系统对请求作出响应的时间,并且 ...

  8. Testing - 软件测试知识梳理 - 测试阶段

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

  9. Testing - 软件测试知识梳理 - 测试方法

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

随机推荐

  1. iosApp上传app遇到的问题

    昨天上传了两个app,是由原来的app改版之后产生了新的app上传的,出现了几个问题现在记录一下. 1.证书配置问题:报错如下 解决办法:选择一个team即可.选择完team之后还是报错: 解决方法: ...

  2. 浏览器useragent

    var ua = window.navigator.userAgent; edge :Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537 ...

  3. java学习笔记(八):继承、extends、super、this、final关键字

    继承解决代码重用的问题,方便管理和维护代码. 继承 子类拥有父类非private的属性,方法. 子类可以拥有自己的属性和方法,即子类可以对父类进行扩展. 子类可以用自己的方式实现父类的方法. Java ...

  4. db2常见命令

    增加db2top命令的refresh间隔,默认值为2秒,下面的命令就可以每10秒刷新一次: $ db2top -i 10 -d sample 数据库本身太繁忙(dynamic SQL过多).建议增加 ...

  5. create react app遇到的问题

    我现在想的是吧 static 资源和动态 api 来分开处理, static 资源开启 nginx 服务器,api 请求由 express 完成, 现在的问题是开发的时候 proxy 设定将所有的请求 ...

  6. redis5 集群迁移方案

    Redis5 集群迁移方案 一.KEY优化 1.按原来要求进行优化与大KEY分拆. 二.现Redis 集群缩容(对业务无影响) 主节点按要求合并至3个主节点. 业务配置为3主4从 删除没有槽的主节点与 ...

  7. 536. Construct Binary Tree from String 从括号字符串中构建二叉树

    [抄题]: You need to construct a binary tree from a string consisting of parenthesis and integers. The ...

  8. 491. Increasing Subsequences增长型序列

    [抄题]: Given an integer array, your task is to find all the different possible increasing subsequence ...

  9. 浏览器DOM事件触发

    除用户人为交互触发事件外,用js脚本触发事件的一般流程为 创建事件 var e = Event('event_name', {key: value, ...}) 分发事件到 event.target ...

  10. Java17-java语法基础——泛型

    Java18-java语法基础——泛型 一.泛型概念和作用 1.泛型概念: 泛型是JavaSE1.5的新特性,泛型的本质是参数化类型,也就是说,所操作的数据类型被指定为一个参数.这种参数类型可以用在类 ...