通过Node.js的got库可以方便的进行http请求,如果被测系统的API只有几个,可以按照上一讲(
API自动化测试01: 使用库函数模拟发送请求
)提到的方法,直接写发送请求的函数,就能完成测试任务。当一个项目有很多的API需要去测试时,每个API一个方法的方式就难于管理。这就需使用某种框架来管理这些用例。
市面上现在有很多集成的框架可供选择,比如有测试驱动框架(TDD),关键字驱动框架(Keyword Driven)等等,这里为大家介绍使用行为驱动(BDD)框架来开发API的自动化测试。
行为驱动测试简介
行为驱动测试(BDD)是业界比较流行的概念,通过自然语言描述业务需求,提高团队间的敏捷开发。行为驱动框架比较流行的有Cucumber,Cucumber支持的编程语言有Java、JavaScript、Ruby等,Cucumber.js的github地址为:https://github.com/cucumber/cucumber-js。而对Cucumber的JavaScript库支持最好的是CukeTest,本次演练使用开发Cucumber.js的专业工具CukeTest。下载地址为:http://cuketest.com/download。
Cucumber的脚本主要分为两部分,场景描述部分以 为文件后缀名 ,另一部分为代码实现部分,以 为后缀名 。Cucumber使用特定语法将业务描述与业务实现链接起来。
业务描述文件类似如下:
其中场景大纲为关键字,主要表示这个场景可以使用不同的数据来测试不同的场景,场景下面为每个操作步骤的描述,定义操作步骤的执行, 在操作步骤中,使用 , 作为请求数据的占位符,在例子下面定义具体对应的数据。
这个场景比较简单,只有一个步骤描述。你可以根据需要为场景添加多个步骤,对API测试来说,就是按照业务逻辑关系,先后调用一组相关的API。
与此操作步骤描述对应的业务实现代码为:
在脚本执行中,Cucumber会自动将步骤描述中的数据作为参数传进来,执行的时候会根据描述数据的行数,有多少行数据,这个场景就运行多少次。该步骤函数中,它接收到url参数并访问此url,然后将返回结果与期望的返回值参数比较,相同则验证通过。
更锋利的工具--CukeTest
上面操作中我们简单介绍了使用Cucumber框架的一般步骤,好处就是将业务描述与代码相结合,根据描述,实现相应的代码即可。对于没有多少开发经验的测试人员来说,使用Cucumber可以很快就能上手进行操作。但是当用例特别多的时候,管理用例是一个挑战,并且每个用例都要与代码之间相互关联,如果对某个用例进行修改,其它实现代码可能就受到影响。所以下面使用Cucumber.js专业的编辑工具CukeTest为例,说明如何构建基于Cucumber的行为驱动框架。
打开CukeTest,欢迎界面--教学样例,点击【api_service】将样例代码存储到本地目录,可以看到如下界面。
CukeTest会将 文件在可视化界面中打开,在可视化界面中,双击可以进行编辑修改。在每个操作步骤后面点击绿色按钮,可以直接定位到代码实现部分。这对于脚本修改提供了很大的便利。在js代码中,也可以右键定位到描述文件。关于更多使用语法可以参考我们在腾讯课堂上放的免费视频:
API自动化测试教程
https://ke.qq.com/course/280876
下面讲如何根据样例框架上进行更改。
运行样例项目
安装依赖库
在package.json文件中已经定义好要使用到的库文件,在项目根目录下执行 可以自动安装依赖。
启动mock
在样例文件中,使用json-mock库模拟一个RESTful API服务,同时提供了 data.json 作为源数据。根据feature文件中的说明,在项目的根目录下执行 启动RESTful API服务器.
可以看到命令行中 如下输出信息:
说明服务已经启动,你可以访问本机的3000端口调用这个模拟的API。
运行样例
点击CukeTest 上运行项目运行按钮,即可运行。运行完成后自动生成测试报告。
代码整合
上面样例中,在feature文件的可视化界面可以看到每个场景的具体操作行为。点击操作步骤后面的绿色按钮可以定位到自动化脚本实现部分,便于操作。在step_definitions.js文件中,同样我们使用上一讲中介绍的 作为实现库。
编辑场景描述
使用CukeTest,可以很方便将整个框架整合起来。以CNode 社区的 API为例,下面介绍如何将上一讲中的代码整合进来。
新建feature文件,可视化界面中可以简单描述。
对应的文本描述为:
实现执行代码
在step_definitons目录下新建cnode.js文件并打开。点击feature文件可视化界面中每个操作步骤后面的灰色按钮可以在cnode.js文件中自动生成脚本文件。
在cnode.js文件中,引入got库,根据业务描述实现对应的代码。
执行用例
点击运行项目按钮,即可进行测试用例的执行。并生成测试报告:
报告中每个API测试都有文字描述及参数信息,非常直观。
总结
通过上面的例子,只要我们熟悉业务描述,根据业务描述使用对应的库函数调用相关方法就能对相应功能进行验证。这就是使用行为驱动的便利之处,当然,这些仅是初步功能,方便我们快速入门。Cucumber中还支持添加数据,比如在操作步骤中添加DocString或者Data Table,场景类型也分为 , , 。不同的场景类型有着不同的含义。具体可以参考Cucumber的api 或者查阅CukeTest的文档http://cuketest.com/zh-cn/进行学习。
聆播科技提供软件自动化方面的专业产品及服务,帮助您实现公司测试业务的及软件操作的自动化。欢迎联系我们,咨询商务合作事宜。
快,关注这个公众号,一起涨姿势~
领取专属 10元无门槛券
私享最新 技术干货