最近看了James Bach新发的一篇文章,名为Exploratory Testing 3.0,文章链接:http://www.satisfice.com/blog/archives/1509
这篇文章介绍了探索式测试的发展历程,现翻译如下(非全文逐字翻译,仅翻译个人认为关键的部分)
By James Bach and Michael Bolton
在软件测试的早期阶段,没有人区分探索测试和脚本测试。Jerry Weinberg 在他1961年出版的《计算机编程基础》一书有关测试的章节中,描述了测试的本质是探索,并且表达了他对正在被形式化的测试的担忧。他写到:
“It is, of course, difficult to have the machine check how well the program matches the intent of the programmer without giving a great deal of information about that intent. If we had some simple way of presenting that kind of information to the machine for checking, we might just as well have the machine do the coding. Let us not forget that complex logical operations occur through a combination of simple instructions executed by the computer and not by the computer logically deducing or inferring what is desired.”
“在没有大量关于程序员意图的信息的情况下,用机器检查程序是否符合程序员的意图是很困难的。如果我们能用一些简单的方法表达此类信息,我们也能直接让机器编程了。不要忘记计算机实现复杂的逻辑操作是通过执行简单指令的组合,而不是通过计算机的逻辑推导来实现的。”
Jerry明白人和机器的差别。但是后来的formalizers(形式主义者?)误导了大家。formalizers-正式开始于1972年出版的第一本测试书籍 - Program Test Method (《程序测试方法》)。这本书关注的是测试的形式而非本质。形式指的是单词,图片,字符串,文件,表格,流程图和其他显式建模,他们是我们能够看,读,指向,从一个地方移到另一个地方,计数,存储,检索的东西。但是测试不是任何没有生命的东西。测试,是人们利用这些没有生命的东西思考和活动的结晶。基于这些没有生命的东西的测试没有人就像先进的医疗诊所没有医生和护士:在最坏的情况下,对无辜的正试图利用他们的人是危险的。
ET 1.0 反叛(潜龙勿用)
基于脚本和不基于脚本的测试是不一样的。首先,我们来说一说不基于脚本的测试关于质量的理解。当我们做探索式测试,我们发现更多更好的缺陷。我们觉得它看上去做的更好,但没有发现为什么会这样。因此,第一阶段的探索式测试关注于逃离脚本测试的紧箍咒,制造空间来做“更好的测试”。我们面对的质疑是:Ad hoc不可控和不可管理;不应该这样做。” 我们反对这种想法,在这种假设下探索式测试是一种特殊的测试活动。探索式测试的拥护者把它作为一项技术对待,并提倡使用这项技术。“丢掉脚本,关注产品!和产品互动!才能发现缺陷!”
大多数人仍然人为探索式测试是一项技术和不同于其他测试的测试活动。这样的描述是错误的。这是一个好的开始,但一直这样就会进入死胡同。直到今天很多人甚至写探索式测试书籍的人,貌似还在这样认为。
ET1.0 在1995年开始退出历史舞台。那时只有少数人在尝试探索式测试,尽管所有测试人员都在无意识的或非正式的使用它。然而这些少数人,还不足以使探索式测试走出黑暗。
ET 1.5 展露头角(见龙在田)
90年代末期,北美的一个小的测试社区(最后成长为世界性的上下文驱动测试社区)也在尝试理解和思考有助于测试工作的技能和流程。他们有两条主线。一个是Jerry Weinberg的以人为本的软件工程方法,他结合了系统性思维和家庭心理学。另一个是Cem Kaner拥护的认知学和Popperian批判理性主义。这项工作很快就引起了我们对脚本测试和探索式测试的反思。这是因为我们对测试本身的深层次理解是与时俱进的。
1995年James加入 ST 实验室,他第一个致力于发展软件测试的视觉和方法。这是他和Cem15年合作的开始,也是快速软件测试方法论的开始。第一个重大创新是启发式引导,这是一种实用的,加入了实时测试人员思维,具有全面综合模型的测试过程。列出测试技术和文档模版曾经花费了很多时间。随着我们为一般情况下的软件测试开发了词汇表和认知模型,我们开始看到探索式测试的新曙光。我们开始比较和对比脚本测试和探索式测试的重要组成以及他们之间的联系,而不是将他们视为感觉上不同的两种活动而已。
1996年James创建了第一个测试课程叫“Exploratory Testing”。他已经暴漏了设计模式的思想并试图将这些加到课程里。他定义了测试能力。
1999年James被委任定义微软标准ET流程。这与标准 ad hoc流程看上去是矛盾的。然而这个冲突通过James和Cem的一系列建设性的辩论得到了解决。这些辩论引导我们进入了ET 2.0。
直到2000年,测试界的大多数人开始听说探索式测试的一些东西。我们终于开始了让这个世界更好,更安全的测试旅程。
ET 2.0 集成(惑龙在渊)
ET 2.0经历了很长时间。我们不再称探索式测试为一项技术,而是作为一种适用于技术的途径(Cem称之为一种“style”)。现在我们有丰富的技能和元素测试的思想。它已不再是某些“创造性和神秘”的行为,就像某些人与生俱来就知道如何使用“直觉”一样。我们已经有特定的机构,模型和流程,所以我们觉得可以单独将探索式测试作为一种有效的测试方法分离出来。我们在90年代称之为探索式测试,现在我们称之为“自由式探索式测试”。
直到2006年,我们给出了探索式测试的定义:
“a style of testing that emphasizes the freedom and responsibility of the individual tester to continually optimize the quality of his work by treating test design, test execution, test result interpretation, and learning as mutually supporting activities that continue in parallel throughout the course of the project.”
“强调独立测试人员的自由和责任,依靠测试设计,测试执行,测试结果展示和持续学习的贯穿整个项目过程的交互式活动,持续提升测试人员的工作质量。”
探索可以意味着很多东西:搜索空间,赋予创造性,做前人没做过的事情,自发行动等等。我们意识到大多数不同概念的探索已经成为了测试的核心。探索带来了什么,与脚本化有什么不同。一言以蔽之:自我管理。
探索式测试的定义在后来James和Michael教学和快速软件测试咨询中日趋明显。你可以在没有任何废纸的情况下进行脚本测试(脚本测试也没有要求你逐字遵循文档)。你可以在没有任何事先计划的情况下进行脚本测试(有人会在适当的时候告诉你该怎么做)。你也可以做一个即兴的脚本测试(有人会给你脚本,你也可以自己写一个)。。。。。脚本测试的本质是:测试不是由测试人员控制的,而是由其他机构或流程掌控的。我们花了很多年才弄明白这个简单的至关重要的道理。
2009年Michael指出了测试和验证的区别。测试不能被自动化,而验证可以完全自动化。验证嵌入在测试中。首先,James表示反对,因为测试已经有定义了,这样的区分是没有必要的。James认为验证只是简单的不需要动脑的测试。我们逐渐认识到验证和测试比动脑和不动脑更好的描述了我们的意图。因为不动脑听上去就是愚蠢的,听上去像是我们在谴责不动脑的测试。
ET 3.0 标准化(飞龙在天)
ET 3.0作为一个术语有点矛盾,因为我们正在弃用探索式测试这个术语,取而代之的是快速软件测试的术语。为什么呢?因为我们现在将所有的测试定位为探索。
我们现在对测试的定义是这样的:
“Testing is the process of evaluating a product by learning about it through exploration and experimentation, which includes: questioning, study, modeling, observation and inference, output checking, etc.”
“测试是通过探索和实验评估产品的过程,这个过程包括:质疑,学习,建模,观察,推理,结果验证等等。”
在定义探索式测试过程中,脚本测试变成了一个过客,变成了一个可能有用却又陌生的元素,一个在特定情景下的有趣的讨论和应用策略。一个优秀的测试人员不应轻视脚本测试,就像一个伐木工人不应被重型机械轻视一样。这些东西可以帮助也可以毁灭你,不应忽略它们。
你正在做测试吗?那么你准备好做探索式测试了吗?你正在做脚本测试吗?如果你负责地在做脚本测试,你也正在做带脚本的探索式测试(也许也带着验证)。如果你仅仅只在做脚本测试,那么你正在做动机不明的验证。我们会说你不是真正在做测试。你只是一台机器,而不是负责人的测试人员。
ET 3.0是脚本测试技术的降级,但是确实探索性测试的飞跃。
如需转载,请注明出处,这是对他人劳动成果的尊重~
- 探索式软件测试—Exploratory Software Testing
最近找到去年上半年看过一本关于测试方面书籍的总结笔记,一直放在我的个人U盘里,当时是用Xmind记录的,现在重新整理下分享给大家了! James A.Whittaker [美] 詹姆斯·惠特克(软件测 ...
- Testing - 软件测试知识梳理 - 探索性测试
定义 探索性测试(Exploratory Testing)是一种自由的软件测试风格,强调测试人员同时展开测试学习,测试设计,测试执行和测试结果评估等活动,以持续优化测试工作. 其特征有:即兴发挥,快速 ...
- 【SpringBoot】SpringBoot2.0响应式编程
========================15.高级篇幅之SpringBoot2.0响应式编程 ================================ 1.SprinBoot2.x响应 ...
- Mysql 8.0 新特性测试
Mysql 8.0 新特性测试 Role MySQL8.0版本添加了role特性,role是一种逻辑概念是权限的集合,可以将一个或以上的权限赋予给role,再将role赋给user.Oracle,Po ...
- thinkPHP -01- thinkPHP5.0 安装与测试
thinkPHP -01- thinkPHP5.0 安装与测试 1.thinkPHP 5 官网下载地址:http://www.thinkphp.cn/down.html 2.打开 Wampserver ...
- JMeter4.0以上 分布式测试报错 "server failed start Listen failed on port"
使用JMeter4.0做分布式测试的是否,我的电脑作为肉鸡(执行机),双击jmeter-server.bat后显示失败 Found ApacheJMeter_core.jarUsing local p ...
- [sqlmap 源码阅读] heuristicCheckSqlInjection 探索式注入
上面是探索式注入时大致调用过程,注入 PAYLOAD 1.)("'(.((. , 数据库报错,通过报错信息获取网站数据库类型(kb.dbms),并将保存报错(lasterrorpage). ...
- vue2.0与3.0响应式原理机制
vue2.0响应式原理 - defineProperty 这个原理老生常谈了,就是拦截对象,给对象的属性增加set 和 get方法,因为核心是defineProperty所以还需要对数组的方法进行拦截 ...
- Vue 2.0 与 Vue 3.0 响应式原理比较
Vue 2.0 的响应式是基于Object.defineProperty实现的 当你把一个普通的 JavaScript 对象传入 Vue 实例作为 data 选项,Vue 将遍历此对象所有的 prop ...
随机推荐
- [CodeForces-1225B] TV Subscriptions 【贪心】【尺取法】
[CodeForces-1225B] TV Subscriptions [贪心][尺取法] 标签: 题解 codeforces题解 尺取法 题目描述 Time limit 2000 ms Memory ...
- VUE中 $on, $emit, v-on三者关系
VUE中 $on, $emit, v-on三者关系 每个vue实例都实现了事件借口 使用$on(eventName)监听事件 使用$emit(eventName)触发事件 若把vue看成家庭(相当于一 ...
- Css 设置固定表格头部,内容可滚动
效果图:
- 手把手教你制作Jlink-OB调试器(含原理图、PCB、外壳、固件)
前言 好久没更新博客和公众号了,感谢大家还没取关哈,好吧,我承认是我太懒了,今天分享一个福利! 趁着前段时间嘉立创和捷配打价格战,一天之内,多次降价,看着真是热闹.捷配降到最低3元一款,而嘉立创降到最 ...
- 【HNOI 2017】礼物
Problem Description 我的室友最近喜欢上了一个可爱的小女生.马上就要到她的生日了,他决定买一对情侣手环,一个留给自己,一个送给她.每个手环上各有 \(n\) 个装饰物,并且每个装饰物 ...
- 【nodejs原理&源码赏析(4)】深度剖析cluster模块源码与node.js多进程(上)
目录 一. 概述 二. 线程与进程 三. cluster模块源码解析 3.1 起步 3.2 入口 3.3 主进程模块master.js 3.4 子进程模块child.js 四. 小结 示例代码托管在: ...
- ASP.NET MVC教程二:ASP.NET MVC应用程序结构详解
在上一篇文章中,讲解了一些MVC的概念,并且创建了第一个ASP.NET MVC项目,这篇文章将讲解ASP.NET MVC程序中的代码解构,新创建的MVC应用程序解构如下图所示: 一.App_Data ...
- 我来告诉你:VS2019开发ASP.NET Core 3.0 Web项目,修改视图后,刷新浏览器看不到修改后的效果怎么处理
VisualStudio2019下一个2.2另一个3.0页面修改如下,但是3.0刷新没有任何变化,难道VS以后不能做前端开发了?大家可能没有看官方文档 根据文章所说你需要: 1.安装 Microsof ...
- SimpleDateFormat类简单学习
一.简介 SimpleDateFormat是一个格式化和解析日期的具体类,其可以将时间转化为指定格式的日期字符串,也可以将具有格式的日期字符串转换为时间. formatting (date → tex ...
- [爬虫]一个易用的IP代理池
一个易用的IP代理池 - stand 写爬虫时常常会遇到各种反爬虫手段, 封 IP 就是比较常见的反爬策略 遇到这种情况就需要用到代理 IP, 好用的代理通常需要花钱买, 而免费的代理经常容易失效, ...