如何用jmeter做接口测试?
首先要添加线程组:测试计划右键--添加--Threads(Users)--线程组(所有的操作都属于一个线程)
1、 设计操作步骤:添加HTTP请求
线程组右键——添加——Sampler(取样器)——HTTP请求
2、 执行,添加一个察看结果树
线程组右键——添加——监听器——察看结果树
点击上面绿色三角符号进行运行,下面Text :HTTP请求,点进去看看(取样器结果、请求、响应数据)
3、 断言,添加一个响应断言
线程组右键——添加——断言——响应断言
输入10022
4、 添加一个断言结果
线程组右键——添加——监听器——断言结果
只显示HTTP请求,说明上面的响应断言判断是对的。如果错误会显示错误信息。
5、参数化:添加csv数据文件设置
线程组右键——添加——配置元件——CSV Date Set Config
设计数据用例:由于jmeter只支持CSV文件,所以设计测试用例时记得生成CSV格式的,将CSV导入到jmeter中(这部分在性能测试里面叫做jmeter的参数化)
6、 添加一个HTTP Cookie管理器
线程组右键——添加——配置元件——HTTP Cookie管理器
7、 添加一个正则表达式提取器
正则表达式提取器:(open的HTTP请求)右键——添加----后置处理器---正则表达式提取器。一般配合fiddler抓包使用。
场景:访问两个url。访问第一个url,返回usersession。访问第二个url,带着usersession参数访问。
两个HTTP请求平级,第一个为open打开HTTP,第二个为login登陆HTTP。在第一个HTTP下面一级增加正则表达式提取器。
小总结:
1. 添加线程组、HTTP请求和察看结果树就能构建最简单的接口测试。
2.响应断言和断言结果是配套使用的。
3.CSV数据文件设置是为了参数化。
4.HTTP Cookie管理器是保存和发送cookie信息。应用场景:在需要登陆情况下的操作。
一、jmeter工具测试接口时使用步骤:
启动jmeter工具:需要双击打开电脑桌面jmeter.bat 图标。
首先要添加线程组:测试计划右键--添加--Threads(Users)--线程组(线程数就是并发数)
1、添加HTTP请求(线程组右键——添加——Sampler(取样器)——HTTP请求)
HTTP请求页面:
填写服务器名称(域名)或IP
端口号:默认80,可以不写
选择请求方式:get
路径:输入接口url域名后面的路径
Parameters:以及?后面的参数及值
最上面的请求名称可以进行修改。点击上面的运行按钮去查看。
2.添加csv数据文件设置:线程组右键——添加——配置元件——CSV Date Set Config(后面的参数化三种的一种)
3、添加一个响应断言(线程组右键——添加——断言——响应断言)
4、执行,添加察看结果树(线程组右键——添加——监听器——察看结果树)
查看:点击上面的运行按钮,查看返回值
5、添加断言结果:线程组右键——添加——监听器——断言结果
6、添加HTTP cookie管理器
说明:HTTP Cookie 管理器就像一个 web 浏览器那样存储并发送 cookie。
如果你有一个 HTTP 请求,其返回结果里包含一个 cookie,那么 Cookie 管理器会自动将该 cookie 保存起来,而且以后所有的对该网站的请求都使用同一个 cookie。
需要添加HTTP cookie管理器的应用场景:
在接口测试的应用场景中,一般对业务的操作都是基于用户登录情况下的操作。
比如:访问个人主页需要登陆的用户操作。就是登录成功后,获取登录成功后的Cookie的信息,然后在访问个人主页的时候,在请求头中带上Cookie的信息,已证明用户是登录成功后的操作。这时就需要添加 HTTP
cookie管理器来保存和发送cookie。
HTTP Cookie管理器实例:https://www.sohu.com/a/273255425_658944
页面查看cookie信息:右键——检查——Network——Headers——Request Headers
添加HTTP 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
端口号:没写,默认80
协议: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
端口:不写,默认80
协议:http
方法:POST
路径:/weather/geo
Parameters:
lon 116.39277
lat 39.933748
dtype json
key 32d1b2ada7885afbb3a0a516d9298bf
2)察看结果树:运行三角形。就有下面的。error_code:10001。是key值错了。(因为请求次数有限,所以故意写错。)参数写错,也是一个测试用例。
可以看出:post请求参数是和url分开的,放在Post data里面的。
小小总结:
1 在jmeter中,不管是GET请求还是POST请求。HTTP请求中必填的参数分别是:
1) 服务器名称或IP 2) 端口号(不写,默认是80) 3 )协议 4)方法 5)路径 6) 参数
(唯一区别:get请求的方法是GET post请求的方法是POST)
2 get请求,请求参数是拼接放在url中 post请求,请求参数是放在请求体中
(但不管怎样,都不影响写参数)
3 参数化
当使用JMeter进行测试时,往往是需要大量不同的测试数据,这时候就可以通过参数化来实现。
我的理解,就是将脚本中的某些输入值使用参数来代替,在下次使用的时候,只需要修改输入值既可。
使用场景:适合参数范围比较大的时候,可以方便用户随时修改参数数据。使用最多的就是参数化用户名和密码登录系统。
使用场景:可作为其他参数化方式的补充项,如:随机数生成的函${__Random(,)}
比如:随机数,可用于固定字符+随机数,修改传入参数的值
假如邮箱是163的,则用户名参数的值直接填入:${__Random(1,5,)}@163.com。我测试的邮箱是内网测试用的域名是180chen.cn,则填写${__Random(1,5,)}@180chen.cn
因为@察看结果树显示不出来,为了结果比较明显,就直接去掉@了
这里2就是变化的,每次都是1-5不一样的。所以每次都是随机数(1-5)加固定字符(180chen.cn)的拼接。
使用场景:适用于参数取值范围很小的时候使用。一般会将登录的用户账号和密码作为用户参数
python manage.py runserver 0.0.0.0:8000
![](https://img2020.cnblogs.com/blog/1277786/202004/1277786-20200404235238462-2026114685.png)
参数化可以是txt文件和csv文件。下面是都是以txt文件为例。但是也要会csv文件。先说怎么创建csv文件?
csv文件和txt文件的参数化使用方法是一模一样的。
1.新建——文本文档
每个字段之间都要用逗号隔开
2.文件——另存为
在打开的另存为对话框里,保存类型选择【所有文件(*.*)】,然后在文件名称那里填写:名称.csv,然后点击保存,如下图所示。
csv文件就完成了。
打开csv文件,打开方式-----记事本打开就可以了。也可以双击。默认是excel打开的。很多种都支持。
方式一、csv控件
步骤如下:
- 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_接口及性能测试\接口测试\day2\data1.txt
3)按照上图1-2-3的步骤
操作:4中填写文件的位置,5中填写要读取的列的位置,第一列为0。点击【生成】按钮,拷贝字符串,去HTTP请求中替换要参数化的值。
4)注意:函数助手是按照不同用户读取文件内容
5) 查看:察看结果树
补充:使用随机函数生成密码(实际中密码应该是用户设置的,要符合很多条件,这里只是单纯的学一下随机函数的使用。)
1.选项----函数助手对话框----_Random函数
填写最小值,最大值,生成,复制。
2.将密码这里修改就行
3.察看结果树:密码生成3个不同的密码。100-1000之间的随机数
方式三、通过用户参数设置数据
步骤如下:
- 1.添加用户参数(前置处理器)
- 2.添加用户和变量构造多条数据
- 3.线程组:线程数设置为3(按不同用户读取文件内容)
- 4.http中填写变量:${变量名}
1)选中线程组--->添加前置处理器中的用户参数选项
2)通过添加变量和用户来构造多条数据
3)注意:是由不同的用户决定读取的内容
4)HTTP请求中也是写变量。
5) 查看:察看结果树