主题
并发模拟工具
Jmeter
是什么
Apache JMeter 是一个开源的负载和性能测试工具,可以用来测试各种类型的服务器、网络或对象模拟高并发负载,并分析在不同压力条件下的整体性能。
主要特点包括:
- 多协议支持:除了HTTP/HTTPS外,还支持FTP、SMTP、LDAP、TCP、WebService等多种协议的性能测试。
- 动态加载测试:可以通过创建线程组模拟多个并发用户对服务器进行访问,从而评估系统的承载能力和响应时间等性能指标。
- 脚本录制与回放:通过代理服务器录制用户的浏览器操作,然后生成可编辑、可扩展的测试计划(脚本)。
- 断言和验证点:可以在请求后添加断言来检查服务器响应内容是否符合预期,例如基于正则表达式的匹配或者特定状态码的返回。
- 结果报告与可视化:提供丰富的图表和报告选项,便于查看吞吐量、响应时间分布、错误率等性能统计信息。
- 分布式测试:可通过多个JMeter服务器节点同时发起负载,以实现更大规模的并发测试。
- 插件扩展性:具有强大的插件系统,允许开发者根据需要扩展新的功能和协议支持。
启动
解压后,执行jmeter.bat/jmeter.sh即可
使用方法
1、添加线程组: 右击Test Plan -> Add -> Thread(Users) -> Thread Group
2、添加请求:右击刚创建的线程组,Add -> Sampler -> HTTP Request
3、添加监听器:右击刚创建的请求,Add -> Listener -> 添加View Results Tree、Summary Report
4、运行
5、分析测试结果
Summary Report
View Results Tree
Postman
Postman对于后端开发的重要性体现在以下几个方面:
接口测试:
- 后端开发者通常需要创建和维护API(应用程序接口),而Postman是一个强大的接口测试工具,可以方便地模拟各种HTTP请求(GET、POST、PUT、DELETE等)来测试这些接口的功能性和正确性。
- 开发者可以通过Postman输入不同的请求参数、设置HTTP头部信息、发送JSON或表单数据等方式,验证服务器对不同请求的响应情况,确保接口按照预期工作。
调试与问题定位:
- 当后端服务出现问题时,Postman能够帮助开发者快速构造和发送自定义请求以重现问题,从而更有效地进行调试和问题定位。
RESTful API设计与开发:
- 在实现RESTful架构的API时,Postman可以直观地展示URL结构、HTTP方法与资源之间的关系,有助于设计和遵循最佳实践。
自动化测试:
- Postman还支持编写和运行集合(Collections),可以组织成一套完整的测试用例,并通过Newman等工具进行持续集成环境下的自动化测试。
协作与文档化:
- 开发团队可以通过共享Postman Collection以及生成详细的文档,使团队成员之间更好地理解和使用API。Postman的可视化界面及Mock Server功能还能帮助团队在早期阶段就着手于接口的模拟和验证。
综上所述,Postman极大地简化了后端开发人员在构建和测试API时的工作流程,提高了工作效率,降低了出错概率,并促进了团队间的协作与沟通。
设置环境
选择Environments -> new Environment
使用环境
选择环境后,就可以使用定义的变量,方便测试环境和正式环境的接口切换
发起并发测试
选择需要测试的接口,并设置iterations 为100次
测试结果
AB
使用说明: https://httpd.apache.org/docs/2.4/programs/ab.html
安装
shell
yum -y install httpd-tools
使用
模拟5个用户共发送100次请求
shell
(base) [root@diyai ~]# ab -n 100 -c 5 http://127.0.0.1:443/btrace/testArgs
This is ApacheBench, Version 2.3 <$Revision: 1430300 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/
Benchmarking 127.0.0.1 (be patient).....done
Server Software:
Server Hostname: 127.0.0.1
Server Port: 443
Document Path: /btrace/testArgs
Document Length: 62 bytes
Concurrency Level: 5
Time taken for tests: 0.010 seconds
Complete requests: 100
Failed requests: 0
Write errors: 0
Non-2xx responses: 100
Total transferred: 13800 bytes
HTML transferred: 6200 bytes
Requests per second: 9759.91 [#/sec] (mean)
Time per request: 0.512 [ms] (mean)
Time per request: 0.102 [ms] (mean, across all concurrent requests)
Transfer rate: 1315.30 [Kbytes/sec] received
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 0 0.0 0 0
Processing: 0 0 0.2 0 1
Waiting: 0 0 0.2 0 1
Total: 0 0 0.2 0 1
Percentage of the requests served within a certain time (ms)
50% 0
66% 0
75% 1
80% 1
90% 1
95% 1
98% 1
99% 1
100% 1 (longest request)
参数说明 | 值或结果 |
---|---|
总请求数量 (-n ) | 100 |
并发连接数 (-c ) | 5 |
目标URL | http://127.0.0.1:443/btrace/testArgs |
Server Software | 未提供 |
Server Hostname | 127.0.0.1 |
Server Port | 443 |
访问路径 | /btrace/testArgs |
文档长度 | 62 bytes |
并发级别 | 5 |
测试总耗时 | 0.010 秒 |
完成请求总数 | 100 |
失败请求数 | 0 |
写入错误数 | 0 |
非2xx响应数 | 100 |
总传输量 | 13800 bytes |
HTML传输量 | 6200 bytes |
每秒请求数 (平均) | 9759.91 [#/sec] |
单个请求平均时间 (ms) | 0.512 [ms] |
并发请求平均时间 (ms) | 0.102 [ms] |
传输速率 | 1315.30 [Kbytes/sec] |
连接时间(ms)
时间阶段 | 最小值 | 平均值 | 标准差 | 中位数 | 最大值 |
---|---|---|---|---|---|
Connect | 0 | 0 | 0.0 | 0 | 0 |
Processing | 0 | 0 | 0.2 | 0 | 1 |
Waiting | 0 | 0 | 0.2 | 0 | 1 |
Total | 0 | 0 | 0.2 | 0 | 1 |
请求完成时间百分比 (ms)
百分比阈值 | 完成时间 |
---|---|
50% | 0 |
66% | 0 |
75% | 1 |
80% | 1 |
90% | 1 |
95% | 1 |
98% | 1 |
99% | 1 |
100% | 1 |
根据输出结果,性能指标
- 所有100个请求均成功完成且无失败或写入错误。
- 并发级别为5的情况下,整个测试耗时仅0.010秒,表明服务器处理速度非常快。
- 每秒请求处理能力达到9759.91个请求,平均每个请求的处理时间为0.512毫秒,在并发场景下的单个请求平均时间为0.102毫秒。