个人技术总结——压力测试和可能遇到的问题

222100303陈昕 2024-06-06 22:51:19
这个作业属于哪个课程2302软件工程
这个作业要求在哪里软件工程实践总结&个人技术博客
这个作业的目标完成对软件工程实践课程的总结、个人技术的总结
其他参考文献《构建之法》,CSDN

目录

  • 前言
  • 一、压力测试概述
  • 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 创建压力测试计划

  1. 添加线程组(Thread Group)

    • 在 JMeter 的主界面,点击左侧的"添加" > "线程" > "线程组"。
    • 在弹出的线程组配置页面中,可以设置以下参数:
      • 线程数(Number of Threads): 模拟的并发用户数。
      • Ramp-Up 时间(Ramp-Up Period): 并发用户逐步增加的时间。
      • 循环次数(Loop Count): 每个线程执行测试脚本的循环次数。

        img

  2. 添加采样器(Sampler)

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

        img


        img

  3. 配置请求参数

    • 在采样器的参数配置页面,可以添加动态参数。
    • 例如,可以从 CSV 文件读取数据,或者使用 JMeter 内置的函数生成随机数据。
    • 这样可以模拟更加真实的业务场景。
  4. 添加监听器(Listener)

    • 选择线程组或采样器,点击右键 > "添加" > "监听器"。
    • 常用的监听器包括:
      • 察看结果树(View Results Tree): 查看每个请求的详细响应数据。
      • 聚合报告(Aggregate Report): 生成汇总的性能指标报告。
      • 图形结果(Graph Results): 以图表形式展示性能数据。
    • 监听器可以帮助我们分析测试结果,找出性能瓶颈

2.1.3 运行压力测试

  • 在线程组中设置并发用户数和请求频率。
  • 点击 JMeter 界面上的"开始"按钮,开始压力测试。
  • 测试过程中,你可以实时查看监听器中的测试结果。
  • 测试结束后,JMeter 会生成一个详细的测试报告。

img


img

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>: 指定测试结果输出文件

img

Q2.出现出错率(error)极高的情况

当时遇到很多次这种情况,可能是网站有安全机制,在阻止恶意攻击;还有就是自己配置错了数据,url,http等。

被测系统性能瓶颈:

  • 原因分析: 如果被测系统的 CPU、内存、数据库等资源无法承受高并发请求,就会导致大量错误响应。
  • 解决办法: 优化被测系统的性能,例如增加服务器配置、优化数据库查询、添加缓存等。

网络问题:

  • 原因分析: 如果网络环境不稳定,比如网络延迟高、丢包严重,会造成大量请求超时或失败。
  • 解决办法: 检查网络环境,确保测试客户端和被测系统之间的网络连接质量良好。可以尝试使用更稳定的网络环境或增加网络带宽。

测试脚本问题:

  • 原因分析: JMeter 脚本中可能存在一些逻辑问题或数据问题,导致大量请求出错。
  • 解决办法: 仔细检查 JMeter 测试脚本,确保请求参数、校验逻辑等设置正确无误。可以先使用少量用户进行测试,逐步排查问题。

被测系统配置问题:

  • 原因分析: 被测系统的一些配置(如连接池、并发限制等)可能无法支撑 JMeter 的高并发请求。
  • 解决办法: 检查被测系统的各项配置参数,适当调整以满足高并发场景的需求。

三、APIPOST进行压力测试

APIPOST 是一个全面的 API 管理平台,它不仅支持接口测试,还内置了压力测试的功能。

3.1 步骤

3.1.1 安装和配置 APIPOST

  1. 下载并安装 APIPOST 客户端。APIPOST 提供 Windows、macOS 和 Linux 版本。
  2. 创建一个新的工作空间,或者导入已有的 API 集合。

3.1.2 创建压力测试计划

  1. 在 APIPOST 中,选择需要进行压力测试的 API 接口。
  2. 点击右侧的"压力测试"选项卡,进入压力测试界面。
  3. 在压力测试页面上,配置以下参数:
    • 并发用户数: 设置同时模拟访问接口的并发用户数。
    • 持续时间: 设置压力测试的持续时间。
    • 请求频率: 设置每秒钟发送的请求数。
    • 数据源: 选择使用数据文件或者动态生成数据作为请求参数。

3.1.3 运行压力测试

  1. 点击"开始压力测试"按钮,开始执行压力测试。
  2. APIPOST 会在测试过程中实时显示各项性能指标,包括响应时间、吞吐量、错误率等。
  3. 测试结束后,APIPOST 会生成一个详细的压力测试报告。

3.1.4 分析测试结果

  1. 查看 APIPOST 压力测试报告中的各项性能指标数据。
  2. 根据响应时间、吞吐量、错误率等指标,分析系统的性能瓶颈。
  3. 针对性能问题,优化代码、增加服务器资源或调整系统配置。
  4. 重复压力测试,验证优化措施是否有效。

    img

    3.2 注意点和问题(遇到的)

Q1:apipost进行大量测试出现中断情况(例如设置1000000但到300000次就停止了)

A:可能的原因和解决办法

资源不足:

  • 原因: 测试机器或被测系统的 CPU、内存、网络等资源不足,无法承受高并发.
  • 解决: 使用更强大的机器,或者采用分布式部署的方式进行测试。

服务端限制:

  • 原因: 被测系统在承受大量并发时,可能会耗尽服务端资源(数据库连接等),导致中断.
  • 解决: 优化被测系统的性能,比如增加配置、调整连接池等。也可以逐步增加并发,而不是一次性设置过高。

网络问题:

  • 原因: 网络连接不稳定或中断,会导致测试中断.
  • 解决: 检查网络环境,确保连接质量良好。如有问题,可以尝试更换网络环境或采用负载均衡等方式。

四、总结

学习新的技术和内容要注意时间和效率。可以多查询网络上的资料,可以加速技术的上手。

学习技术的过程包括安装配置和实施等环节,很容易遇到各种问题,要学会坚强,提高解决问题的能力和资料检索能力。

...全文
255 回复 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
回复
切换为时间正序
请发表友善的回复…
发表回复

122

社区成员

发帖
与我相关
我的任务
社区描述
FZU-SE
软件工程 高校
社区管理员
  • LinQF39
  • 助教-吴可仪
  • 一杯时间
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧