前言
我们在压测登录接口的时候,如果只用一个账号去设置并发压测,这样的结果很显然是不合理的,一个用户并发无法模拟真实的情况。
如果要压测登录接口,肯定得准备几百,甚至上千的账号去登录,测试的结果才具有可参考性。
案例:
我现在有一个登录接口,登录接口文档基本信息
访问地址:http://127.0.0.1:8080/app/mobile/api/user/login
请求类型:POST
请求头部:Content-Type: application/json
我现在要压测这个登录接口,需设置30,50,80,100的并发数,那至少需要准备100个账号和密码
一、先保证一个登录接口能够登录成功
注册接口:
先保证一个账号和密码的时候能正常的请求成功
添加HTTP信息头管理器,添加 post 请求类型 Content-Type: application/json
二、测试数据准备
上面的单个用户能请求成功,接下来准备测试数据,自己先去注册批量账号和密码,我这里以11个账号和密码为例
18257008001,123456
18257008002,223456
18257008003,323456
18257008004,423456
18257008005,523456
18257008006,623456
18257008007,723456
18257008008,823456
18257008009,923456
18257008000,023456
18257008010,103456
账号和密码按以下格式,中间逗号隔开,保存为data.txt
建议大家平时使用时,用txt文件,尽可能不用csv文件。
原因有2点:
-
功能使用角度:txt文件内容默认保存的文件编码utf-8,csv文件内容默认保存文件编码,不是utf-8,csv文件设置元件,在使用时,选择【utf-8】可能出现中文乱码
-
从性能的角度,txt文件系统资源消耗少于csv文件
三、CSV数据文件设置
添加配置元件,CSV数据文件设置
文件路径:可以为绝对路径,也可以为相对路径,
相对路径
你的运行脚本 jmx文件保存在哪,就从这个地方开始
在/ \都可以,建议./使用
1.csv路径要使用相对路径
2.jmx文件和csv文件要放在一起给对方
导入txt的数据文件,用2个变量nmobile和psw中间参数默认是逗号隔开
CSV数据文件设置参数说明:
-
文件名 导入你的txt文件绝对路径,或者相对路径建议使用相对路径 文件编码 一般选UTF-8
-
变量名 你自己设置的变量,如果只有一个变量那就只写一个,有多个变量的时候中间用英文的逗号隔开
-
忽略首行 如果你的第一行就是测试的账号,默认False就行,如果第一行是title栏那就设置True忽略
-
分隔符 也就是你txt文件里面分割参数的符合,一般用英文逗号(英文逗号,或者tab 分隔(对应\t)) 是否运行带引用号 一般不用改,默认Fasle
-
遇到文件结束时循环它会循环从txt文件取值,如果全部取完了想继续那就是True,如果想文件的数据用完就结束,比如注册不可以重复用,那就设置False
遇到文件结束符再次循环
True 是的 再循环 会在文件最后一个值被用之后,重新开始取值
False 不循环 会在文件最后一个值被用之后,一直用(但是文件取值是空)
遇到文件结束符停止线程
False 不停止,会一直运行下去
True:是,会停止运行 -
线程共享模式 默认所有的线程就行
线程共享模式
1.all threads所有线程:所有线程按顺序取文件就行
例如 t1(第一个用户)取 row1(第一行),t2取row2…
2.current thread group当前线程组:所有线程组中的线程按顺序取行
例如 g1(第一个线程)t1(第一个用户)取row1(第一行), g1 t2取row2 … ; g2(第二个线程) t1取row1, g2 t2取row2 … ;
3. current thread当前线程
例如 t1取row1 t2取row1 t3取row1
四、查看结果
比如我把线程数设置为4,一个线程数就是代表1个用户,循环测试为3次
查看结果会有12个登录结果,分别用不同账号去登录了