Loading... # 压力测试文档 ## 1. 测试目的 此测试在对 Spring Boot 中的微信支付接口进行压力测试,评估系统在高并发情况下的性能表现,以确保系统能够稳定地处理大量并发请求,并且保证支付接口的安全性。 ## 2. 测试环境 - 测试对象:订单创建、支付接口、支付成功回调 - 测试工具:Apache JMeter - 测试环境:测试环境 ### 2.1 测试流程 ```mermaid graph TD; A[用户] -->|发起支付请求| B[JWT认证]; B -->|认证通过| C[生成订单]; C -->|判断是否需要限流| D[判断是否需要限流]; D -->|是| E[Redis限流]; E -->|限流通过| F[调用微信支付接口]; F -->|支付成功| G[更新订单状态]; F -->|支付失败| H[返回支付失败信息]; E -->|限流失败| I[提示请求繁忙]; D -->|否| J[返回认证失败信息]; ``` ## 3. 测试场景 ### 3.1 支付流程测试 - 场景描述:模拟用户进行支付操作,包括下单、调用微信支付接口、支付回调等步骤。 - 测试步骤: 1. 用户下单 2. 根据订单号生成支付二维码。 3. 模拟支付回调请求 4. 更新订单信息(雷达标绘有效期 购买时间等) ### 3.2 并发用户压力测试 - 场景描述:模拟多个并发用户同时访问支付接口,测试系统在高并发情况下的性能表现。 - 测试步骤: 1. 设置并发用户数量,逐步增加并观察系统响应时间和吞吐量。 2. 测试不同并发用户数量下系统的性能表现。 ## 4. 测试指标 - 平均响应时间 - 最大响应时间 - 吞吐量(Requests per Second) - 错误率 - CPU 和内存利用率 <br/> ### 4.1测试参数 > ### 开启 3000 条线程 循环两次 > ### 测试前数据 ![2024-03-12T12:20:05.png][1] ![2024-03-12T12:21:09.png][2] > ### 测试时 ![截图](attachment:20d1d1ccbeea1c9db659a2cbc40e5be6) <br/> <br/> ## 5. 测试结果 - 测试总请求个数 18000 = (3000 x 2 x 3) - 全部请求 5s 内请求成功 0 个异常 ![截图](attachment:5be7410600cb9c3c5d6cdac49db963cb) <br/> 样本(Samples):取样器请求的数量 平均值(Average):请求(事务)的平均响应时间 最小值(Min):请求的最小响应时间 最大值(Max):请求的最大响应时间 标准偏差(Std.Dev): 响应时间的标准方差 异常 %(Error):请求(事务)错误的数量 吞吐量(Throughput):每秒取样器执行的数量,相当于 TPS 接收 KB/sec(Received KB/sec):每秒接收的千字节数 发送 KB/sec(Sent KB/sec):每秒发送的千字节数 平均字节数(Avg.Bytes):取样结果返回的平均大小 ## 6. 测试结论 - 根据Jmeter结果,评估系统在高并发情况下的性能表现良好 <br/> - 能确保系统能够稳定地处理大量并发请求,得益于Spring Security, 支付接口安全性得到保障。 <br/> - 尽管性能和安全性已经达到了较好的水平,但总是有进一步优化的空间。比如后续可以使用 RabbitMQ 异步处理下单,可以进一步提升系统的性能和可靠性,尤其在高并发场景下能够有效地降低系统负载, 提高系统吞吐量、但仅限于在超高的一个并发量(很多用户) 才能体现 目前不是必须 可以作为未来优化 <br/> - 另外 下单接口涉及到需要获取产品信息 每一次请求都议会查询数据库获取数据(雷达标绘) 比如 商品描述 商品价格 金额等 在高并发下会对数据库造成一定压力 解决方式: 可以对商品数据提前预热到redis缓存中 。 一样目前不是必须 可以作为未来优化 [1]: https://likefr.com/usr/uploads/2024/03/1350060898.png [2]: https://likefr.com/usr/uploads/2024/03/2606306742.png 最后修改:2024 年 03 月 12 日 © 允许规范转载 赞 1 如果觉得我的文章对你有用,请随意赞赏
1 条评论
有测试文件吗?