首先,接口是什么呢?
由于前端和后端之间需要频繁的交互,而这两者的开发语言通常是不一样的,这就需要一种方式来实现它们之间的交互。
而接口可以从数据库取数据展示给客户端,也可以向数据库插入数据反馈给服务端。
所以接口可以理解为:通过从数据库取数据、插入数据,来实现服务端和客户端之间交互的工具。
知道了什么是接口,接下来我们来学习接口测试!接口测试,其实就是功能测试,而且比一般的功能测试还要简单。
测试接口需要知道那些信息呢?
1、接口的请求url
2、请求参数
3、请求方式 (分为get/post/put/delete等,我们主要认识get和post请求)
先来说一下get请求,get请求是不需要借助任何的工具,在浏览器里面就可以发请求的。下面先来小试牛刀一下,如下是接口说明
那么我们怎么在浏览器发送请求呢?这里再说一下get请求的格式是“url?参数名=参数值”如果是多个参数就用“&”分开,例如 “url?参数名=参数值&参数名2=参数值2”。下面我们就在浏览器里按照这种格式测试一下,输入http://api.nnzhp.cn/api/user/stu_info?stu_name=小白,然后发送请求,我这里得到以下返回值
对比一下,和接口说明中的返回值格式一致,说明接口调用成功了!
然后我们再来做一下post请求格式的,同样的,打开接口说明
post请求格式是不能直接用浏览器发送请求的,那么我们就需要工具来做测试了,常用的接口测试工具就是
postman和jmeter,我们先使用postman测试一下这个接口,后面再说jemter。
打开postman,参照下面的方式输入请求url,并且在Body按照接口说明输入需要的参数名和参数值
然后点击“Send”发送请求,得到返回值如下
对比,和接口说明中返回值格式一致。
JMETER
简单的说完比较常用的两种接口,下面来学习一下jmeter。jmeter是性能测试工具,也可以制作脚本实现自动化测试。
打开jmeter,先来创建一个线程组
然后查看线程组,
里边可以设置线程数、并发数等操作。我们要测试接口,就在线程组下面在添加一个HTTP请求,
为了能查看接口请求的结果,我们再添加一个 查看结果树。
完成以上工作后,我们测试一个新的接口,查看一下接口说明
入参是json格式,在jmeter中把接口的url,请求方式以及参数写好
这里参数需要以json的格式输入到Body Data中。可以看到我这里使用了和,这个只要在函数助手中生成随机的时间和随机数就可以了。然后发送请求,在查看结果树中查看
由于我在线程组中设置了五次循环,所以这里有五个结果。
接下来介绍另外一个功能,HTTP cookie管理器 和 HTTP 信息头管理器 这里使用一个需要用到cookie的接口,查看一下这个接口的说明
*在线程组中添加一个HTTP请求,然后在这个请求下边添加一个cookie管理器/信息头管理器(两者在这里的用法是一样的,只需要启用一个就行了)
cookie管理器
信息头管理器
在配置中都按照借口说明配置参数,这里又用到了 分别是用户名和cookie值。这里首先需要介绍一下文件参数化
*文件参数化,先创建一个可编辑文本,格式要像这样,中间用逗号隔开(也可以用别的,可以自己定义)。
然后在线程组下边添加一个 ,配置文件路径和对应的参数名
这样配置完成后,所有线程组下的HTTP请求就都可以使用其配置到的文件中的参数值了。还有一个问题,cookie值从哪里来呢?上边介登录接口时,返回值中有一个sign,这个sign对应的值就是这里我们需要的cookie,也就是服务器端对应的session。那么我们就来调用一下登录请求,获取一下cookie值吧!
这里我已经在线程组中配置好了登录接口的请求,另外我们还需要在登录请求下添加一个 ,查看一下登录接口的返回值的json格式,然后我们在 jp@gc - JSON Path Extractor 里边根据返回值格式,配置cookie的获取方法
这样在登录后sessionid就是可用的cookie值了。
同时启用登录和学生金币充值两个接口发送请求,查看结果树
可以看到,接口请求成功,并且得到了返回值。
但是呢这些返回值有一些是没有操作成功的,怎么来判断每次请求的操作是否成功了呢?---使用断言 它可以自动帮你校验结果返回的是否正确。
例如,我们在登录接口下添加一个相应断言,用户登录成功后会返回userId,那么我们就通过校验是否返回userId来判断。
如上图,启用这个相应断言,然后再次发送请求,查看结果树
好了,就能看到哪些请求操作是成功的,哪些是失败的了。
有的同学使用jmeter可能会出现乱码的现象,最后再说一下这个解决办法:
1、解决jmeter返回有乱码
在jmeter.properties文件中最下面加入sampleresult.default.encoding=UTF-8
重启jmeter
2、bodydata里面中文显示不出来
在jmeter.properties文件中最下面加入jsyntaxtextarea.font.family=Hack
重启jmeter
以上就是本次分享的学习内容,精彩未完,待续。。。