每个实行持续交付的项目,都有生产流水线的元素,如持续集成和自动化测试。这些测试是在不同层面进行的,从单元测试到冒烟测试再到功能测试。自动化功能测试的优点之一是可重复性和可预测的执行时间。出于这个原因,它应该作为软件质量的每一个构建之后的指标。功能测试自动化往往会成为一个瓶颈,所以你应该熟悉一下如何创建这样的测试的基本原则。
  首先设计你的测试
  测试集合可以比作盆景树。
  最初的时候,我们照顾树根和树干。我们选择会成长的主要分支,我们每天都细心照料这棵树并等待它长出健康的叶子。
  我们可以以类似的方式继续测试。
  我们建一个将负责应用程序主要功能(例如:开启)的基类。
  根据说明,我们先明确将被测试覆盖的应用程序的主要功能,然后每天我们在执行测试的时候都添加更多平行测试。
  每一个支持测试(例如创建一个新的用户)的方法都需要与测试分离——让我们在单独的类里面来实现。
  你应该在包括了应用程序主要功能的目录里保持类。
  去建一个规定很多功能共有方法的抽象类是很好的做法。
  如果你正在测试Web应用程序,就用页面对象设计模式。该模式里,一个类及其方法对应了单个页面的功能或一个大型网页里单个页面上的一个元素。
  无需事事自动化
  自动化花费很多,所以你应该主要测试应用程序的主要功能。
  某些测试可以快速轻松地手动完成,且潜在脚本可能难以实现。
  值得用到自动化的是那些繁琐的需要被重复很多次的,和那些需要大量数据验证的测试工作
  写短测试
  在一个或多个测试失败的情况下,开发团队的任何成员都应该能够轻松地找到错误的原因。
  出于这个原因,每个测试方法里应该最多有5个断言,并且每个方法都必须提供的测试操作的完整记录。
  明智的做法是使用BDD(行为驱动开发)技术,但是当你没有用一个特定的测试框架时,你应该把接下来的测试步骤放在comments //given //when //then下。
  创建独立测试
  在测试类中的每个方法应该是一个独立的实体,而不是依赖于其他测试。我们应该能够在任何时间运行单个测试。否则,这样的测试用例集将来维护起来就会很贵——必须定期跟踪和更新测试之间的联系。
  很多时候,测试需要一定的前提条件来满足。这些条件不应该用外部方法,应该在试验开始时运行。如果这些条件和测试类的所有方法一样,它们就可以被放在一开始进行的方法里(例如:在JUnit中被标记为@ BeforeClass)。
  关注可读性
  源代码应该是自我记录的,而写下以下几行代码的每个利益相关者应该明白测试在做什么,为什么它被这么写。尽量避免在源代码注释,因为它也必须被更新。这值得花比平常多一点的时间来命名方法,从而使你的代码更易读。
  再看看行为驱动开发技术,每个测试方法都应以单词“应该”开始,而不是“测试”。
  根据这一惯例,我们马上就可以明白一个特定的方法测试什么内容了,它在分析测试报告时特别有用。

[Tommas] 如何创建自动化功能测试的基本原则的更多相关文章

  1. 使用Rider中搭建specflow+xunit+selenium对web页面进行自动化功能测试环境

    运行rider,创建测试解决方案,选择xunit,点击create创建 ​   导入包,由于本人使用chrome浏览器(需先下载好对应的浏览器驱动),所以导入了selenium.webdriver.c ...

  2. Windows创建自动化任务

    Windows创建自动化任务使得开机就打开相应的Python目录 1:计算机管理 2:找到任务计划程序 3:创建基本任务 4:任务触发器 5: 建立bat执行文件 start "" ...

  3. 使用Selenium和openCV对HTML5 canvas游戏进行自动化功能测试(一)

    上一篇讲了HTML5 canvas游戏的基本工作原理,接下来讲如何进行自动化功能测试. Selenium是一个跨平台的跨浏览器的对网页进行自动化测试的工具.从Selenium 2.0开始Seleniu ...

  4. [转]如何使用MFC和类型库创建自动化项目

    本文转自:http://www.cnblogs.com/zhoug2020/archive/2012/04/01/2429064.html 摘要 本文详细介绍了如何自动化像Microsoft Offi ...

  5. 企业环境下的OpenStack自动化功能测试(转载)

    原文地址:http://mp.weixin.qq.com/s?__biz=MzAxOTAzMDEwMA==&mid=2652502581&idx=1&sn=0c26519bcb ...

  6. laravel 创建自动化生成数据库

    1.   生成 迁移脚本 php artisan make:migration create_users_table --create=users(表名) 当你⽣成⼀个模型时想要顺便⽣成⼀个 数据库迁 ...

  7. 创建自动化环境(jenkins+tomcat+git+maven,java)

    1.安装jdk 下载1.8以上jdk // 切换到lib cd /usr/lib sudo mkdir jdk cd jdk // 将 jdk拷贝到此目录 // 解压jdk tar -zxvf jdk ...

  8. 你用哪种工具进行iOS app自动化功能测试?

    原文见http://www.cocoachina.com/applenews/devnews/2013/1111/7332.html

  9. 如何通过automator创建自动化备份任务?

    Windows用户对于Task Scheduler应该不陌生,但是到了macOS因该用什么呢?那就是automator,今天因为有一个个人使用需求:备份一个移动硬盘中的文件,但是又不想完全手动.怎么办 ...

随机推荐

  1. 实时监听input输入框value值的变化

    1.js 的 oninput & onpropertychange JS中的 oninput 事件在 IE9 以下版本不支持,需要使用 IE 特有的 onpropertychange 事件替代 ...

  2. Mac OS X下GnuPlot的安装和配置(无法set term png等图片输出)

    今天使用gitstats分析git repo的活动信息,发现其内部使用gnuplot,结果发现无法生成png图片,进入gnuplot的shell发现无法设置png格式输出.如下 gnuplot> ...

  3. DIV CSS布局中position属性用法深入探究

    本文向大家描述一下DIV CSS布局中的position属性的用法,position属性主要有四种属性值,任何元素的默认position的属性值均是static,静态.这节课主要讲讲relative( ...

  4. DELPHI 取文件名和扩展名

    x:=ExtractFileName(str);  //取文件名+扩展名,不包含文件路径 y:=ExtractFileExt(str);   //取文件的扩展名

  5. 学习PYTHON第一天

    需要掌握的内容 1.编程语言 2.python   .  C#   JAVA 3.python:  pypy    cpython     jpython 4.执行方式 解释器 文件执行 5.指定解释 ...

  6. 拓展:switch实现

    拓展:switch实现 参考中谷教育 python视频:switch  switch语句用于编写多分支结构的程序,类似于if ... elif ...else语句.switch语句表达的分支结构比if ...

  7. hdu 2844 poj 1742 Coins

    hdu 2844 poj 1742 Coins 题目相同,但是时限不同,原本上面的多重背包我初始化为0,f[0] = 1;用位或进行优化,f[i]=1表示可以兑成i,0表示不能. 在poj上运行时间正 ...

  8. 如何在dapper中获取刚插入行的ID

    二话不说: 1.先建立个表 CREATE TABLE [dbo].[UserInfo](    [ID] [int] IDENTITY(1,1) NOT NULL,    [UserName] [nc ...

  9. DEPRECATED: Use of this script to execute hdfs command is deprecated.

    DEPRECATED: Use of this script to execute hdfs command is deprecated. 本人安装的hadoop版本是2.4.0的,但每次执行命令时都 ...

  10. java代码整理---正则表达式

    1. 邮箱验证 : package javaRegx2016311; import java.util.regex.Matcher; import java.util.regex.Pattern; p ...