闭门造车:从0开始搭建自动化测试框架(一)-cucumber&BDD

基础

首先还是再谈谈cucumber和browserdriver。

  • cucumber

官网:https://cucumber.io/

Cucumber是什么呢,官网有一句介绍:

With over 30 million downloads, Cucumber is the world’s #1 tool for Behaviour-Driven Development.

Cucumber是最受欢迎的BDD工具。那什么是BDD呢?BDD是TDD的一种衍生,通过特定的BDD框架,用自然语言或类自然语言,按照编写用户故事或者用户用例的方式,以功能使用者的视角,描述并编写测试用例。

直观一点,下面就是一个用例。对我们的测试来说,可以用自然语言来写脚本,便于阅读和没有编程基础的测试人员写用例。如果整个项目是用BDD开发的话,那就又是另一个话题了。这里我们只谈用于自动化测试。

  • Selenium

相信大家对这个都不陌生,selenium 是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。这里我们会用到Selenium-java库。

  • 浏览器Driver

如果我们的测试对象是Web页面,那么就需要Driver,不同的浏览器有不同的driver,如Chrome的Chromedriver,Firefox的Geckodriver等。driver顾名思义就是驱动,Selenium-java只是一个库,它需要通过调用driver来给浏览器发送指令,浏览器接收指令进行操作。

 

说到这里,相信大家已经知道框架的原理了,如下图。Cucumber是BDD框架,基于这个框架,我们使用的是java进行开发,通过调用Selenium库控制webdriver,进而控制浏览器执行操作。

 

开工

好了,铺垫了这么多,接下来把最基本的框架运行起来,然后再进行改造,添加我们需要的功能。

  • Cucumber基础框架

在gi吧我们可以找到官方的example:https://github.com/cucumber/cucumber-java-skeleton

但,我们不用现成的。我们就是要自己造轮子,从零开始。

造轮子

首先如果你没有IDE的话,那安装IntelliJ吧,下载免费的Community版:http://www.jetbrains.com/idea/download/#section=mac

接着,我们创建一个Gradle项目(自己比较喜欢用Gradle,你也可以用Maven):

接着把cucumber加到依赖里

BDD

有了依赖后,我们开始第一个测试“hello world”,体会一下BDD。先创建目录结构,以及第一个feature文件。

可以把这个behavior看成是我们的需求和验收标准,接下来我们就去实现这个需求。

然后我们可以自动生成实现文件函数框架

如上图,自动生成了待实现的函数。

现在造的轮子已经有了外观了,我们要把内在给实现了:

第一步,我们要打开浏览器,就需要通过webdriver来控制,所以需要先初始化webdriver,打开浏览器。

新建一个类,以调用webdriver:

其实driver = new ChromeDriver(); 这一句就实现了我们想要的功能,只是为了今后的扩展,我们创建了这个类,以便支持更多的浏览器。

回到步骤实现中,首先我们先实例化webdriver,创建一个实例供调用。然后我们来实现第一个访问页面的操作:

第一个操作实现以后,我们可以先运行测试一下是否工作,我们就需要一个runner来运行测试,通过junit来实现。

Runwith是junit的API,这里将会用cucumber.class 来运行测试。

CucumberOptions中,plugin一般用来放Report,features就是我们要跑的case,glue是步骤定义文件的地址。

 

运行runner,可以打开页面了。说明我们的实现没有问题,你已经体验了一次BDD。

本章节完整代码:

https://github.com/chenpeng9/study-cucumber/tree/master

https://github.com/chenpeng9/study-cucumber.git

小结

到这里,我们介绍了框架结构和原理,对自动化框架有了一个全局的认识。

而且我们对BDD有了一次亲密接触,也有了一个简单的浏览器自动化测试框架了。

但是我们的功能和实现都还在不完善,测试报告也比较丑。不要急,后续的文章中将会基于这个骨架一步一步让这个测试框架丰满起来,一步步实现所有的功能。

 

1 thought on “闭门造车:从0开始搭建自动化测试框架(一)-cucumber&BDD

发表评论

电子邮件地址不会被公开。 必填项已用*标注