在考虑自动化测试用例时,不仅仅要考虑测试的执行步骤。在运行任何步骤之前,程序必须处在能够执行测试的状态。在测试执行后,至关重要的是知道测试是否通过,并且测试结果一定要被保存到某处以待检查或进一步分析。另外,还可能需要清理测试中生成的垃圾(文件、注册表设置等)。最后,测试一定要易于维护和易于理解,以便任何人在任何需要的时间都能运行或修改。

自动化测试的含义远比自动执行原来人工执行的测试步骤多得多。好的自动化测试利用计算机的能力去执行人力无法有效执行的测试。自动化测试不是测试工程师的替代品。能思考的人执行测试的作用远远超过机器。但是如果有效地利用,自动化测试会节省大量的时间和开支。

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的更多相关文章

  1. Selenium自动化测试Python二:WebDriver基础

    WebDriver基础 欢迎阅读WebDriver基础讲义.本篇讲义将会重点介绍Selenium WebDriver的环境搭建和基本使用方法. WebDriver环境搭建 Selenium WebDr ...

  2. UiAutomator自动化测试框架介绍

    UiAutomator自动化测试框架介绍 环境搭建 1         必要条件 1.1       JDK 1.2       SDK(API高于15) 1.3       Eclipse 2    ...

  3. 从0到1搭建移动App功能自动化测试平台(2):操作iOS应用的控件

    转自:http://debugtalk.com/post/build-app-automated-test-platform-from-0-to-1-Appium-interrogate-iOS-UI ...

  4. Nightmare基于phantomjs的自动化测试套件

    今天将介绍一款自动化测试套件名叫nightmare,他是一个基于phantomjs的测试框架,一个基于phantomjs之上为测试应用封装的一套high level API.其API以goto, re ...

  5. Search Ads 已经在美国区上线 - iOS 移动开发周报(46)

    Search Ads 已经在美国区上线 - iOS 移动开发周报(46) 新闻 Search Ads 上线 苹果的 AppStore 搜索广告终于 正式上线了 https://developer.ap ...

  6. 一步一步教你编写与搭建自动化测试框架——python篇

    [本文出自天外归云的博客园] 这两天用python写了一个自动化测试框架,取名为Auty.准备用来做Web方面的接口测试,以下为Auty框架一步一步的搭建过程——

  7. 基于selenium的pyse自动化测试框架

    WebUI automation testing framework based on Selenium 介绍: pyse基于selenium(webdriver)进行了简单的二次封装,比seleni ...

  8. Robot Framework自动化测试(四)--- 分层思想

    谈到Robot  Framework 分层的思想,就不得不提“关键字驱动”. 关键字驱动: 通过调用的关键字不同,从而引起测试结果的不同. 在上一节的selenium API 中所介绍的方法其实就是关 ...

  9. lettuce webdriver 自动化测试---玩转BDD

    行为驱动开发(BDD),依然高大上的矗立在远方,很少被人问津,一方面是BDD的思想不太容易理解,别一方面BDD的资料并不多.中文的资料就更少了. 之前增写过一篇<python BDD 框架之le ...

随机推荐

  1. 使用CXF实现基于Rest方式的WebService

    本文介绍使用CXF实现基于Rest方式的WebService(CXF的版本是3.0.0) 一. 前言 Java有三种WebService规范:Jax-WS,Jax-RS,Jaxm 1. Jax-WS( ...

  2. laravel使用的模板引擎 blade

    使用blade引擎的话必须在控制器中使用use   Blade

  3. operator new 和 operator delete 实现一个简单内存泄漏跟踪器

    先来说下实现思路:可以实现一个Trace类,调用 operator new 的时候就将指向分配内存的指针.当前文件.当前行等信息添加进Trace 成员map容器内,在调用operator delete ...

  4. C#中Out和Ref參数修饰符

    在编程过程中对于函数之间的參数的传递一般分为两种:传值和传地址. 以下为大家分析一下. 传值 比方你又一份文档,假设採用传值的话.相当于我复制了一份,因此我对我这份文档的改动都不会影响到你的那份.假设 ...

  5. javascript sort方法容易犯错的地方

    sort方法用来对数组排序非常方便.但是sort(func)这个func参数的构造却很容易混淆. sort判断func的返回值是判断正负,而不是ture和false.所以务必保证返回值要么负数要么正数 ...

  6. ecshop报错”Deprecated: Assigning the return value of…”解决办法

    ECSHOP生成站点地图提示”Deprecated: Assigning the return value of new by reference is deprecated in…”. 我的问题在批 ...

  7. JVM性能调优监控工具jps、jstack、jmap、jhat、jstat、hprof

    JVM性能调优监控工具jps.jstack.jmap.jhat.jstat.hprof

  8. Android Studio 使用感受 错误解决

    刚到公司不久,公司叫我用Android studio软件,曾经一直在用的是eclipse ADT.突然接触到的新名词让我有点适应只是来. 好吧,既然是公司要求,肯定有它的道理.就从网上下载了它的安装包 ...

  9. EF操作VS中

    1.安装mysql server 2.安装MySql的VS插件(版本请下载最新版,百度自己搜索,这个不用多说)mysql-for-visualstudio-1.2.3.msi 3.安装用于.net连接 ...

  10. UIButton 按钮控件-IOS开发 (实例)

    转自:http://justcoding.iteye.com/blog/1467999 UIButton是一个标准的UIControl控件,所以如果你对UIControl不甚了解还是先看一下我的另一篇 ...