对验收测试、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就无法确认步骤定义方法和具体步骤的绑定关系。
现在就剩下步骤定义执行了。而这时候就该WatiN和Nunit上场了。
WatiN是一个基于浏览器的自动化工具。我们将利用它来打开一个IE实例,浏览URL,填充表格,点击按钮或链接等。与此同时,我们将利用NUnit来断言我们的期望。尽管如此,WatiN和NUnit并非是必需的。也可以使用Selenium进行浏览器自动化;而事实上,任何单元测试框架都可用来断言,甚至可以使用Windows自带的应用自动化库,比如:White,然后为相应的Windows Forms或WPF应用编写自动化验收测试。
现在我们就来尝试为一个真实应用创建实际的验收测试。针对本文,我们将使用该实例程序。读者可以从这里的repository获取一份。该repository还包含完整的验收测试工程,但是我还是建议通过执行本文剩下的内容来创建自己的验收测试代码。
先决条件
Spec Flow为所有支持的第三方测试运行器授权以运行真正繁重的验收测试。正如前面所提的,我们将使用NUnit执行测试和WatiN自动化浏览器。以下就是如何使用WatiN自动化浏览器为WatiN执行谷歌查询的例子(来自WaitN网站)。
[Test] public void SearchForWatiNOnGoogle() { using (var browser = new IE("http://www.google.com")) { browser.TextField(Find.ByName("q")).TypeText("WatiN"); browser.Button(Find.ByName("btnG")).Click(); Assert.IsTrue(browser.ContainsText("WatiN")); } }
上面的测试创建了一个新IE实例,然后将Google的URL传给构造器,然后由构造器让浏览器跳转到Google页面。随后寻找命名为“q”的文本框。该文本框就是你要输入具体查询内容的地方。找到该文本框后,输入“WatiN”。紧接着,查找命名为“btnG”的按钮,然后点击它。最后,由一个断言来确定页面上存在有“WatiN”(可以是页面上任何地方)。
以上的代码为我们快速展示了通过WatiN自动化常规任务是多么的简单,这些任务可以是在浏览器上执行例如填写文本框、点击按钮等动作。
接下来,就可以在Visual Studio中为你的验收测试创建新的类库工程。当你下载完NUnit和WatiN后,你将需要添加必需的DLL到你的验收测试工程中。从你的NUnit下载中添加一个nunit.framework.dll引用到你的验收测试工程。对于WatiN,你则需要添加两个DLL引用到你的验收测试工程:Interop.SHDocVw.dll和WatiN.Core.dll。
值得一提的是,你可以通过NuGet获取NUnit和WatiN这两个项目。这两个都很容易在NuGet中找到,并能自动添加到你的工程中。如果你已经在你的项目中使用NuGe了,大可以通过它下载这两个项目。
从网站上获取一份Spec Flow,然后安装到你的系统中。跟NUnit和WatiN不同,你需要在系统中安装Spec Flow,而不是简单的拷贝Dll文件。Spec Flow自带有某些工具,每次往项目中添加一个特性文件,它都会创建相应的隐藏代码文件。另外,在你编辑特性文件时,它还带有一些语法高亮和其他调整。
成功安装Spec Flow后,检查安装目录(默认为Program Files)。里面有一堆DLL文件,但是你只需要添加该引用到你的工程中:TechTalk.SpecFlow.dll。
以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索测试
, 自动化
, 构造器
, 工程
, 步骤
一个
bgp flowspec、bgp flowspec技术、flowspec、bgp flowspec功能介绍、flowspec技术,以便于您获取更多的相关知识。