如何用jmeter做接口测试?
1、 设计操作步骤:这里我们创建HTTP请求即可
添加——Sampler(取样器)——HTTP请求
2、 设计数据用例:由于jmeter只支持CSV文件,所以设计测试用例时记得生成CSV格式的,将CSV导入到jmeter中(这部分在性能测试里面叫做jmeter的参数化)
添加——配置元件——CSV数据文件设置
3、 断言,添加一个响应断言即可(也可以加别的)
添加——断言——响应断言
4、 执行,添加一个结果树
添加——监听器——查看结果树
一、jmeter工具测试接口时使用步骤:
首先要添加线程组(添加--Threads(Users)--线程组)
测试计划右键--添加--Threads(Users)--线程组(线程数就是并发数)
1、添加HTTP请求(添加——Sampler(取样器)——HTTP请求)
线程组右键--Sampler--HTTP请求--填写域名或IP、端口默认80,选择请求方式get,输入接口url域名后面的路径以及?后面的参数及值,最上面的请求名称可以进行修改--点击上面的运行按钮去查看。
2.添加csv数据文件设置:添加——配置元件——CSV Date Set Config
3、断言:添加一个响应断言。(添加——断言——响应断言)
响应断言: 右键线程组--添加--断言---响应断言
4、执行,添加察看结果树(添加——监听器——察看结果树)
查看:右键线程组--添加--监听器--察看结果树--点击上面的运行按钮,查看返回值
5、添加断言结果:右键线程组--添加-----监听器----断言结果
6、添加添加cookie
说明:避过登录,直接请求接口
查看cookie信息:
一般要加到最前面就行,其他什么都不用写。(这里其实用不上。在需要自动管理cookie和手动管理cookie时用。)
添加cookie管理器:
线程组(添加)-----配置元件----HTTP Cookie 管理器
二、接口测试的情况
聚合数据:https://www.juhe.cn/ucenter/account
选择:我的接口----AppKey(后面要添的)----接口(点击)
看API文档:
看错误码参照:
1、get请求方式:
接口地址:http://v.juhe.cn/weather/index
使用步骤:
1)选择HTTP请求--------服务器名称(域名)或ip:v.juhe.cn----------协议:http---------- 方法:GET-------- 路径:/weather/index-------- Parameters:
cityname 上海
key 32d1b2ada7885afbb3a0a516d9298bf
2)选择察看结果树-----点击(上面绿色)三角形:开始运行程序--------点击两把扫帚:清除下面的结果
查看: 点击下面的HTTP请求-----响应数据(可以根据这里面的数据进行断言)例如:error_code:10001
有可能会遇到这样的问题:报了一个下面的错,没有显示上面的响应数据。
原因是它的接口参数升级了:cityname参数需要编码后传过去。
解决办法:把第一个参数(cityname)后面的小勾勾上就好了。
小技巧:点击下面的HTTP请求-----请求:(GET方式参数是放在url里的,排错的时候,也可以把这个地址放在浏览器运行)
3)响应断言:测结果可包含10001,输入10001即可。
4)断言结果:下面只显示HTTP请求。说明上面的响应断言判断的是对的。如果响应断言判断错误,下面就会出现错误信息。
例如:在响应断言中输入:10002。看断言结果就显示响应断言失败,10002不在里面。
2、post请求方式:
接口地址:http://v.juhe.cn/weather/geo
使用步骤:
1)选择HTTP请求--------服务器名称(域名)或ip:v.juhe.cn----------协议:http---------- 方法:POST-------- 路径:/weather/geo------- Parameters:
lon 116.39277
lat 39.933748
dtype json
key 32d1b2ada7885afbb3a0a516d9298bf
2)擦看结果树:运行三角形。就有下面的。error_code:10001。是key值错了。(因为请求次数有限,所以故意写错。)参数写错,也是一个测试用例。
可以看出:post请求参数是和url分开的,放在Post data里面的。
3 参数化
当使用JMeter进行测试时,测试数据的准备是一项重要的工作。若要求每次迭代的数据不一样时,则需进行参数化,然后从参数化的文件中来读取测试数据。
python manage.py runserver 0.0.0.0:8000
3) 在windows浏览器输入:http://192.168.44.133:8000/index 就可以访问了。
方式一、通过读取csv、txt文件获取数据
步骤如下:
- 1.添加csv数据文件设置(配置元件)
- 2.csv中填写用数据路径和变量名(变量名随便起的)
- 3.http中填写参数值:${变量名}
- 4.线程组:循环次数设置3次。(按文件行数来读取数据)
1)选中线程组--->配置元件--->CSV Data set config
2)CSV Date Set Config :填写数据路径和变量名
Filename:G:2020软件测试代码3_接口及性能测试接口测试day2/data1.txt (数据路径)
变量名:user name(随便取得)
变量名之间用英文逗号隔开
3)HTTP请求中:使用${变量名}来读取文件每一列内容。服务器名称或IP:192.168.44.133------端口:8000(这里一定要添的) ------username:${user} pwd:${name}
4)data1.txt: 第一行:user读的是:zyc name读的是:123456;第二行:user读的是hjhf name读的是232;依次类推。(注意:通过文件的行数来决定读取内容)
5)通过配置元件读取CSV:线程组:设置循环次数,3次。
6)查看:察看结果树,有三个HTTP请求。这里红色的没关系,因为是我没开启TT项目,所以就不能访问。只要看发送的username pwd获取的数据。
补充:HTTP Cookie管理器,一般要加到最前面就行,其他什么都不用写。(这里其实用不上。在需要自动管理cookie和手动管理cookie时用。)
他可以像浏览器一样存储和发送cookie,如果你要发送一个带cookie的http请求,cookie manager会自动存储该请求的cookies,并且后面如果发送同源站点的http请求时,都可以用这个cookies。每个JMeter线程都有自
己的“cookie存储区域”。
现在对于JMeter来说,一个测试计划只能有一个cookie管理器。因为当多个magager存在时,JMeter目前还没有方法来指定使用那个manager。同时,一个cookie manager中的存储的cookie也不能被其他cookie
manager所引用,所以同一个计划中不建议使用多个cookie manager
方式二、通过函数助手读取csv、txt文件
步骤如下:
- 1.选项---函数助手对话框---CsvRead函数
- 2.填写csv文件的位置,读取的第几列(从0开始),点击生成。
- 3.复制到http的参数值:也是${变量名}
- 4.线程组:线程数设置3次(按不同用户读取文件内容)
1)选项菜单-->函数助手对话框--->__CSVRead函数
2)CSV文件的位置:G:2020软件测试代码3_接口及性能测试接口测试day2data1.txt
3)按照上图1-2-3的步骤
操作:4中填写文件的位置,5中填写要读取的列的位置,第一列为0。点击【生成】按钮,拷贝字符串,去HTTP请求中替换要参数化的值。
4)注意:函数助手是按照不同用户读取文件内容
5) 查看:察看结果树
方式三、通过用户参数设置数据
步骤如下:
- 1.添加用户参数(前置处理器)
- 2.添加用户和变量构造多条数据
- 3.线程组:线程数设置为3(按不同用户读取文件内容))
- 4.http中填写变量:${变量名}
1)选中线程组--->添加前置处理器中的用户参数选项
2)通过添加变量和用户来构造多条数据
3)注意:是由不同的用户决定读取的内容
4)HTTP请求中也是写变量。
5) 查看:察看结果树
1. (按不同用户读取文件内容)