自动化测试的组成部分:SEARCH
在考虑自动化测试用例时,不仅仅要考虑测试的执行步骤。在运行任何步骤之前,程序必须处在能够执行测试的状态。在测试执行后,至关重要的是知道测试是否通过,并且测试结果一定要被保存到某处以待检查或进一步分析。另外,还可能需要清理测试中生成的垃圾(文件、注册表设置等)。最后,测试一定要易于维护和易于理解,以便任何人在任何需要的时间都能运行或修改。
自动化测试的含义远比自动执行原来人工执行的测试步骤多得多。好的自动化测试利用计算机的能力去执行人力无法有效执行的测试。自动化测试不是测试工程师的替代品。能思考的人执行测试的作用远远超过机器。但是如果有效地利用,自动化测试会节省大量的时间和开支。
Keith Stobie和Mark Bergman在他们1992年的论文“How to Automate Testing: The Big Picture”中用缩写“SEARCH”来描述测试自动化的组成部分。“SEARCH”代表的是设置(Setup)、执行(Execution)、分析(Analysis)、报告(Reporting)、清理(Cleanup)和帮助(Help)。
1、设置
设置指的是将被测软件的测试环境和配置信息等准备好,让实际的测试操作可以开始执行。
2、执行
这是测试的核心,包括检验软件功能的特定步骤、充分的错误处理、或者一些其他的相关工作。
执行测试用例的方法是多种多样的。一种简单的执行形式是编写并运行一段脚本或程序。
3、分析
分析是确定测试通过还是失败的过程。这是最重要的步骤,也常常是测试中最复杂的步骤。
有时候,分析这一步挺简单,但是用来确定一条测试是不是通过的标准可能会非常复杂。测试准则是测试用例所预期的测试结果的源头。
4、报告
报告包括分析结果的显示和传播,例如日志文件、数据库、或者其他分析过程所生成的文件。
比较小的项目经常直接用测试日志文件作为测试报告。测试日志文件记录着测试用例和测试套件运行通过或失败的结果。只要这些日志文件不是太多,就可以直接用作测试报告。
另一种比较常用而且有效的办法是测试日志文件的自动解析。日志文件解析程序可在运行测试用例之后独立执行,既可以用来解析一个日志文件,也可以用来解析成批的日志文件。解析程序可简单地记录测试用例名和运行结果,也可以记录可能用得到的重要数据,如测试分类,被测的产品组件,以及可用来分析测试失败结果的相关信息。
5、清理
清理阶段将软件返回到已知状态使得接下来的测试能继续执行。
在可能的情况下,自动化测试应该尽量将运行环境回归到测试运行前的状态,以保证后续的测试能正常执行。失败的测试反映的应该是产品中的问题,而不是前面测试留下的垃圾数据或环境设置的结果。环境清理对于那些需要很长时间设置测试环境的用例尤其重要。 虽然理想的工作流程应该是在测试执行后清理环境,但现实中却不一定处处可行。例如,如果一个有内存泄漏或内存破坏(memory corruption)问题的测试用例每次在运行完之后重设环境,就会掩盖这里的内存问题。反过来,如果所有的测试都不作环境清理,分析失败的测试结果的根源就会很困难。一个折中的处理方式是在所有的自动化测试用例后加上环境清理的步骤,同时重复运行另一组测试,不作环境清理的步骤。例如,在运行附带环境清理的自动功能性测试同时,在另一些计算机上重复运行一组不附带环境清理的场景测试。
6、帮助
指的是使测试用例在其生存周期中保持可维护性和健壮性的帮助系统。
有时测试工程师会因为经验的增加转去负责更关键的部分,或转到公司内其他的产品组。他原来负责的测试程序就会转交给其他的测试工程师维护、设置、运行和进行测试结果分析。SEARCH的最后一个步骤就是为了确保自动化测试在整个产品生命周期里的运行和维护。 测试代码和产品代码一样,必须是可维护的。除了清晰合理的结构和代码注释,帮助这个阶段还包括建立一系列相关文档。测试目标、已知的限制、设置步骤以及如何解读运行结果等都应包含在文档之中。 对大多数测试工程师来说,建立文档是SEARCH中最没有吸引力的一个步骤,但这一步可能成为这些自动化测试程序整个生命周期中最重要的一个环节。
开发自动化测试时,考虑从设置到维护的整个测试构造是很重要的。自动化程度很高的自动化测试可以把 SEARCH 的每个步骤都自动化,但有时只把部分步骤自动化就很有用。例如有些情况下,可以将程序的安装和设置自动化,之后执行关键的、或探索性质的人工测试。或者,你可以采用某个系统把测试结果记录到测试用例管理器,作测试结果的自动分析和报告。大多数情况下,一个成功的做法是自动化大部分的步骤。
很多测试自动化的努力遭遇失败,其原因在于它们只自动化测试执行的环节。一个完整的自动化方案要求自动化不仅仅测试执行这一个环节。在一个自动化策略中,如果没有一个把应用程序准备好到测试可以执行状态的计划,也没有自动的测试结果报告和分析,就很少能带来什么益处。许多人在想到测试自动化时主要考虑测试执行的自动化,其实其他测试阶段的自动化也很有用。用“计算机辅助测试”这个术语来描述对测试各个阶段自动化的概念,可能要比“测试自动化”这个术语更合适。彻底的自动化绝不仅仅是执行一个测试。执行测试需要各种支持性任务,在计算机上开发的工具和实用程序提供了自动化这些任务的好的解决方案。
注:本文为《微软的软件测试之道》一书10.3.和10.4章节内容整理后的阅读笔记,感谢本书作者Alan Page。
自动化测试的组成部分:SEARCH的更多相关文章
- Selenium自动化测试Python二:WebDriver基础
WebDriver基础 欢迎阅读WebDriver基础讲义.本篇讲义将会重点介绍Selenium WebDriver的环境搭建和基本使用方法. WebDriver环境搭建 Selenium WebDr ...
- UiAutomator自动化测试框架介绍
UiAutomator自动化测试框架介绍 环境搭建 1 必要条件 1.1 JDK 1.2 SDK(API高于15) 1.3 Eclipse 2 ...
- 从0到1搭建移动App功能自动化测试平台(2):操作iOS应用的控件
转自:http://debugtalk.com/post/build-app-automated-test-platform-from-0-to-1-Appium-interrogate-iOS-UI ...
- Nightmare基于phantomjs的自动化测试套件
今天将介绍一款自动化测试套件名叫nightmare,他是一个基于phantomjs的测试框架,一个基于phantomjs之上为测试应用封装的一套high level API.其API以goto, re ...
- Search Ads 已经在美国区上线 - iOS 移动开发周报(46)
Search Ads 已经在美国区上线 - iOS 移动开发周报(46) 新闻 Search Ads 上线 苹果的 AppStore 搜索广告终于 正式上线了 https://developer.ap ...
- 一步一步教你编写与搭建自动化测试框架——python篇
[本文出自天外归云的博客园] 这两天用python写了一个自动化测试框架,取名为Auty.准备用来做Web方面的接口测试,以下为Auty框架一步一步的搭建过程——
- 基于selenium的pyse自动化测试框架
WebUI automation testing framework based on Selenium 介绍: pyse基于selenium(webdriver)进行了简单的二次封装,比seleni ...
- Robot Framework自动化测试(四)--- 分层思想
谈到Robot Framework 分层的思想,就不得不提“关键字驱动”. 关键字驱动: 通过调用的关键字不同,从而引起测试结果的不同. 在上一节的selenium API 中所介绍的方法其实就是关 ...
- lettuce webdriver 自动化测试---玩转BDD
行为驱动开发(BDD),依然高大上的矗立在远方,很少被人问津,一方面是BDD的思想不太容易理解,别一方面BDD的资料并不多.中文的资料就更少了. 之前增写过一篇<python BDD 框架之le ...
随机推荐
- Python 正则表达式学习摘要及资料
来源:Michael_翔_ 摘要 在正则表达式中,如果直接给出字符,就是精确匹配. {m,n}? 对于前一个字符重复 m 到 n 次,并且取尽可能少的情况 在字符串'aaaaaa'中,a{2,4} 会 ...
- windows vbs启动多个应用程序并使程序最小化(显示桌面)
windows vbs启动多个应用程序并使程序最小化(显示桌面) CreationTime--2018年7月26日11点18分 Author:Marydon 1.应用场景 每天开机后,都需要打开平 ...
- LoadRunner中运行场景时提示"You do not have a license for this Vuser type."
LoadRunner中运行场景时提示"You do not have a license for this Vuser type." 2012-06-15 17:09:07| 分 ...
- Ubuntu下开启root登陆--并开启SSH登录验证
Ubuntu下开启root登陆亲手安装过Ubuntu的童鞋都知道,默认安装只会添加一个普通用户名和密码,而超级用户权限则是利用sudo命令来执行.在Ubuntu下使用root登陆或者在shell中用s ...
- 基于skitter的轮播图炫酷效果,幻灯片的体验
概述 包含各种炫酷的轮播切换效果,插件小巧,与其他插件无冲突,可用于移动端和PC端 详细 代码下载:http://www.demodashi.com/demo/11939.html 你还在用原生的js ...
- android多线程进度条
多线程实现更新android进度条. 实例教程,详细信息我已经注释 android多线程进度条 01package com.shougao.hello; 02 03import android ...
- Oracle常用单行函数(原创)
前言: 想把单行函数进行一个比较全面的总结,并分享给有需要的人,有不明之处还请多多指教. SQL函数:Oracle的内置函数,包括了单行函数和多行函数,本文重点讲解单行函数.单行函数又可以分为许多类, ...
- mosquitto配置文件详解
安装完成之后,所有配置文件会被放置于/etc/mosquitto/目录下,其中最重要的就是Mosquitto的配置文件,即mosquitto.conf,以下是详细的配置参数说明. # Config f ...
- Python 实int型和list相互转换 现把float型列表转换为int型列表 把列表中的数字由float转换为int型
第一种方法:使用map方法 >>> list = [, ] #带有float型的列表 >>> int_list = map(int,list) #使用map转换 & ...
- mysql group replication 安装&配置详解
一.原起: 之前也有写过mysql-group-replication (mgr) 相关的文章.那时也没有什么特别的动力要写好它.主要是因为在 mysql-5.7.20 之前的版本的mgr都有着各种各 ...