接口测试的几种方法

其实无论用那种测试方法,接口测试的原理是通过测试程序模拟客户端向服务器发送请求报文,服务器接收请求报文后对相应的报文做出处理然后再把应答报文发送给客户端,客户端接收应答报文这一个过程。

方法一、用LoadRunner实现接口测试

大家都知道LoadRunner是一种性能测试工具,但它也可以用在我们做接口测试的时候。开发人员开发出来的接口,提供给测试人员详细的接口使用说明书,该说明书最基本的要求如下:

接口测试地址:/SNS/Publish

请求报文参数说明:

请求报文格式:

应答报文的参数接口说明:

应答报文格式:

有了上述的说明书之后,测试人员可以根据文档的描述在LoadRunner书写相应的接口测试脚本。

LoadRunner中涉及到向服务器发送请求的API方法包括:web_url(),web_submit_form(),web_submit_data(),web_custom_request()。下面介绍两种我常用的方法:

方法一:使用web_submit_data()

方法二:使用web_custom_request()

这也是一种写法,可以跟web_submit_data互换。这种写法更利于拼接参数。

方法一适合一些xml结构的根元素下的子元素同处于根元素下面,且子元素数目较少的情况下,如果xml结构比较复杂,比如说根元素下面有多级子元素,或者xml树结构分叉较多的时候,我们可以先把xml拼接成一个字符串然后通过web_custom_request()向服务器 发送请求。

我们在做接口功能测试的时候会很注意接口的应答报文的信息,这时候我们可以通过LoadRunner的日志信息查看或者可以通过web_reg_find()或者web_find()这样的API函数来统计接口的运行结果,推荐使用web_reg_find(),web_reg_find()和web_find()区别请大家 百度一下,详细信息太多,在这里不便叙述。

因为web_reg_find()是注册型函数,所以应该放在web_submit_data()或者web_custom_request()的前面。

如:

在脚本的最后我们可以对查询字段的信息进行统计

总结:用LoadRunner做接口测试无法做到把接口参数和程序分理,接口的参数可以通过参数化的方法来实现对同一个参数多个数据的测试。参数化后的测试数据保存在此脚本的保存位置下。

方法二、通过Java + Fitnesse实现接口功能测试

什么是Fitnesse?

FitNesse是一套软件开发协作工具 FitNesse是帮助大家加强软件开发过程中的协作的工具。能够让客户、测试人员和开发人员了解软件要做成什么样,帮助建议软件最终是否达到了设计初衷。

FitNesse是一套软件测试工具 从另外一个角度看,FitNesse是一个轻量级的、开源的框架,能够帮助开发团队方便的定义验收测试(Acceptance Tests),通过在web页面上简单的输出和预计输出的表格就可实现,并且可以运行这些测试以确定是否通过。

FitNesse是wiki可以很方便的创建和编辑页面 FitNesse是一个web服务器不用过多的安装配置,很方便使用。

我习惯使用Eclipse集成开发工具写测试代码,用fitnesse准备接口的测试数据,由此实现接口的测试数据和测试程序的分离。

关于Fitnesse的使用大家可以参考官方网址。Fitnesse的四种常见表格是:

ColumnFixture,ActionFixture,Decision Table,ScriptTable。在工作中ColumnFixture用的最多。

下面的程序使用的是ColumnFixture表格。

总结:上述两种方法都是对接口做功能测试的方法,使用LoadRunner做接口测试的时候可以不用让开发人员提供测试人员相应的UI测试页面,直接调用接口做测试,但是测试程序和数据的依赖性太强;使用Fitnesse做接口测试的时候可以实现测试程序和数据的 分离,只用点击Fitnesse界面的Test按钮就可以实现测试,测试消耗时间比使用LoadRunner做接口测试少。

还有一种就是现在自己在用的:

直接带参数自己写一个Test类 里面去写测试方法 看能返回你要的参数不 能返回就成功了

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!

相关推荐
java亮小白19974 分钟前
Spring循环依赖如何解决的?
java·后端·spring
飞滕人生TYF11 分钟前
java Queue 详解
java·队列
chnming198712 分钟前
STL关联式容器之map
开发语言·c++
进击的六角龙14 分钟前
深入浅出:使用Python调用API实现智能天气预报
开发语言·python
檀越剑指大厂14 分钟前
【Python系列】浅析 Python 中的字典更新与应用场景
开发语言·python
湫ccc22 分钟前
Python简介以及解释器安装(保姆级教学)
开发语言·python
程序伍六七25 分钟前
day16
开发语言·c++
wkj00130 分钟前
php操作redis
开发语言·redis·php
武子康32 分钟前
大数据-230 离线数仓 - ODS层的构建 Hive处理 UDF 与 SerDe 处理 与 当前总结
java·大数据·数据仓库·hive·hadoop·sql·hdfs
武子康34 分钟前
大数据-231 离线数仓 - DWS 层、ADS 层的创建 Hive 执行脚本
java·大数据·数据仓库·hive·hadoop·mysql