探索性测试ET(exploratory)是和ST(script based test)相比较而言的.笼统地说,ST就是有确定的步骤和预期目标的测试.

探索性测试可以说是一种测试思维。它没有很多实际的测试方法、技术和工具,但是却是所有测试人员都应该掌握的一种测试思维方式。探索性强调测试人员的主观能动性,抛弃繁杂的测试计划和测试用例设计过程,强调在碰到问题时及时改变测试策略。
        对探索性测试最直白的定义是:同时设计测试和执行测试。探索性测试有时候会与即兴测试(ad hoc testing)混淆。即兴测试通常是指临时准备的、即席的Bug搜索测试过程。从定义可以看出,谁都可以做即兴测试。由Cem Kaner提出的探索性测试,相比即兴测试是一种精致的、有思想的过程。
        在对测试对象进行测试的同时学习测试对象并设计测试,在测试过程中运用获得的关于测试对象的信息设计新的更好的测试。这个有趣的过程如下图所示。

探索性测试

探索性测试强调测试设计和测试执行的同时性,这是相对于传统软件测试过程中严格的“先设计,后执行”来说的。测试人员通过测试来不断学习被测系统,同时把学习到的关于软件系统的更多信息通过综合的整理和分析,创造出更多的关于测试的主意。
1.探索性测试的基本过程
        探索性测试的基本过程包括如下:
        识别软件系统的目的;
        识别软件系统提供的功能;
        识别软件系统潜在的不稳定的区域;
        在探索软件系统的过程中记录关于软件的信息和问题;
        创建一个测试纲要,使用它来执行测试。
        注意:上面的过程是一个循环的过程,并且没有很严格的执行顺序,完全可以先创建测试纲要,执行测试,然后在测试中学习软件系统;也可以先探索软件系统的各个区域,然后再列出需要测试的要点。

探索性测试强调创新的测试思维,在测试过程中不断地出现许多关于测试的新想法,因此就像一把叉,下图就是一个所谓的“探索叉”(exploratory forks)。
        探索性测试强调测试过程中要有更多的发散思维,这也是与传统测试方式的最大区别。传统测试方式强调设计完善的测试用例,测试人员严格按测试用例执行测试,这多少限制了测试人员的测试思维,测试人员往往缺乏主观能动性。

探索叉

探索性测试尤其适合于那些需求不是很明确的测试任务,或者是一名刚刚接手一项新的测试任务的测试人员使用。
2.探索性测试的管理
        探索性测试是一种不是很严谨的测试方法,缺乏可管理性和度量性。因此,James Bach提出了基于任务的测试管理(Session-Based Test Management)。Session-Based测试管理是用于度量和管理探索性测试的一种方法。
        测试人员在采用探索性测试方法的测试过程中,应该及时记录下所谓的“测试故事”,把所有测试中学习到的关于软件系统的知识要点、问题和疑问、测试的主意、进行了怎样的测试等相关信息记录下来,然后周期性地与测试组长或其他测试人员基于记录的“测试故事”展开简短的讨论。
        测试组长基于这些记录的结果来判断测试的充分性,测试人员通过讨论可以共享学习到的软件系统相关的信息,交流测试的主意,总结测试的经验,激发测试人员拿出更多的测试主意,从而指导下一次测试任务的执行。
        在这种方式的测试管理中,测试组长就像一名教练,但是需要参与到测试的实际任务中,指导测试人员测试的方向和重点,提供更多的关于软件系统相关的信息给测试人员,授予测试人员更多的测试技术。

说明:未必需要完全采用探索性测试的方法,但是可把探索性测试方式作为传统测试方式的补充,在每一项测试后留下一定的时间给测试人员做探索性的测试,以弥补相对刻板的传统测试方式的不足。应该更多地采用探索性测试的思维方式,应用在日常测试工作中。

对于一个ET,需要如下的能力:

测试设计:一个优秀的测试设计师,一般有如下几个能力:首先是分析这个产品;评估产品的所有的风险;使用现有的工具去分析或记录;测试设计技术的熟练使用。

  细心观察:一个优秀的ET测试人员必须比一般的人甚至是做ST的测试人员更具有细心观察细节的能力。ET测试人员必须去观察一切看似不正常或有疑问的地方,他还要能仔细的在推论和其他一些的假设中辨别出真理何在。

  批判性思考:一个优秀的ET测试人员能够快速的评审和解释他们的思考逻辑,并能在独立思考中需找错误。这在重现bug的时候非常重要。

  丰富的想法:一个优秀的ET测试人员能够比一般人产生更多且更好的想法。但通过什么来产生这么多且好的idea呢?这个也是ET的核心了,目前ET的牛人们创立了一个叫Heuristics的方法,这个方法比较抽象且实践过程在国内几乎空白,后续讨论下。

  丰富的资源:一个优秀的ET测试人员能够构建一个集测试工具,信息资源,测试数据,同仁的一个储存室。这样在测试的时候,可以很快的应用这些资源。

要到达这些要求,测试人员需要做这些努力

1、ET要有丰富的测试经验,掌握丰富的bug库,也经产分析bug产生原因

2、对于风险的知识,需要具有参与各种类型的产品测试经验,并经常总结分析测试效果和bug类型

3、丰富的测试工具、产品知识

探索性测试一个优秀的实践是快递法

快递测试法,是从ET学习中了解到的一种测试方法,顾名思义就是数据类似于那些通过联邦快递系统,在这个星球上被不断移动的包裹一样,在软件中也是不断的流动。数据从被输入后就开始了它的生命周期,先被存储在内部变量和数据结构中,然后再计算中被频繁操作、修改和使用,最后,这个数据作为输出被“递送”给用户或目的地。

在这个测试法中,测试人员必须关注于数据。应该确认那些被存储起来的输入数据并“跟随”它们走遍软件。例如,在购物网站输入一个地址后,它会显示在哪里?哪些特性会用到该地址?如果它被用于账单地址,要确保该特性被测试到了。如果它被用作发货地址,也要确保测试中使用了相应的特性。如果允许更新地址,那就应该修改它的值。该地址是否会被打印出来,是否在内部数据中被删除过,或者需要进一步处理?试着找到每个和数据有接触的软件特性,就像联邦快递处理他们的包裹一样,测试人员也应该参与数据声明周期的每个阶段。

这虽然是一种测试方法,我们的测试不会仅局限与这一种方法,但是我自己感觉在实际中,我们很多时候借助于这种思想,我们的测试会更简单,拿 SCM工具(主要是从需求提交,到开发、测试环境的自动部署、版本管理、发布,客户更新等一些列流程半自动完成的工具,可以理解为持续交付工具)来说说我是怎么做的,我们了解该工具的整体业务如下:
1、输入初始话的数据
2、点击“开始初始化”会先做一些校验,如果不通过,则会弹出提示(我们可以记录下有那些校验,这样方便后面针对每一种校验来验证)
3、校验通过后,会首先到数据库的Task表中插入一条记录(我们可以了解生成记录的规则,然后细化成测试点)
4、记录插入成功后,分发服务会将该记录作为任务分发给Web服务、测试DB服务、开发DB服务 和TFS服务,并且在日志中记录分发的情况(我们可以考虑分发成功,或不成功的情况,是否做日志检查也可以考虑)
5、然后各个服务接到任务后,先在日志中做一个接受成功的记录,然后根据要求开始初始化(我们可以罗列出各个服务初始化的一个清单,作为检查点,比如TFS端先到给定的路径去获取源代码,然后解压后TFS中创建项目和分支,然后给项目赋予权限,添加人员,最后做相关设置,完成后在日志中有记录,并返回一个状态到数据库中)
6、各服务初始化完成后,会返回一个状态到数据库中,并更新数据库记录(我们可以考了是否能成功返回,返回更改那个字段)

7、web界面上可以查看到结果,当然中途初始化中也是可以查看结果的;

按照上面的快递思想,我们能很快获取大部分重要的测试点,也可以分析出一些设计的遗漏或者不合理的地方,并将这些分析的测试点记录下来 ,做成checklist或者写成脑图,都是不错的选择,虽然说ET没有强调测试用例,但是我们能够结合ET的思想,有一份测试cheklist的指引,将是不错的选择,这让我以前一直想根据开发实现的流程图来设计用例,应该是一个道理,我想这种测试应该就是所谓的灰盒测试吧;

探索性测试ET(Exploratory Test)相关推荐

  1. 转载关河兄的一篇文章《探索性测试(Exploratory Testing)概述》

    2006年07月15日 15:05:00 作者:关河 <探索性测试(Exploratory Testing)概述> 在敏捷测试(Agile testing)中,探索性测试是作为一个重要组成 ...

  2. 探索性测试与脚本测试:谁赢了?

    目录 Context-based (Exploratory Testing) vs Scripted Testing Teams What does it mean?(这意味着什么?) Conclus ...

  3. 什么是软件测试中的探索性测试(完整指南)(二)

    目录 Session-based Exploratory Testing基于会话的探索性测试 Pair Based Exploratory Testing基于结对的探索性测试 Exploratory ...

  4. unity未探索区域迷雾_Unity的探索性测试

    unity未探索区域迷雾 Hello everybody, my name is Claus Petersen and I am a fairly recent addition to the Uni ...

  5. R语言探索性因子分析(Exploratory factor analysis)

    R语言探索性因子分析(Exploratory factor analysis) 因子分析的方法一般有两种:一是探索性因子分析(EFA):二是验证性因子分析(CFA).探索性因子分析有助于建立新的假设. ...

  6. 初探团队基于session的探索性测试

    如果你是一名测试人员,那么不管你对探索性测试的了解是多是少,我肯定你一定用过探索性测试的方法.想想看,你是否曾经这样测试过?不仅仅按照测试案例或者脚本上写什么,就完全使用那一套相同的数据.一模一样的流 ...

  7. 不可替代的测试人:一文解释探索性测试是什么

    剧本式测试 随着软件技术的发展,软件开发过程中对软件测试的需求越来越庞大,从原来单纯的寻找软件缺陷,到后来的学习软件.挖掘软件中存在的缺陷.评估软件可用性.性能等等方面,软件测试发挥着重要作用. 考虑 ...

  8. 交叉测试、探索性测试的概念、价值、实践

    何为交叉测试 1.交叉测试按字面意思理解就是把测试人员所测试的模块交换测试.比如A本轮执行的M模块,B执行的N模块, 在下一次测试时 A执行N模块, B执行M模块. 交叉测试有哪些意义 1.每一个测试 ...

  9. 【测试理论】如何做好探索性测试—基础篇

    前不久国庆档上映的一部电影<登山者>,相信大家都已经看过了,在剧中,中国登山队那种不畏困难,勇于探索未知领域的精神着实让人敬佩,特别是最后一刻吴京饰演的方五洲带领队员,终于再次登顶.如果单 ...

  10. 探索性测试的艺术(译)

    摘要: 有些人认为探索性测试是一项低成本思维的任务,测试人员只是浏览应用程序,看看会出现什么.然而我们不应该忽视这样做,因为有时它确实揭示了一些有趣的错误,但是测试人员在探索应用程序时可以遵循一些技术 ...

最新文章

  1. 判断数组里面的下标是否等于一个字符串
  2. 有了Gradle,还会选Maven吗?
  3. React Native学习之 ListView 的简单使用
  4. 追求极致的AI·OS——AI·OS引擎平台
  5. 067 Add Binary 二进制求和
  6. Spring-解决请求中文乱码问题
  7. 第四范式陈雨强:做机器学习平台天然就是新基建丨新基建50人
  8. Cloud for Customer UI toolbar里按钮的渲染逻辑
  9. java反射随意值_Java反射笔记
  10. 如何利用录井/测井数据进行学习?
  11. 制作自己的linux内核,打造属于你自己的Linux系统
  12. java list转数组_java list 转数组
  13. SpringMVC 框架系列之组件概述与配置详解
  14. 开源审计的最佳时机是什么时候?
  15. python网络编程难点_python网络编程
  16. MSDN 离线帮助文档 官网极速下载直达
  17. 2013年上半年CSDN精华0分下载资源
  18. 无法导入reg:指定的文件不是注册脚本——兼了解文本格式问题
  19. Windows消息前缀
  20. python爬虫之使用urllib模块实现有道翻译功能

热门文章

  1. SDD-FIQA基于人脸相似度分布距离的无监督质量评估方法
  2. 原来PDF解密有这么多方法,你知道几个?
  3. 怎样使用BAT脚本实现自动按键盘的某个键
  4. TNF1EGS4 OSN1800全新四路交换式千兆以太网处理板
  5. ppt背景图片php,ppt模板ppt背景图片 淡雅风格打包下载 (ppt如何打包)
  6. 自定义elementUI select下拉框样式
  7. 如何在自定义Filter中优雅的实现静态资源放行
  8. 2022年信息安全工程师考试知识点:Web安全
  9. 爱快路由器下水星(Mercury)无线管理器AC跨三层发现AP
  10. 8位数码管静态显示c语言,数码管静态显示介绍_8位数码管静态显示程序解析