性能测试

一、什么是性能测试?

性能测试是一种非功能性测试,主要目的是评估系统在特定负载条件下的响应时间、吞吐量、资源利用率和稳定性。性能测试不仅仅关注系统是否能正常运行,还关心在不同负载下是否会发生性能瓶颈,确保应用程序能够应对大规模并发用户的访问。

二、性能测试流程

  1. 需求分析

    • 明确性能目标,比如最大支持用户数、响应时间、吞吐量等。
  2. 测试设计

    • 设计测试场景,明确要测试哪些业务功能、用户行为,以及对应的负载和压力。
  3. 脚本编写(注意参数化、关联)

    • 根据业务场景编写测试脚本,确保脚本能真实地模拟用户行为。
  4. 执行测试

    • 按照设计好的场景执行测试,逐步增加负载以观察系统性能变化。
  5. 监控与分析

    • 在测试期间监控服务器性能,收集数据。
  6. 结果分析与优化

    • 通过分析测试结果,发现性能瓶颈,提出优化方案。

三、性能指标

  吞吐量 (Throughput)

    • 单位时间内系统能够处理的请求数量或数据量。高吞吐量通常意味着系统具备更高的并发处理能力。

  响应时间(一般不高于1.5s)

    • 从用户发送请求到收到响应的时间。这个指标通常会影响用户体验。

  资源利用率(一般低于80%)

    • 监控CPU、内存、磁盘、网络带宽等资源的使用情况,帮助识别是否有瓶颈。

  成功率(一般是99.99%):

四、性能测试的分类

  1. 基准测试(Benchmark Testing):
    • 目的是确定系统在单个接口单个用户,没有压力下的基准性能指标。
  2. 负载测试 (Load Testing)(加压)

    • 目的是确定系统在期望的负载条件下的表现。它通过模拟预期的用户数量来测试系统的响应时间和稳定性。
    • 示例:测试电商网站在促销活动时能否同时处理成千上万的订单请求。
  3. 压力测试 (Stress Testing)(极限)

    • 将系统推到极限,甚至超出预期负载,测试在异常高负载下系统的表现。
    • 目的是找出系统的崩溃点以及在压力下的恢复能力。
    • 示例:测试系统在高流量、数据库崩溃或硬件故障时的响应。
  4. 容量测试 (Capacity Testing)

    • 测试系统能够处理的最大负载,以确定其最大处理能力。
    • 帮助确定系统是否需要扩展资源来处理更多用户。
  5. 稳定性测试 (Stability/Soak Testing)(恒定压力)

    • 长时间运行负载测试,检查系统是否会在持续高负载下出现内存泄漏、性能下降等问题。
    • 示例:模拟网站24小时不停歇地处理请求,检查内存使用情况。
  6. 峰值测试 (Spike Testing)

    • 测试系统在短时间内大量请求的情况下是否能够快速适应并恢复,模拟突然的流量激增情况。

五、性能测试工具:

  1. JMeter

    • 一个开源的性能测试工具,适用于Web应用、数据库、FTP服务器等的测试。
  2. LoadRunner

    • 商业级性能测试工具,功能强大,支持广泛的协议和复杂场景的模拟。
  3. Gatling

    • 针对开发者的开源性能测试工具,基于Scala编写,擅长高并发测试。
  4. k6

    • 现代化的开源负载测试工具,提供脚本化和云端集成,适用于测试API和微服务。

六、定位性能问题:

  1. 代码层:如:日志、exception、error。
  2. 数据库层:如:慢查询、数据连接池、死锁。
  3. 架构层:JVM、中间件nginx、MQ。
  4. 配置层:服务器。
posted @   迷糊的我  阅读(10)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示