定义

探索性测试(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. Revert R12.1.3 Homepage Layout to Link Style as in R12.1.1 or 11i

    https://blogs.oracle.com/ptian/entry/revert_r12_1_3_homepage Oracle EBS 12.1.3主页的展示方式不太习惯,12.1.3为了展示 ...

  2. C++混合编程之idlcpp教程Python篇(5)

    上一篇在这  C++混合编程之idlcpp教程Python篇(4) 第一篇在这 C++混合编程之idlcpp教程(一) 与前面的工程相似,工程PythonTutorial3中,同样加入了三个文件:Py ...

  3. vs2010 和vs2012的区别 副标题--Loaded事件走两次

    我上一遍博文没有通过首页显示!这边就简短的描述一下问题,希望大拿们有遇到类似问题或者知道原因的回答一下下!!! 最终的问题是Loaded事件走两次,具体可以看我上一篇对问题的描述. 在目标框架同样都是 ...

  4. C# Retry重试操作解决方案(附源码)

    一.前言 (1)对于Thread的Abort方法,如果线程当前正在执行的是一段非托管代码,那么CLR就不会抛出ThreadAbortException,只有当代码继续回到CLR中时,才会引发Threa ...

  5. Swift编程语言(中文版)官方手册翻译(进度8.8%)

    翻译着玩,进度会比较慢. 等不及的可以看CocoaChina翻译小组,他们正在组织翻译,而且人手众多,相信会提前很多完成翻译. 原文可以在iTunes免费下载 目前进度 7 JUN 2014: 8.8 ...

  6. diff详解,读懂diff结果

    1.概述 本文将要讨论的是diff命令,diff用来比较两个文件.当然文件比较的工具很多,windows系统下面就有不错的工具可以使用,例如常用的Beyond Compare,WinMerge都是图形 ...

  7. Homework_4 四则运算 - C#版

    题目要求 :http://www.cnblogs.com/gdfhp/p/5311937.html 结对同伴: 姓名:胡仕辉   学号:130201225   博客地址:http://www.cnbl ...

  8. Java8的新特性以及与C#的比较

    函数式接口 VS 委托 在C中,可以使用函数指针来存储函数的入口,从而使得函数可以像变量一样赋值.传递和存储,使得函数的调用变得十分灵活,是实现函数回调的基础.然而函数指针不存在函数的签名信息,甚至可 ...

  9. Linux time命令

    说明:喜欢写小程序的人都特别注重自己程序的执行效率,那么在Linux上,就有一个time的命令,用于测量命令的运行时间,还可以测量内存.I/O等的使用情况. 一个程序在运行时使用的系统资源通常包括CP ...

  10. 每天一个linux命令(58):telnet命令

    telnet命令通常用来远程登录.telnet程序是基于TELNET协议的远程登录客户端程序.Telnet协议是TCP/IP协议族中的一员,是Internet远程登陆服务的标准协议和主要方式.它为用户 ...