说明:
1、以下为基于某业务单登陆场景并发测试实战过程,仅供参考;
2、本文为本站首发,转载及他用请注明出处,谢谢。
通过对某业务用户登录接口进行并发测试,模拟用户真实场景,发现服务器存在的服务瓶颈,辅助提升产品稳定性。
根据产品要求,系统必须支持150用户同时在线(具体参考名词解释内容)。本次测试只测试单登录场景,不任何带业务。
工具 | 版本 | 说明 |
---|---|---|
LoadRunner | V11 | 服务端压测工具 |
Nmon | X86_64_centos7 | 服务器指标监控工具 |
Python | V3.7.0 | 脚本设计语言 |
Pycharm | V2021.2 | 脚本编写工具 |
Postman | V7.34.0 | http接口调试工具 |
Fiddler | V5.0 | http接口抓包工具 |
Proxifier | V3.42 | 代理工具辅助抓取接口数据 |
Xshell | V6.0 | ssh客户端连,接服务器工具 |
Xftp | V6.0 | 服务器文件传输工具 |
Navicat Premium具 | V11.1.8(64bit) | 数据库脚本导入工 |
登录接口并发150,不带任何业务,使用LoadRunner进行虚拟用户并发压测,使用Nmon监控服务端性能指标,分析测试结果,给出优化建议。
http://192.168.1.5:8001/user/login
web_add_header("Accept","*/*;");
web_add_header("signature","abcdefg");
web_add_header("trace","abcdefg");
web_add_header("Content-Type","application/json");
{\"name\":\"{name}\",\"password\":\"c4ca4238a0b923820dcc509a6f75849b\"}"
其中用户名已被参数化,其中{name}是取得已经提前创建好的用户名,通过dat进行参数化
Action()
{lr_start_transaction("login");web_add_header("Accept", "*/*");web_add_header("signature", "abcdefg");web_add_header("trace", "abcdefg");web_add_header("Content-Type", "application/json");//web_add_header("EnablingCompression", "0");//web_add_header("Expect", "100-continue");web_custom_request("URL = http://192.168.1.5:8001/user/login","Method" = POST,"TargetFrame = ""Resource = 0","RecContentType = text/html","Referer = ","Snapshot = t3.inf","Mode = HTML","Body = {\"name\":\"{name}\",\"password\":\"c4ca4238a0b923820dcc509a6f75849b\"}",LAST);lr_think_time(1);lr_end_transaction("login", LR_AUTO);return 0;
}
性能指标 | 预期值 | 实际值 | 结论 |
---|---|---|---|
虚拟用户并发情况 | 150 | 150 | PASS |
事物响应时间 | 1s | 1s | PASS |
每秒点击次数 | 150 | 144 | PASS |
平均每秒点击次数 | 150 | 143 | PASS |
事物平均响应时间 | <1s | 0.032s | PASS |
磁盘IO | <80% | 81% | FAILED |
CPU使用率 | <80% | 40% | PASS |
内存使用率 | <80% | 68% | PASS |
通过前边的图标数据,我们整理出以上的测试数据,通过分析,除了磁盘IO有瓶颈外,其他指标全部OK。
登录接口+业务并发测试,满足客户真实的使用场景。
上一篇:使用Vue3实现一个可复制的表格
下一篇:java final关键字 详解