Skip to content

并发模拟工具

Jmeter

官网 下载地址

是什么

Apache JMeter 是一个开源的负载和性能测试工具,可以用来测试各种类型的服务器、网络或对象模拟高并发负载,并分析在不同压力条件下的整体性能。

主要特点包括:

  1. 多协议支持:除了HTTP/HTTPS外,还支持FTP、SMTP、LDAP、TCP、WebService等多种协议的性能测试。
  2. 动态加载测试:可以通过创建线程组模拟多个并发用户对服务器进行访问,从而评估系统的承载能力和响应时间等性能指标。
  3. 脚本录制与回放:通过代理服务器录制用户的浏览器操作,然后生成可编辑、可扩展的测试计划(脚本)。
  4. 断言和验证点:可以在请求后添加断言来检查服务器响应内容是否符合预期,例如基于正则表达式的匹配或者特定状态码的返回。
  5. 结果报告与可视化:提供丰富的图表和报告选项,便于查看吞吐量、响应时间分布、错误率等性能统计信息。
  6. 分布式测试:可通过多个JMeter服务器节点同时发起负载,以实现更大规模的并发测试。
  7. 插件扩展性:具有强大的插件系统,允许开发者根据需要扩展新的功能和协议支持。

启动

解压后,执行jmeter.bat/jmeter.sh即可

使用方法

1、添加线程组: 右击Test Plan -> Add -> Thread(Users) -> Thread Group

image-20240212184715045

2、添加请求:右击刚创建的线程组,Add -> Sampler -> HTTP Request

image-20240212185127225

3、添加监听器:右击刚创建的请求,Add -> Listener -> 添加View Results Tree、Summary Report

image-20240212185320803

4、运行

image-20240212185445653

5、分析测试结果

Summary Report

image-20240212185744620

View Results Tree

image-20240212185806949

Postman

下载地址

Postman对于后端开发的重要性体现在以下几个方面:

  1. 接口测试

    • 后端开发者通常需要创建和维护API(应用程序接口),而Postman是一个强大的接口测试工具,可以方便地模拟各种HTTP请求(GET、POST、PUT、DELETE等)来测试这些接口的功能性和正确性。
    • 开发者可以通过Postman输入不同的请求参数、设置HTTP头部信息、发送JSON或表单数据等方式,验证服务器对不同请求的响应情况,确保接口按照预期工作。
  2. 调试与问题定位

    • 当后端服务出现问题时,Postman能够帮助开发者快速构造和发送自定义请求以重现问题,从而更有效地进行调试和问题定位。
  3. RESTful API设计与开发

    • 在实现RESTful架构的API时,Postman可以直观地展示URL结构、HTTP方法与资源之间的关系,有助于设计和遵循最佳实践。
  4. 自动化测试

    • Postman还支持编写和运行集合(Collections),可以组织成一套完整的测试用例,并通过Newman等工具进行持续集成环境下的自动化测试。
  5. 协作与文档化

    • 开发团队可以通过共享Postman Collection以及生成详细的文档,使团队成员之间更好地理解和使用API。Postman的可视化界面及Mock Server功能还能帮助团队在早期阶段就着手于接口的模拟和验证。

综上所述,Postman极大地简化了后端开发人员在构建和测试API时的工作流程,提高了工作效率,降低了出错概率,并促进了团队间的协作与沟通。

设置环境

image-20240212181424694

选择Environments -> new Environment

使用环境

image-20240212181558609

选择环境后,就可以使用定义的变量,方便测试环境和正式环境的接口切换

发起并发测试

image-20240212182149009

选择需要测试的接口,并设置iterations 为100次

image-20240212182320678

测试结果

image-20240212182431636

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
目标URLhttp://127.0.0.1:443/btrace/testArgs
Server Software未提供
Server Hostname127.0.0.1
Server Port443
访问路径/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)

时间阶段最小值平均值标准差中位数最大值
Connect000.000
Processing000.201
Waiting000.201
Total000.201

请求完成时间百分比 (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毫秒。