CodeRoadMap
首页路线题库资源库文章社区
CodeRoadMap

程序员的学习成长路线图。内容免费开放,登录后可同步路线图与课时进度。

由 程序员柏风 独立维护 · 关于作者

学习

  • 路线图
  • 课程
  • 面试题
  • 文章
  • 我

更多

  • 资源
  • 社区
  • 关于作者
  • 内容说明

© 2026 CodeRoadMap

津ICP备2026012044号-1·津公网安备12011002026155号·coderoadmap@126.com
软件测试与 QA 入门/课时/性能与负载
RawBlame
课时目录12 节

软件测试与 QA 入门

  1. 01QA 是什么
  2. 02流程与方法论
  3. 03手工测试
  4. 04功能测试类型
  5. 05Web UI 自动化
  6. 06API 测试
  7. 07移动端测试
  8. 08性能与负载
  9. 09安全测试
  10. 10测试管理与 CI
  11. 11非功能测试
  12. 12综合练习

性能与负载

JMeter、k6、Gatling。

35 分钟

性能与负载

性能测试 验证系统在预期负载下是否满足响应时间、吞吐量与资源占用目标;负载测试 逐步加压找拐点,压力测试 超过容量观察降级与恢复。对照 /roadmaps/qa「Performance Testing」节点,本课介绍 JMeter、k6 与 Gatling。

学习目标

  • 区分性能、负载、压力、 soak 测试的目标
  • 定义 SLA 指标:P95 延迟、RPS、错误率
  • 用 k6 或 JMeter 对 REST API 编写简单负载脚本
  • 将性能测试与 Spring Boot 监控、CI 衔接

核心概念

测试类型

类型目的时长
基准单用户基线响应短
负载预期并发下是否达标中
压力找到崩溃点中
soak长时间泄漏、连接池耗尽长

关键指标

  • 响应时间:P50 / P95 / P99(平均数易误导)
  • 吞吐量:RPS(每秒请求数)
  • 错误率:5xx、超时占比
  • 资源:CPU、内存、DB 连接、GC

k6 示例

import http from "k6/http";
import { check, sleep } from "k6";

export const options = {
  vus: 20,
  duration: "30s",
  thresholds: { http_req_duration: ["p(95)<500"] },
};

export default function () {
  const res = http.get("http://localhost:8080/tracks/git-essentials");
  check(res, { "status 200": (r) => r.status === 200 });
  sleep(1);
}

Gatling(Scala DSL)适合 JVM 团队;JMeter GUI 上手快,CLI 可进 CI。

分析流程

  1. 定 SLA(如 P95 < 300ms @ 100 RPS)
  2. 隔离环境(勿打生产)
  3. 加压 → 看 APM / 日志 / DB 慢查询
  4. 瓶颈定位:N+1 查询、缺索引、线程池过小

与 testing-essentials/Spring 对照

性能测试开发侧测试
k6 打 HTTPMockMvc 不测并发(test-mockmvc)
全链路压测test-integration 验证 DB 正确性
Actuator / metricsSpring Boot 监控端点、sb-test 旁路

功能测试 绿 不等于性能 达标;发布前对 tracks 列表、搜索等热点 API 做负载抽检。CI 通常 (耗资源),放 staging nightly。

不全量压测

练习

  • 为 GET /tracks 定义 SLA:RPS、P95、错误率
  • 用 k6 或 JMeter 对本地 backend 跑 30 秒负载,记录 P95
  • 假设 P95 超标,列出 3 个可能瓶颈及验证手段

小结

先定 SLA 再加压;看 P95 不看平均,瓶颈在 DB 与 N+1 居多。 下一课进入安全测试:OWASP、鉴权与漏洞扫描。

加载本节练习…
← 上一课移动端测试下一课 →安全测试