目录
- 前言
- 一、压力测试概述
- 1.1 什么是压力测试
- 1.2 压力测试作用
- 1.3 压力测试工具
- 二、JMETER进行压力测试
- 2.1 步骤
- 2.1.1 安装和配置JMETER
- 2.1.2 创建压力测试计划
- 2.1.3 运行压力测试
- 2.2 注意点和问题(遇到的)
- 三、APIPOST进行压力测试
- 3.1 步骤
- 3.1.1 安装和配置 APIPOST
- 3.1.2 创建压力测试计划
- 3.1.3 运行压力测试
- 3.1.4 分析测试结果
- 3.2 注意点和问题(遇到的)
- 四、总结
前言
1.技术概述:
在软工团队作业——git实战初次接触到“压力测试‘这一概念,当时进行了限定时间内的学习和实践;在后面的alpha和beta冲刺里,也有进行一定的运用。
软件压力测试是一种性能测试的方法,目的是评估软件系统在高负载和极限条件下的行为和响应。通过施加超出正常使用范围的负载,压力测试可以揭示系统的性能瓶颈,发现潜在的故障点,从而确保软件在高并发、大流量等场景下的可靠性和稳定性。
一、压力测试概述
1.1 什么是压力测试
软件压力测试是一种性能测试的方法,目的是评估软件系统在高负载和极限条件下的行为和响应。通过施加超出正常使用范围的负载,压力测试可以揭示系统的性能瓶颈,发现潜在的故障点,从而确保软件在高并发、大流量等场景下的可靠性和稳定性。
1.2 压力测试作用
验证系统在峰值负载下的性能表现,为产品上线后的用户体验提供保障。
识别系统的性能瓶颈,指导架构优化和容量规划。
测试系统的容错能力,评估其在故障情况下的恢复能力。
为团队提供客观的性能指标,有助于做出明智的技术决策。
1.3 压力测试工具
Apache JMeter:
- 开源免费的压力测试工具
- 支持 HTTP/HTTPS、SOAP、REST、数据库等协议的压力测试
- 可以模拟大量并发用户,记录和分析测试结果
ApiPost:
- 功能强大的 API 测试平台,包含压力测试模块
- 支持模拟复杂的业务场景,如登录、文件上传等
- 提供实时监控和详细的报告分析
LoadRunner:
- 由 Micro Focus 公司开发的行业领先的压力测试工具
- 支持多种协议和技术栈,可以模拟复杂的业务场景
- 提供丰富的分析报告和故障诊断功能
二、JMETER进行压力测试
Apache JMeter 是一款功能强大的开源压力测试工具,广泛应用于 Web 应用、移动应用和 API 的性能测试。
2.1 步骤
2.1.1 安装和配置JMETER
安装后可用 -version指令检查是否安装完毕
运行方式可用命令行形式
2.1.2 创建压力测试计划
添加线程组(Thread Group)
- 在 JMeter 的主界面,点击左侧的"添加" > "线程" > "线程组"。
- 在弹出的线程组配置页面中,可以设置以下参数:
- 线程数(Number of Threads): 模拟的并发用户数。
- Ramp-Up 时间(Ramp-Up Period): 并发用户逐步增加的时间。
- 循环次数(Loop Count): 每个线程执行测试脚本的循环次数。

添加采样器(Sampler)
- 选择刚刚创建的线程组,点击右键 > "添加" > "采样器"。
- 根据需求选择不同类型的采样器,如 HTTP 请求采样器、SOAP/REST 请求采样器等。
- 在采样器的配置页面中,设置以下参数:
- 请求 URL
- 请求方法(GET、POST、PUT 等)
- 请求头
- 请求参数


配置请求参数
- 在采样器的参数配置页面,可以添加动态参数。
- 例如,可以从 CSV 文件读取数据,或者使用 JMeter 内置的函数生成随机数据。
- 这样可以模拟更加真实的业务场景。
添加监听器(Listener)
- 选择线程组或采样器,点击右键 > "添加" > "监听器"。
- 常用的监听器包括:
- 察看结果树(View Results Tree): 查看每个请求的详细响应数据。
- 聚合报告(Aggregate Report): 生成汇总的性能指标报告。
- 图形结果(Graph Results): 以图表形式展示性能数据。
- 监听器可以帮助我们分析测试结果,找出性能瓶颈
2.1.3 运行压力测试
- 在线程组中设置并发用户数和请求频率。
- 点击 JMeter 界面上的"开始"按钮,开始压力测试。
- 测试过程中,你可以实时查看监听器中的测试结果。
- 测试结束后,JMeter 会生成一个详细的测试报告。


2.2 注意点和问题(遇到的)
Q1.大型压力测试建议使用命令行运行,指令为:
打开命令提示符或终端窗口。
进入 JMeter 的 bin 目录;运行以下命令启动 JMeter 的命令行模式:
Windows: jmeter.bat
macOS/Linux: ./jmeter
加载压力测试计划文件。您可以使用以下命令加载 JMeter 测试计划:
jmeter -t <test_plan_file.jmx>
将 <test_plan_file.jmx> 替换为您的 JMeter 测试计划文件名。
运行压力测试:
jmeter -n -t <test_plan_file.jmx> -l <result_file.jtl>
-n: 以非GUI模式运行 JMeter
-t <test_plan_file.jmx>: 指定 JMeter 测试计划文件
-l <result_file.jtl>: 指定测试结果输出文件

Q2.出现出错率(error)极高的情况
当时遇到很多次这种情况,可能是网站有安全机制,在阻止恶意攻击;还有就是自己配置错了数据,url,http等。
被测系统性能瓶颈:
- 原因分析: 如果被测系统的 CPU、内存、数据库等资源无法承受高并发请求,就会导致大量错误响应。
- 解决办法: 优化被测系统的性能,例如增加服务器配置、优化数据库查询、添加缓存等。
网络问题:
- 原因分析: 如果网络环境不稳定,比如网络延迟高、丢包严重,会造成大量请求超时或失败。
- 解决办法: 检查网络环境,确保测试客户端和被测系统之间的网络连接质量良好。可以尝试使用更稳定的网络环境或增加网络带宽。
测试脚本问题:
- 原因分析: JMeter 脚本中可能存在一些逻辑问题或数据问题,导致大量请求出错。
- 解决办法: 仔细检查 JMeter 测试脚本,确保请求参数、校验逻辑等设置正确无误。可以先使用少量用户进行测试,逐步排查问题。
被测系统配置问题:
- 原因分析: 被测系统的一些配置(如连接池、并发限制等)可能无法支撑 JMeter 的高并发请求。
- 解决办法: 检查被测系统的各项配置参数,适当调整以满足高并发场景的需求。
三、APIPOST进行压力测试
APIPOST 是一个全面的 API 管理平台,它不仅支持接口测试,还内置了压力测试的功能。
3.1 步骤
3.1.1 安装和配置 APIPOST
- 下载并安装 APIPOST 客户端。APIPOST 提供 Windows、macOS 和 Linux 版本。
- 创建一个新的工作空间,或者导入已有的 API 集合。
3.1.2 创建压力测试计划
- 在 APIPOST 中,选择需要进行压力测试的 API 接口。
- 点击右侧的"压力测试"选项卡,进入压力测试界面。
- 在压力测试页面上,配置以下参数:
- 并发用户数: 设置同时模拟访问接口的并发用户数。
- 持续时间: 设置压力测试的持续时间。
- 请求频率: 设置每秒钟发送的请求数。
- 数据源: 选择使用数据文件或者动态生成数据作为请求参数。
3.1.3 运行压力测试
- 点击"开始压力测试"按钮,开始执行压力测试。
- APIPOST 会在测试过程中实时显示各项性能指标,包括响应时间、吞吐量、错误率等。
- 测试结束后,APIPOST 会生成一个详细的压力测试报告。
3.1.4 分析测试结果
- 查看 APIPOST 压力测试报告中的各项性能指标数据。
- 根据响应时间、吞吐量、错误率等指标,分析系统的性能瓶颈。
- 针对性能问题,优化代码、增加服务器资源或调整系统配置。
- 重复压力测试,验证优化措施是否有效。

3.2 注意点和问题(遇到的)
Q1:apipost进行大量测试出现中断情况(例如设置1000000但到300000次就停止了)
A:可能的原因和解决办法
资源不足:
- 原因: 测试机器或被测系统的 CPU、内存、网络等资源不足,无法承受高并发.
- 解决: 使用更强大的机器,或者采用分布式部署的方式进行测试。
服务端限制:
- 原因: 被测系统在承受大量并发时,可能会耗尽服务端资源(数据库连接等),导致中断.
- 解决: 优化被测系统的性能,比如增加配置、调整连接池等。也可以逐步增加并发,而不是一次性设置过高。
网络问题:
- 原因: 网络连接不稳定或中断,会导致测试中断.
- 解决: 检查网络环境,确保连接质量良好。如有问题,可以尝试更换网络环境或采用负载均衡等方式。
四、总结
学习新的技术和内容要注意时间和效率。可以多查询网络上的资料,可以加速技术的上手。
学习技术的过程包括安装配置和实施等环节,很容易遇到各种问题,要学会坚强,提高解决问题的能力和资料检索能力。