自动化测试的组成部分: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 ...
随机推荐
- Android 断点续传下载
断点续传在面试中出现的概率还是比较大的,因为一般的应用都需要. 这个代码是从网上找来的,自己改了点东西,能跑通,但是这个代码并不是最优代码和设计.但是基本思路体现出来了,可以以这个为基础来进行修改.先 ...
- xml xpath dta笔记
xml: 有且只有一个根元素 默认utf-8 如果是中文且为不是utf-8的必须指定编码 声明的编码必须和文档的内容保持一致 well-formed XML :是否符合xml语法 valid xml: ...
- JavaScript:使用JavaScript 实现注册表单的校验
说明:在点击提交时进行表单校验,具体要求如下: 1)用户名为3~16个字符,且不能包含”@”和”#”字符: 2)密码和校验密码必须一致,且长度在8个字符到16个字符: 3)兴趣爱好至少选择一项: 4) ...
- HTML5学习笔记 Geolocation(地理定位)
HTML5 Geolocation(地理定位)用于定位用户的位置. 定位用户的位置 html5 Geolocation API用于获得用户的地理位置 鉴于该特性可能低侵犯用户的隐私,除非用户同意,否则 ...
- 如何用原生js或jquery设置select的值
1.原生js设置select值的方法 (1)有时可能需要隐藏select,但是还得需要更改select所传递的值.(select的默认选中之为第一个,即下标为0的选项值) var gd2=docume ...
- django 官方文档下载
今天发现自己的django文档有点过时了,于是想去下载一份新,找了老半天才找到pdf的下载地址:于是把它记录下来,希望以后可以直接用. 一.进行django官方网站: 二.文档的pdf文件就在docu ...
- CentOS Linux防火墙配置及关闭
CentOS 配置防火墙操作实例(启.停.开.闭端口): 注:防火墙的基本操作命令: 查询防火墙状态: [root@localhost ~]# service iptables status< ...
- [na]tcp的可靠性
- iconv 解决乱码问题
[root@NGINX-APACHE-SVN pro]# file 林.txt 林.txt: ISO-8859 text, with no line terminators #在LINUX下显示乱码 ...
- Getting Started with Amazon EC2 (1 year free AWS VPS web hosting)
from: http://blog.coolaj86.com/articles/getting-started-with-amazon-ec2-1-year-free-aws-vps-web-host ...