1. 背景概述
服务器接口文档链接:https://github.com/xlink-corp/xlink-sdk
2. Jmeter的下载安装
2.1 Jmeter官方下载地址:http://jmeter.apache.org/download_jmeter.cgi
此处我们使用最新的3.0版本,直接集成了jsonpath等功能
2.2 Jmeter无需安装,下载之后只需解压即可。Jmeter是Java写的,运行的前提是需要安装JDK,3.0要求JDK1.7以上。JDK的安装此处不赘述。
2.3 配置相关参数
1)设置系统环境变量:JMETER_HOME,值是jmeter的安装路径,如E:\apache-jmeter-3.0
2)在系统环境变量CLASSPATH加上%JMETER_HOME%\lib;
3)Jmeter需要写注册表,否则启动会报如下错误。
方法:Windows+R打开运行,输入regedit,打开系统注册表,在HKEY_LOCAL_MACHINE\Software\JavaSoft下新建项“Prefs”即可。
2.4 在Jmeter安装路径bin目录下双击jmeter.bat,启动Jmeter,进入操作界面。
2.5 Jmeter 3.0版本在HTTP请求body data中使用的默认字体(Consolas)不支持汉字的显示,输入的汉字无法正确显示,解决方法:进入Jmeter安装目录bin路径下打开jmeter.properties文件,找到#jsyntaxtextarea.font.family=Hack这一行,把前面的#注释去掉,使其使用Hack字体即能显示中文。
3. 进行rest API测试(以用户身份接口为例)
3.1 POST类型(以注册邮箱账号为例)
a. 首先,用Jmeter创建一个测试计划第一步都是新建线程组。右键点击测试计划,选择“添加”->“线程”->“线程组”,添加一个线程组:
线程组是用来控制脚本执行次数的,可修改名称,其他先保持默认即可,创建好如下。
b. 线程组建好后,接下来就是添加实际测试内容。参看接口文档:
明确HTTP请求方式是POST、消息内容格式是Json,则下一步,添加消息头,声明消息格式为Json。
右键点击线程组,选择“添加”->“配置元件”->“HTTP信息头管理器”,添加消息头管理器:
进入消息头设置页面,点击“添加”,输入消息头参数名称为“Content-Type”,参数值为“application/json”,点击保存。
c. 接着添加取样器HTTP请求。右键点击线程组,选择“添加”->“Sampler”->“HTTP请求”,添加HTTP请求:
d. 在新建的HTTP请求输入各项内容:
1)编辑名称和注释;
2)输入服务器域名或IP,注意此处前面不要添加Http://,否则运行会报“URI can't be null”的错误;
3)HTTP请求选项卡设置用Java执行,协议输入HTTP,方法为POST,Content encoding默认是UTF-8,可填可不填;
4)输入API路径,即文档中的/v2/user_register;
5)输入消息内容,Json Content放在Body Data中,按要求修改各个key值;
6)保存,则整个HTTP Post请求创建完毕。参看下图:
e. 添加察看结果树,查看请求结果
右键点击线程组,选择“添加”->“监听器”->“察看结果树”:
添加后点击启动按钮,即可在察看结果数中查看Request和Response的结果,成功或失败都会有相应的信息提示。多次执行时也可点击菜单栏的清除按钮,清除之前执行数据。
3.2 其他类型及注意事项
a. 首先要明确请求的方法,是POST、GET、PUT、DELETE…中的哪一种,可简单分辨为:一般向服务器请求数据需带有参数或上传文件的用POST、无需传参用GET(做法参看例子7.获取用户信息)、修改数据用PUT(做法参看例子8.修改用户基本信息)、删除数据用DELETE。
b. Jmeter执行测试计划是按顺序执行,可按接口顺序写下来,如果消息头格式一致,则无需每个HTTP请求添加单独的消息头;如果不一致,则新建消息头,新消息头下面的HTTP请求会采用上面最近一个消息头。
c. Jmeter测试计划的每个项都可以直接右键复制粘贴,可减轻各个请求重复设置内容的工作量。
d. Content的数据也可以直接放在Parameters里面去发送,直接把整个Json放在一个参数里面传送。
e. Content的数据如果是文件,就可以使用第3个方式Files upload,选择本地文件,直接上传整个文件。
3.3 Jmeter参数化方法
在各个接口测试中,有时下一个接口的Content或Header里面的参数是上一个接口Response返回的Json里面的数据,此时我们需要能将Response的Json的key值提取出来,并赋给某个变量,在其它接口中直接引用。
Jmeter提供三种提取Json数据的方法:
a. 通过正则表达式提取(以从登录与认证接口提取token为例)
右键点击HTTP请求,选择“添加”->“后置处理器”->“正则表达式处理器”:
设置
1) Applyto:默认即可
2) 检查的响应字段:可选需检查的字段,默认主体即可
3)引用名称:即声明一个变量来保存提取出的数值,在后续可直接通过该变量来引用提取的值
4)正则表达式:"access_token":"(.+?)",()里面的就是要提取的值
5) 模板:$1$代表取第一组数据,用$$引用起来,如果在正则表达式中有多个提取表达式(多个括号括起来的内容),则可以是$1$,$2$等等,表示取解析到的第几个值给上面设置的参数。
6)匹配数字:0代表随机取值,1代表全部取值,这里设为1即可。
7)缺省值:如果参数没有取到值,则可以使用缺省值。此处不需设置。
提取出的变量值在其它地方通过${}来引用,例如上面的${access_token}
b. 通过JsonPath提取
右键点击HTTP请求,选择“添加”->“后置处理器”->“Json Path PostProcessor”:
设置:
1) Applyto:默认即可
2) Variable names:变量名称,即声明一个变量来保存提取出的数值,在后续可直接通过该变量来引用提取的值
3)Json Path expressions:Json Path表达式,$.access_token,$表示根目录,.表示当前节点,有关Json Path的语法可自行上网查资料
4)Match Numers:匹配数字,即匹配取出的第几个值,可不写
5)Default Values:缺省默认值,可不写
同样,提取出的变量值在其它地方通过${}来引用,例如上面${access_token}
c. 通过BeanShell编写脚本提取
BeanShell是一个轻量级的面向 Java 的脚本语言。 BeanShell Post Processor 允许使用标准的 Java 语法来处理 Json 数据。右键点击HTTP请求,选择“添加”->“后置处理器”->“BeanShell PostProcessor”:
输入相应设置及脚本,也可达到提取json数据的目的。