微信号:infoqchina

介绍:有内容的技术社区媒体

利用Spec Flow编写自动化验收测试

2013-11-27 21:14 InfoQ

对验收测试、Gherkin及Spec Flow的介绍验收测试或功能测试是验证系统是否满足需求的一种测试。这些测试作为黑盒测试的一种,与其内部具体执行无关。验收测试只是用来验证系统是否符合某一需求。


现在我们一起看下面这个关于网页登录功能的需求:

Feature: Login
  In order to access my account
  As a user of the website
  I want to log into the website

Scenario: Logging in with valid credentials
  Given I am at the login page
  When I fill in the following form
  | field | value |
  | Username | xtrumanx |
  | Password | P@55w0Rd |
  And I click the login button
  Then I should be at the home page

其可读性非常强,是吧?以上的详细需求是通过Gherkin语言来描述的。Gherkin是一种领域特定语言,它允许我们在不解释具体执行细节的情况下,详细描述应用应该如何执行。以上详细需求的大部分内容是由自由文字组成;只有几个特定的Gherkin关键字:Feature、Scenario、Given、When、And和Then,其他的都是自由文字,并且主要记录了功能特性是如何被使用的。


Gherkin是一种基于行的编程语言,场景中的每一行(Line)就是一个步骤(Step)。“Logging in with valid credentials”场景中的第一个步骤是“Given I am at the login page”。该步骤需要一个具体步骤定义,这样我们的测试执行者(test runner)才能知道如何去完成该步骤。Spec Flow中的步骤定义其实就是一个带有变量的方法,而该变量包含有该步骤的具体文本。所有步骤定义方法都需包含于一个含有Binding属性的类中。

[Binding]
class LoginStepDefinitions
{
  [Given("I am at the login page")]
  public void GivenIAmAtTheLoginPage()
  {
    // TODO
  }
}


上面的类和方法名都是随意的。真正重要的是应用到类和方法中的变量。如果没有它们,Spec Flow就无法确认步骤定义方法和具体步骤的绑定关系。



***********************************

本文来自InfoQ微信公众账号:infoqchina

1、回复“今日新闻”,查看今天更新的新闻;

2、回复“今日英文”,查看今天英文站的更新;

3、回复“文章 +关键词”,搜索关键词相关内容;

4、回复“QCon”,了解QCon大会相关信息;

5、回复“活动”,了解最近InfoQ组织的线下沙龙;

6、回复“架构师”,获取《架构师》下载地址;

7、回复“投稿”,了解投稿和加入编辑团队的流程。

***********************************

 
InfoQ 更多文章 Facebook如何实现PB级别数据库自动化备份 学术派Google软件工程师Matt Welsh谈移动开发趋势 Spotify为什么要使用一些“无聊”的技术? 妹纸们放假了,汉纸们做啥? 大多数重构可以避免
猜您喜欢 Java程序员集合框架面试题 小钢的架构思考:架构规划 不可忽视 :Swift 才是企业应用开发的未来 错过就要多花300元,MDCC 2016移动开发者大会5折抢票倒计时! 拥抱 Android Studio 之四:Maven 仓库使用与私有仓库搭建