原来准备在上海MPD上和大家分享以前在新浪微博(查看原文:http://t.cn/zOSXmst)提到的 神奇的曲线:探索式测试与基于脚本的测试之关系,结果上周接到培训任务,去成都做了一场培训,和学员做了简单分享。
探索式测试(Exploratory Test)经常被简称为ET,由 Cem Kaner 1983年建立的测试概念,这几年随着敏捷方法而大行其道。敏捷方法的迭代频率很快,每个迭代时间很短,自然想到如何减少文字工作,避免写测试用例,ET自然是一个很好的选择。ET简单理解为测试设计与执行同步进行,如果想了解更多内涵,可以参考:
不过,我们以前熟悉测试中的错误猜测法、Ad hoc测试等方法,不管Cem Kaner承认不承认,ET概念很有可能来源于这些先前的概念,在这些概念的基础上丰富它,试图给ET建立一个比较系统的体系,例如引入基于上下文驱动(Context-driven)、基于session的测试等。想当初,我们用错误猜测法、Ad hoc测试方法时,一定也会考虑业务或功能的上下文关系,没有上下文还做什么测试?也会考虑某些场景,更多会考虑一些特别的场景,如人们常说的corner case,right? 当然,ET和错误猜测法、Ad hoc测试是有区别的,可以参考下面两篇文章:
回到正题,谈谈探索式测试与基于脚本的测试(Script-base Test 或 Scripted Testing,ST)之关系,不论是在传统测试流程还是在敏捷测试中,这两者是相辅相成的,谁也不能代替谁,正如James Bach也谈到“Balancing Exploratory Testing with Scripted Testing,... two approaches to testing are fully compatible” 。而且在不同的场景有各自的优势,例如:
-
从发现问题来看,探索式测试效率会更高些,甚至高得多;
-
从测试乐趣看,也会优先选择探索式测试;
-
在敏捷中新功能测试会选择探索式测试;
-
但探索式测试不易实现自动化,所以自动化测试先需要脚本,然后执行;
- 回归测试比较确定,需要不断运行,自然会选择基于脚本的测试(ST);
- 从产品线来看,开发周期长,复用会大大提高效率,ST也具有很大优势。
所以,在一个项目中,经常是同时采用这两种方法——ST和ET,而且不同的组织环境或项目环境,随时间的投入是不一样的,这就是那两条神奇的曲线:
当初我没有在线上标ST和ET,就是因为每根线都可能是ET或ST,例如:
- 如果自动化测试水平低或没有自动化测试,就需要在前期有更多的ET,在发现产品问题的同时学习产品、更深地理解产品,并通过发现问题来完善测试用例。而为了降低产品质量风险,后期需要进行更系统的测试,特别是要完成大量回归测试、对产品质量有一个完整的评估,需要执行ST。由于自动化水平低,这时人力都投在ST上,就没有经历做ET,而且也不必要。
- 如果自动化水平高,前期需要开发脚本,ST的投入自然大。但自动化执行时,虽然会运行大量用例,但解放了生产力,测试人员有更多时间投入ET。
实际环境所处的场景会更多,不管怎样,先要清楚自己测试工作中有什么问题,然后采用合适的方法来解决问题。或者说,要清楚自己的目标,是让团队获得激情还是让公司处在稳定的不败之地、还是为了尽快发现Bug还是提高产品的质量,方法何时使用、如何使用、谁使用等都可能不同。即先问Why?What?,然后才考虑How、Who、Where?
分享到:
相关推荐
- **PTGM 模型**(性能测试通用模型):包括测试准备、工具引入、测试计划制定、测试设计与开发、测试执行与管理、测试结果分析等环节。 ### 第2章 性能测试的应用领域 #### 2.1 性能测试方法分类 - **性能测试**...
Scheme是一种基于Lisp家族的函数式编程语言,以其简洁的语法和强大的表达能力而受到程序员的喜爱。Schemy则是对Scheme的一种实现,它针对.NET环境进行了优化,使得.NET开发者能够利用Scheme的强大功能,同时享受...
9. **额外的脚本和工具**:如安装脚本、测试脚本、调试工具等。 在开发和维护这样的网站时,开发者需要熟悉PHP语言,了解HTML5的新特性,如离线存储、媒体元素、表单控件等,同时还要掌握CSS3布局技术,如Flexbox或...
在本项目中,我们主要探讨的是面部识别技术,这是一个基于机器学习的重要应用领域。通过使用特定的算法,我们可以训练模型来识别人脸并进行分类。在这个"FaceRecognition"项目中,我们将深入研究几种不同的机器学习...
在机器人路径规划领域,快速探索随机树(Rapidly-exploring Random Tree,简称RRT)算法是一种常用的方法,尤其适用于解决高维度空间中的路径规划问题。本资源提供了基于RRT算法的机器人避障功能的Matlab代码实现,...
5. **数据绑定与动态内容**:探索如何将UI元素与数据源绑定,实现动态内容展示,包括使用MVVM(Model-View-ViewModel)模式进行设计。 6. **XAML语言**:熟悉XAML的语法和结构,学习如何在Blend中直接编辑XAML代码...
6. **系统测试与维护**:介绍了测试目的、环境及维护策略。 7. **开发难点与技术**:总结了开发过程中遇到的问题及解决方案。 8. **结束语**:对未来工作的展望和建议。 #### 二、相关技术和方法详解 ##### 2.1 ...
2. **Code**:这部分可能包含.R脚本文件,展示了如何加载数据、进行探索性数据分析(EDA)、执行统计测试、构建预测模型等。R语言的代码通常结构清晰,易于理解和复用。 3. **Reports**:可能有Markdown或HTML格式...
这些脚本和设置文件可能是用Jupyter Notebook编写的,这是一种广泛使用的交互式环境,适合数据科学家和分析师进行探索性分析、建模以及可视化。 Jupyter Notebook是基于Web的应用程序,允许用户创建和共享文档,...
3. **交互式脚本**:CocosBuilder集成了JavaScript和Cocos2d的绑定,使得开发者可以在设计界面中直接编写和测试脚本,实现对象的行为控制,降低了学习曲线。 4. **预览与调试**:开发者可以直接在CocosBuilder内部...
- **与Java集成**:Grails是一款基于Groovy语言的Web框架,它完全兼容Java,并能无缝集成到现有的Java环境中。 - **简单而强大**:Grails采用了约定优于配置的原则,极大地简化了开发流程,使得开发者能够快速构建高...
5. **调试与测试**:在本地服务器上测试网页功能,确保所有脚本正确执行,无语法错误或逻辑错误。 6. **部署**:将网站文件上传到Web服务器,配置好域名和IIS设置,使网站可供互联网访问。 在这个"公司经典格式网站...
6. **统计分析**:通过`picante`库进行系统发育相关性分析,探索物种间关系与环境或生态变量的关联。 7. **结果解释和报告**:将分析结果整理成图表和文本,以供手稿撰写。 需要注意的是,"准备中"的状态可能意味...
- **形状编辑**:利用选择工具调整曲线、端点位置,实现精确编辑。 - **颜色填充**:掌握渐变、纯色填充技巧,提升作品视觉效果。 #### 四、关键帧与补间动画制作 - **关键帧概念**:理解关键帧的作用及如何在时间...
ActionScript是一种基于ECMAScript的脚本语言,为Flash内容提供了强大的交互性和逻辑控制。 **2. Flash设计游戏的优势与弱点** Flash游戏设计的优势主要体现在以下几个方面: - **低技术门槛**:相比于Visual C++...
`Astro`项目,正如标题所示,“astro:测试一些天文学数据”,旨在提供一个平台用于处理、分析和理解天文数据。`Jupyter Notebook`作为标签,暗示了这个压缩包可能包含一系列用Jupyter Notebook编写的交互式文档,...
4. **自动化测试**:在Web自动化测试中,apysc可以生成JavaScript代码,模拟用户操作,进行前端功能测试。 总之,apysc库为Python开发者提供了一种全新的前端开发方式,让Python程序员也能轻松涉足Web前端领域,...
"matlab"标签表明这个库是用Matlab编程语言编写的,Matlab是一种广泛使用的交互式环境,尤其适合数值计算和数据可视化,因此非常适合构建这样的科学计算库。 **文件内容详述:** 1. **spinw-master**:这是一个Git...
以下是基于这个项目名称和标签“matlab”可能涉及的一些关键知识点: 1. **MATLAB编程**:MATLAB(矩阵实验室)是MathWorks公司开发的一种解释型、交互式环境,专为数值分析、符号计算、数据可视化和算法开发设计。...
- **Jupyter Notebook**:一种基于Web的交互式计算环境,可以编写和运行Python代码,同时支持Markdown,方便记录和展示实验过程。 - **MNIST**:上述提及的数据集,用于训练和测试图像识别模型。 - **HTML**:可能...