软件测试完整学习指南:从入门到自动化、性能与安全测试实战

软件测试完整学习指南:理论、流程、技术、工具与项目实战 🚀

适合人群:软件测试入门者、功能测试工程师、自动化测试工程师、测试开发/SDET、想系统补全测试知识的开发人员。

更新时间:2026-06-08

文档目标:系统讲清楚软件测试是什么、怎么测、用什么工具、需要掌握哪些技术、如何从 0 到项目实战与面试准备。


目录 📌


一、软件测试是什么?

软件测试是通过人工检查、工具验证、自动化脚本、性能压测、安全扫描、代码级测试、用户场景验证等方式,判断软件是否满足需求,并尽可能发现其中的缺陷和风险。

简单理解:

软件测试不是单纯"找 Bug",而是围绕质量、风险、用户体验和交付稳定性进行系统验证。

软件测试通常关注以下问题:

关注点 说明 示例
功能是否正确 ✅ 是否符合需求文档 登录成功、下单成功、退款成功
数据是否准确 📊 数据写入、查询、统计是否正确 订单金额、库存数量、用户积分
接口是否稳定 🔗 API 请求和响应是否符合约定 状态码、参数校验、返回结构
性能是否达标 ⚡ 高并发下是否卡顿、崩溃 1000 人同时下单
安全是否可靠 🔐 是否存在注入、越权、泄露 普通用户访问管理员接口
兼容性是否良好 📱 不同浏览器、系统、设备是否正常 iOS、Android、Windows、macOS
体验是否合理 🎨 页面提示、交互流程是否清晰 错误提示、加载状态、空状态
可维护性是否良好 🧩 代码、用例、环境是否方便维护 自动化脚本是否稳定

二、为什么软件测试很重要?

软件一旦上线,问题成本会被放大。一个小 Bug 可能导致:

  • 用户无法登录 😵
  • 支付失败或重复扣款 💸
  • 数据丢失或数据错乱 📉
  • 权限泄露,用户看到不该看的数据 🔓
  • 系统高峰期崩溃 🚨
  • 品牌和业务损失 📉

1. 测试的核心价值

价值 说明
降低上线风险 提前发现问题,避免线上事故
保障核心业务 登录、支付、订单、数据等主流程稳定
提升用户体验 减少卡顿、闪退、错位、提示不清等问题
辅助产品决策 通过测试报告判断是否具备上线条件
促进团队协作 帮助开发、产品、运维共同理解质量风险
提升交付效率 自动化测试能减少重复回归成本

2. 软件测试的七个常见原则

原则 解释
测试能发现缺陷,但不能证明完全无缺陷 测试只能提高信心,无法证明软件绝对没有 Bug
穷尽测试通常不现实 所有输入、所有组合都测一遍成本极高
测试越早介入越好 需求阶段发现问题比上线后修复成本低很多
缺陷具有集群性 大量 Bug 往往集中在少数复杂模块
杀虫剂悖论 同一批用例反复执行,会越来越难发现新 Bug
测试活动依赖上下文 金融、电商、游戏、医疗系统的测试重点不同
无错误谬误 软件即使没有明显 Bug,也可能不满足用户真实需求

三、软件测试岗位与发展方向

1. 功能测试工程师 🧪

功能测试是测试入门最常见方向,主要通过人工方式验证需求。

工作内容

  • 阅读需求文档、原型图、接口文档
  • 编写测试计划和测试用例
  • 执行功能测试、兼容性测试、回归测试
  • 提交 Bug,跟踪 Bug 修复
  • 输出测试报告

能力要求

能力 要求
需求理解 能看懂业务规则、流程、边界条件
用例设计 会等价类、边界值、场景法、判定表
Bug 表达 能写清楚复现步骤、实际结果、预期结果
沟通协作 能和产品、开发、运维沟通质量问题
工具使用 会禅道、Jira、TestRail、Postman 等

2. 接口测试工程师 🔗

接口测试主要验证后端 API 的正确性、稳定性、安全性和性能。

工作内容

  • 根据接口文档设计接口测试用例
  • 使用 Postman、Apifox、curl 调试接口
  • 验证请求参数、返回字段、状态码、错误码
  • 测试登录鉴权、Token、权限、幂等性
  • 编写接口自动化脚本

常见接口测试点

测试点 示例
请求方式 GET、POST、PUT、DELETE 是否正确
参数校验 必填、类型、长度、格式、边界值
返回结构 JSON 字段是否完整、类型是否正确
状态码 200、400、401、403、404、500
业务逻辑 库存扣减、订单状态、支付状态
权限控制 未登录、普通用户、管理员
异常处理 参数错误、服务异常、数据库异常
安全风险 越权、重放、敏感信息泄露

3. 自动化测试工程师 🤖

自动化测试使用脚本和工具代替人工重复执行测试。

工作内容

  • 选择自动化测试框架
  • 编写 Web、接口、移动端自动化脚本
  • 管理测试数据和测试环境
  • 生成自动化测试报告
  • 接入 Jenkins、GitLab CI、GitHub Actions
  • 维护自动化脚本稳定性

适合自动化的场景

适合 不适合
高频回归测试 一次性临时需求
稳定核心流程 需求频繁变动功能
接口自动化 强主观 UI 视觉判断
主流程冒烟测试 极复杂且低频操作
多数据组合测试 尚未稳定的原型功能

4. 性能测试工程师 ⚡

性能测试关注系统在不同负载下的响应速度、并发能力和稳定性。

工作内容

  • 设计性能测试场景
  • 使用 JMeter、k6、Locust 压测
  • 分析响应时间、吞吐量、TPS、QPS、错误率
  • 监控 CPU、内存、磁盘、网络、数据库
  • 定位性能瓶颈
  • 输出性能测试报告

5. 安全测试工程师 🔐

安全测试关注系统是否存在漏洞和攻击风险。

工作内容

  • 测试 SQL 注入、XSS、CSRF、越权、文件上传漏洞
  • 使用 Burp Suite、OWASP ZAP 等工具
  • 进行安全扫描和手工验证
  • 分析敏感信息泄露风险
  • 输出安全测试报告

6. 测试开发 / SDET 🧑‍💻

测试开发是更偏技术的测试岗位,要求具备编码、框架设计、平台开发和质量工程能力。

工作内容

  • 搭建自动化测试框架
  • 开发测试平台、Mock 平台、质量看板
  • 维护测试基础设施
  • 做 CI/CD 质量门禁
  • 推动研发流程质量改进

技术栈

方向 常用技术
编程语言 Python、Java、JavaScript、TypeScript、Go
自动化框架 Selenium、Playwright、pytest、JUnit、TestNG
接口测试 Postman、Apifox、requests、RestAssured
性能测试 JMeter、k6、Locust
平台开发 Django、FastAPI、Spring Boot、Vue、React
DevOps Jenkins、GitLab CI、Docker、Kubernetes
数据库 MySQL、PostgreSQL、Redis、MongoDB

四、软件测试核心流程 STLC

STLC 是 Software Testing Life Cycle,即软件测试生命周期。常见流程如下:

text 复制代码
需求分析 → 测试计划 → 测试设计 → 测试环境准备 → 测试执行 → 缺陷管理 → 回归测试 → 测试报告 → 测试关闭

1. 需求分析 📄

测试首先要理解需求,而不是拿到系统就开始乱点。

需要看的资料

资料 作用
PRD 产品需求文档 明确业务规则、流程、边界
原型图 明确页面结构和交互
UI 设计稿 明确视觉规范
接口文档 明确 API 入参、出参、状态码
数据库设计 明确数据表关系和数据流
埋点文档 明确统计事件和数据上报
权限矩阵 明确不同角色能做什么

需求评审要关注的问题

问题类型 示例
需求不明确 "适当提示用户"具体提示什么?
逻辑冲突 优惠券和满减能不能叠加?
边界缺失 最大上传文件是多少 MB?
权限不清 普通管理员能否删除用户?
异常未说明 支付失败后订单是什么状态?
数据规则缺失 手机号是否允许海外号码?

2. 测试计划 🗓️

测试计划说明本次测试怎么做、谁来做、测什么、不测什么、什么时候完成。

测试计划内容

内容 示例
项目背景 电商 App 订单模块 V2.0 测试
测试范围 登录、购物车、下单、支付、退款
不测范围 第三方支付平台内部逻辑
测试类型 功能、接口、兼容、性能、安全
测试环境 测试环境、预发布环境
人员分工 A 测订单,B 测支付,C 测接口
时间安排 提测、测试、回归、上线时间
准入标准 开发自测通过、环境可用、接口文档完整
准出标准 P0/P1 Bug 清零,核心用例通过率 100%
风险说明 支付接口依赖第三方,可能影响进度

3. 测试设计 🧠

测试设计就是把需求转换成可执行的测试点和测试用例。

测试设计产物

  • 测试点清单
  • 测试用例
  • 测试数据
  • 测试场景图
  • 接口测试集合
  • 自动化测试脚本设计
  • 性能测试场景设计

4. 测试环境准备 🧰

测试环境包括服务器、数据库、应用版本、账号权限、测试数据、第三方依赖等。

环境检查清单

text 复制代码
□ 测试地址是否可访问
□ 前端/后端版本是否正确
□ 数据库是否连接正常
□ Redis、消息队列是否正常
□ 测试账号是否可登录
□ 权限角色是否配置完成
□ 测试数据是否准备好
□ 第三方支付/短信/邮件是否可用
□ 日志是否可查看
□ 接口文档是否更新

5. 测试执行 🧪

测试执行一般包括:

阶段 说明
冒烟测试 快速判断版本是否可测
系统测试 按用例全面验证功能
探索性测试 根据经验自由测试隐藏问题
接口测试 验证接口逻辑和数据
兼容性测试 验证浏览器、系统、设备
回归测试 验证修复后是否影响旧功能
验收测试 判断是否符合上线要求

6. 测试报告 📊

测试报告是上线决策的重要依据。

测试报告通常包括

内容 示例
测试结论 通过 / 有条件通过 / 不通过
测试范围 本次测试了哪些模块
用例执行情况 总 300 条,通过 285 条,失败 10 条,阻塞 5 条
Bug 统计 P0 0 个,P1 1 个,P2 8 个
遗留问题 说明未修复问题和影响范围
风险说明 支付回调偶发延迟,有线上风险
上线建议 是否建议上线

五、测试分类详细讲解

1. 功能测试 ✅

验证软件功能是否符合需求。

示例:登录功能测试点

场景 测试点
正常登录 正确账号密码登录成功
错误密码 提示密码错误
账号不存在 提示账号不存在
空账号 提示请输入账号
空密码 提示请输入密码
账号禁用 提示账号已禁用
多次输错 是否锁定账号或触发验证码
登录态 刷新页面是否保持登录
退出登录 Token 是否清除
权限跳转 未登录访问内部页面是否跳转登录

2. 接口测试 🔗

接口测试验证服务端 API 是否按约定工作。

接口测试重点

  • 请求方法是否正确
  • 请求参数是否完整
  • 参数类型、长度、边界是否校验
  • 返回状态码是否正确
  • 返回字段是否符合接口文档
  • 错误码和错误信息是否统一
  • 权限、Token、签名是否正确
  • 是否存在越权访问
  • 是否支持幂等处理
  • 是否存在重复提交问题

3. UI 测试 🎨

UI 测试关注界面展示和交互体验。

测试点

类型 示例
布局 是否错位、遮挡、溢出
文案 是否有错别字、语言不统一
图片 是否变形、模糊、加载失败
按钮 是否可点击、状态是否正确
表单 输入、校验、提示是否正常
弹窗 打开、关闭、遮罩、层级是否正常
加载状态 请求中是否有 loading
空状态 无数据时是否有提示
错误状态 接口失败是否提示

4. 兼容性测试 📱

验证软件在不同环境中是否正常。

兼容性测试维度

维度 示例
浏览器 Chrome、Edge、Firefox、Safari
操作系统 Windows、macOS、Linux、iOS、Android
设备 手机、平板、PC、折叠屏
分辨率 1920x1080、1366x768、375x812
网络 Wi-Fi、4G、5G、弱网、断网
WebView 微信、支付宝、App 内嵌浏览器
数据库 MySQL、PostgreSQL、Oracle

5. 回归测试 🔁

回归测试用于验证修改代码后,旧功能是否被影响。

什么时候需要回归?

  • Bug 修复后
  • 新功能合并后
  • 版本上线前
  • 公共组件修改后
  • 数据库结构调整后
  • 配置文件修改后
  • 依赖库升级后

6. 冒烟测试 💨

冒烟测试是快速判断版本是否"可测"。

例如后台系统冒烟用例:

text 复制代码
□ 系统可以打开
□ 用户可以登录
□ 菜单可以正常加载
□ 核心列表可以打开
□ 新增功能可以保存
□ 编辑功能可以保存
□ 删除功能可以删除
□ 退出登录正常

冒烟测试失败,通常说明版本质量太差,不适合进入全面测试。


7. 探索性测试 🔍

探索性测试不完全依赖测试用例,而是依靠测试人员经验自由探索。

常见探索操作

操作 可能发现的问题
连续快速点击按钮 重复提交、状态错乱
输入超长文本 页面撑破、数据库报错
输入特殊字符 XSS、SQL 错误、编码异常
网络中断再恢复 数据丢失、状态异常
多标签页同时操作 登录态、数据同步问题
修改浏览器本地存储 权限绕过、状态异常
清除 Token 后操作 401 处理异常

8. 性能测试 ⚡

性能测试用于验证系统在压力下是否稳定。

常见类型

类型 说明
负载测试 验证预期用户量下是否稳定
压力测试 找出系统最大承受能力
并发测试 多用户同时操作同一业务
稳定性测试 长时间运行是否稳定
容量测试 数据量增大后是否变慢
峰值测试 突发流量下系统表现
基准测试 建立性能基线,用于后续对比

9. 安全测试 🔐

安全测试用于发现系统被攻击或数据泄露的风险。

常见安全测试点

类型 示例
SQL 注入 输入 ' OR 1=1 -- 绕过查询
XSS 输入 <script>alert(1)</script>
CSRF 伪造用户请求
越权 A 用户访问 B 用户订单
文件上传 上传 php、jsp、exe、脚本文件
暴力破解 登录接口无限尝试密码
敏感信息泄露 返回身份证、密码、Token
弱密码 123456、admin123
目录遍历 访问 ../../etc/passwd

10. 易用性测试 👥

易用性测试关注用户是否容易理解和操作。

测试点

  • 操作流程是否顺畅
  • 提示信息是否清楚
  • 错误提示是否能指导用户修正
  • 页面是否有必要的确认提醒
  • 重要操作是否防误触
  • 新用户是否能快速上手

11. 可访问性测试 ♿

可访问性测试关注残障用户或特殊场景下是否可用。

测试点

  • 是否支持键盘操作
  • 图片是否有替代文本
  • 颜色对比度是否足够
  • 表单控件是否有关联标签
  • 屏幕阅读器是否能识别内容
  • 错误提示是否清晰

12. 国际化与本地化测试 🌍

适用于多语言、多地区系统。

测试点

类型 示例
文案翻译 是否漏翻、错翻
日期格式 2026-06-08 / 06/08/2026
货币格式 ¥、$、€
时区 北京时间、UTC、东京时间
字符长度 德语、俄语文案较长是否撑破布局
方向 阿拉伯语等 RTL 语言

六、测试级别:从代码到系统验收

1. 单元测试 Unit Testing

测试最小代码单元,例如函数、方法、类。

特点 说明
执行快 通常几秒内完成
成本低 适合开发阶段快速反馈
定位准 哪个函数错了容易发现
自动化程度高 适合 CI 中频繁运行

常用工具:JUnit、TestNG、pytest、NUnit、Jest、Vitest。


2. 集成测试 Integration Testing

验证多个模块之间是否能正确协作。

例如:

text 复制代码
用户服务 → 订单服务 → 库存服务 → 支付服务 → 消息通知服务

关注点:

  • 接口契约是否一致
  • 数据传递是否正确
  • 异常是否能被正确处理
  • 第三方服务异常时是否降级

3. 系统测试 System Testing

从完整系统角度验证功能和非功能需求。

包括:

  • 功能测试
  • 接口测试
  • 性能测试
  • 安全测试
  • 兼容性测试
  • 可用性测试

4. 验收测试 Acceptance Testing

验证系统是否满足用户或业务方要求。

类型:

类型 说明
UAT 用户验收测试 业务方按照真实业务场景验收
Alpha 测试 内部用户测试
Beta 测试 外部真实用户试用
合同验收 按合同条款验收

七、测试方法:黑盒、白盒、灰盒、静态、动态

1. 黑盒测试 ⚫

不看内部代码,只根据输入和输出判断系统是否正确。

适合:

  • 功能测试
  • 接口测试
  • UI 测试
  • 验收测试

2. 白盒测试 ⚪

了解代码内部逻辑,基于代码结构设计测试。

关注:

  • 语句覆盖
  • 分支覆盖
  • 条件覆盖
  • 路径覆盖
  • 异常路径
  • 代码安全风险

3. 灰盒测试 🔘

介于黑盒和白盒之间,测试人员了解部分系统内部结构。

常见场景:

  • 接口测试时查看数据库数据
  • 测试订单状态流转时查看日志
  • 测试权限时查看角色配置
  • 测试异步消息时查看消息队列

4. 静态测试 📖

不运行程序,通过审查文档和代码发现问题。

包括:

  • 需求评审
  • 设计评审
  • 代码评审
  • 测试用例评审
  • 静态代码扫描

5. 动态测试 ▶️

运行软件,通过输入和操作验证结果。

包括:

  • 功能测试
  • 接口测试
  • 自动化测试
  • 性能测试
  • 安全扫描

八、测试用例设计方法

1. 等价类划分

把输入划分为有效等价类和无效等价类。

示例:手机号输入框

类型 测试数据 预期
有效等价类 13800138000 通过
无效等价类 12345 不通过
无效等价类 abcdef 不通过
无效等价类 空值 不通过
无效等价类 138001380001 不通过

2. 边界值分析

很多问题出现在边界。

示例:用户名长度 6-20 位

数据 预期
5 位 不通过
6 位 通过
7 位 通过
19 位 通过
20 位 通过
21 位 不通过

3. 判定表

适合多条件组合。

示例:优惠券使用条件

已登录 满 100 元 优惠券有效 是否可用
可用
不可用
不可用
不可用
不可用

4. 因果图

适合复杂条件之间存在因果关系的业务。

例如注册功能:

text 复制代码
原因:手机号合法、验证码正确、密码合规、协议已勾选
结果:注册成功

只要其中任意关键条件不满足,结果就是注册失败。


5. 状态迁移法

适合测试状态流转。

示例:订单状态

text 复制代码
待支付 → 已支付 → 已发货 → 已收货 → 已完成
待支付 → 已取消
已支付 → 退款中 → 已退款

测试重点:

  • 合法状态能否正确流转
  • 非法状态是否禁止流转
  • 状态变更后数据是否一致
  • 状态变更是否有日志记录

6. 场景法

模拟用户真实业务流程。

示例:电商下单

text 复制代码
注册 → 登录 → 搜索商品 → 加入购物车 → 提交订单 → 支付 → 查看订单 → 申请退款

7. 正交实验法 / Pairwise

当参数组合很多时,用较少用例覆盖大部分两两组合。

示例

浏览器、系统、语言、支付方式组合很多,不可能全测,可以用 Pairwise 生成代表性组合。


8. 错误推测法

根据经验推测容易出问题的地方。

常见高风险点:

  • 金额计算
  • 权限控制
  • 文件上传
  • 分页边界
  • 搜索过滤
  • 弱网重试
  • 重复提交
  • 并发扣库存
  • Token 过期
  • 缓存不一致

九、缺陷 Bug 管理完整流程

1. Bug 生命周期

text 复制代码
新建 → 指派 → 确认 → 修复 → 待回归 → 回归通过 → 关闭
                         ↘ 回归失败 → 重新打开

2. Bug 报告模板

text 复制代码
标题:支付成功后订单状态仍显示"待支付"

环境:
- 测试环境:https://test.example.com
- App 版本:2.3.0
- 设备:iPhone 15 / iOS 18
- 账号:test001

前置条件:
- 用户已登录
- 商品库存充足
- 支付渠道可用

复现步骤:
1. 打开商品详情页
2. 点击立即购买
3. 提交订单
4. 使用测试支付方式完成支付
5. 返回订单详情页

实际结果:
订单状态仍显示"待支付"。

预期结果:
支付成功后订单状态应显示"已支付"。

附件:
- 截图
- 接口请求记录
- 日志片段

严重程度:严重
优先级:高

3. 严重程度 Severity

等级 说明 示例
致命 Blocker 系统无法使用 服务崩溃、无法登录、数据丢失
严重 Critical 核心流程不可用 支付失败、订单无法提交
一般 Major 主要功能异常但有绕过方案 搜索结果错误
轻微 Minor 局部问题 文案错误、样式错位
建议 Trivial 优化建议 交互体验可改善

4. 优先级 Priority

等级 说明
P0 必须立即修复,影响上线
P1 本版本必须修复
P2 可排期修复
P3 低优先级,有时间处理

严重程度表示影响有多大,优先级表示多快修。二者有关联,但不是一回事。


十、测试需要掌握的技术体系

1. 测试理论基础 🧠

必须掌握:

  • 软件测试概念
  • STLC 测试流程
  • SDLC 软件开发生命周期
  • 测试计划、测试用例、测试报告
  • 黑盒、白盒、灰盒测试
  • 等价类、边界值、判定表、状态迁移
  • 缺陷管理流程
  • 回归测试、冒烟测试、验收测试

2. 业务分析能力 📌

测试不是机械点页面,而是要理解业务。

需要掌握:

  • 需求分析
  • 流程图分析
  • 权限矩阵分析
  • 数据流分析
  • 异常流程设计
  • 风险识别

3. HTTP / 网络基础 🌐

接口测试、性能测试、安全测试都离不开网络基础。

必须掌握:

知识点 说明
HTTP 方法 GET、POST、PUT、DELETE、PATCH
状态码 200、201、301、302、400、401、403、404、500
请求头 Content-Type、Authorization、Cookie
请求体 JSON、FormData、x-www-form-urlencoded
Cookie / Session / Token 登录态和鉴权
HTTPS 加密传输、证书
DNS 域名解析
跨域 CORS、预检请求
WebSocket 实时通信测试

4. 数据库与 SQL 🗄️

测试人员至少要会基本 SQL。

常用能力:

sql 复制代码
-- 查询用户
SELECT * FROM users WHERE phone = '13800138000';

-- 查询订单
SELECT * FROM orders WHERE user_id = 1001 ORDER BY created_at DESC;

-- 查询某状态订单数量
SELECT status, COUNT(*) FROM orders GROUP BY status;

-- 更新测试数据
UPDATE users SET status = 1 WHERE id = 1001;

-- 删除测试垃圾数据
DELETE FROM test_orders WHERE created_at < '2026-01-01';

需要掌握:

  • SELECT / INSERT / UPDATE / DELETE
  • WHERE / ORDER BY / GROUP BY / LIMIT
  • JOIN 联表查询
  • 索引基本概念
  • 事务 ACID
  • 锁、死锁、隔离级别基础
  • 慢查询分析

5. Linux 基础 🐧

测试环境、日志排查、部署验证经常用 Linux。

常用命令:

bash 复制代码
# 查看日志最后 200 行
tail -n 200 app.log

# 实时查看日志
tail -f app.log

# 搜索错误日志
grep "ERROR" app.log

# 查看进程
ps aux | grep java

# 查看端口
netstat -tunlp

# 查看磁盘空间
df -h

# 查看内存
free -h

# 查看 CPU 和内存使用
top

6. 编程语言 💻

测试进阶必须会一门编程语言。

方向 推荐语言
接口自动化 Python、Java、JavaScript
Web 自动化 Python、Java、JavaScript、TypeScript
移动端自动化 Java、Python、JavaScript
性能测试 Java、JavaScript、Python
测试平台开发 Python、Java、Go

推荐优先级

text 复制代码
Python → SQL → Linux → HTTP → 自动化框架 → CI/CD → Docker → 测试平台

7. Git 与版本管理 🌿

测试人员也需要懂 Git。

常用命令:

bash 复制代码
# 克隆代码
git clone https://github.com/example/project.git

# 查看分支
git branch

# 切换分支
git checkout test

# 拉取最新代码
git pull

# 查看提交记录
git log --oneline

测试场景:

  • 确认当前测试版本
  • 对比两个版本差异
  • 拉取自动化测试代码
  • 配合 CI/CD 执行测试

8. Docker 基础 🐳

测试环境越来越多使用 Docker。

需要掌握:

  • 镜像 image
  • 容器 container
  • Dockerfile
  • docker run / ps / logs / exec
  • docker-compose
  • 环境隔离
  • 快速搭建 MySQL、Redis、Mock 服务

常用命令:

bash 复制代码
# 查看容器
docker ps

# 查看日志
docker logs -f container_name

# 进入容器
docker exec -it container_name bash

# 启动 docker-compose
docker compose up -d

9. CI/CD 基础 🚀

测试自动化要接入持续集成。

需要理解:

  • 持续集成 CI
  • 持续交付 CD
  • Pipeline 流水线
  • 构建、测试、部署阶段
  • 自动化测试报告
  • 质量门禁
  • 失败通知

常见工具:Jenkins、GitLab CI、GitHub Actions。


10. 日志与监控 📈

测试不仅要发现问题,还要能定位问题。

需要掌握:

  • 应用日志
  • Nginx 日志
  • 数据库日志
  • 接口请求日志
  • 链路追踪
  • Prometheus 指标
  • Grafana 监控面板
  • ELK 日志检索

十一、测试工具体系总览

分类 工具 主要用途
测试管理 禅道、Jira、TestRail、TAPD 需求、用例、Bug、测试计划、报告
接口测试 Postman、Apifox、Swagger、curl API 调试、接口用例、Mock、自动化
Web 自动化 Selenium、Playwright、Cypress 浏览器 UI 自动化、E2E 测试
移动端自动化 Appium、Airtest Android/iOS App 自动化
单元测试 JUnit、TestNG、pytest、NUnit、Jest 代码级测试
性能测试 JMeter、k6、Locust 负载、压力、并发、稳定性测试
安全测试 Burp Suite、OWASP ZAP、Nmap Web 安全扫描、渗透测试辅助
抓包调试 Charles、Fiddler、Wireshark 请求抓包、代理、网络分析
Mock 工具 WireMock、MockServer、Apifox Mock 模拟接口返回
报告工具 Allure Report、ExtentReports 自动化测试报告
CI/CD Jenkins、GitLab CI、GitHub Actions 自动执行测试和部署
数据库工具 DBeaver、DataGrip、Navicat、MySQL Workbench 数据库查询和验证
兼容性云测 BrowserStack、Sauce Labs 多设备、多浏览器云测试
代码质量 SonarQube 静态代码扫描、质量门禁
监控日志 Grafana、Prometheus、ELK 性能和日志分析

十二、重点测试工具详细讲解

1. Postman:接口测试核心工具 🔗

官方文档:https://learning.postman.com/

Postman 是接口测试最常用工具之一,适合接口调试、接口集合管理、环境变量、断言、自动化执行和 CI 集成。

适用场景

  • 调试 HTTP API
  • 管理接口集合 Collection
  • 管理测试环境 Environment
  • 编写接口断言 Test Script
  • 做接口回归测试
  • 生成接口文档
  • 接入 CI/CD 执行接口测试

核心概念

概念 说明
Request 单个接口请求
Collection 一组接口请求集合
Environment 环境变量,如测试环境、预发环境
Variables 变量,如 token、baseUrl
Pre-request Script 请求前执行脚本
Tests 响应后执行断言
Runner 批量运行集合
Postman CLI 命令行执行集合,适合 CI/CD

常用断言示例

javascript 复制代码
pm.test("状态码应为 200", function () {
  pm.response.to.have.status(200);
});

pm.test("返回 code 应为 0", function () {
  const jsonData = pm.response.json();
  pm.expect(jsonData.code).to.eql(0);
});

pm.test("响应时间小于 500ms", function () {
  pm.expect(pm.response.responseTime).to.be.below(500);
});

学习重点

text 复制代码
1. 会发送 GET / POST / PUT / DELETE 请求
2. 会配置 Header、Body、Params
3. 会使用环境变量 baseUrl、token
4. 会写断言
5. 会提取接口返回值给下一个接口使用
6. 会批量运行 Collection
7. 会使用 Postman CLI 接入 CI/CD

优点

  • 上手简单
  • 生态成熟
  • 适合接口调试和团队协作
  • 支持自动化断言
  • 支持命令行运行

局限

  • 复杂测试框架能力不如代码灵活
  • 大规模自动化维护成本较高
  • 高级协作能力部分依赖商业版本

2. Apifox:接口文档、调试、Mock、测试一体化 🦊

官方文档:https://docs.apifox.com/help

Apifox 更适合团队统一管理 API,集接口文档、接口调试、Mock、自动化测试于一体。

适用场景

  • 接口文档管理
  • 接口调试
  • Mock 数据
  • 接口自动化测试
  • 团队协作
  • 前后端联调

核心能力

能力 说明
API 文档 统一维护接口路径、参数、响应结构
API 调试 类似 Postman 发送请求
Mock 后端未完成时模拟接口返回
自动化测试 组织多个接口为测试场景
数据模型 统一维护 Schema
团队协作 多人维护同一套接口文档

学习重点

text 复制代码
1. 创建项目和接口
2. 定义请求参数和响应模型
3. 发送接口请求
4. 配置环境变量
5. 使用 Mock 服务
6. 创建测试场景
7. 导入/导出 OpenAPI/Swagger

3. Swagger / OpenAPI:接口规范与文档 📘

OpenAPI 官方规范:https://spec.openapis.org/oas/latest.html

Swagger 文档:https://swagger.io/docs/

OpenAPI 是描述 HTTP API 的标准规范,Swagger 是围绕 OpenAPI 的工具生态。

能做什么?

  • 描述接口路径、方法、参数、响应
  • 生成交互式接口文档
  • 生成客户端 SDK
  • 生成服务端代码骨架
  • 支持接口契约测试
  • 支持 Mock 和接口测试

测试人员为什么要懂?

原因 说明
看接口文档 理解接口入参、出参和状态码
做契约测试 判断接口是否符合规范
自动生成测试 基于规范生成接口测试用例
减少沟通成本 接口变更可直接从文档看出

4. JMeter:性能测试经典工具 ⚡

官网:https://jmeter.apache.org/

用户手册:https://jmeter.apache.org/usermanual/index.html

JMeter 是最常见的性能测试工具之一,适合接口压测、Web 服务压测、数据库压测等。

适用场景

  • HTTP/HTTPS 接口压测
  • REST API 压测
  • SOAP WebService 压测
  • 数据库 JDBC 压测
  • 并发登录测试
  • 秒杀、抢购、下单测试
  • 稳定性测试

核心组件

组件 说明
Test Plan 测试计划,所有组件的根节点
Thread Group 线程组,模拟并发用户
Sampler 采样器,发起请求,如 HTTP Request
Controller 控制器,控制请求执行逻辑
Listener 监听器,查看结果,如聚合报告
Assertion 断言,判断响应是否正确
Config Element 配置元件,如 Header、Cookie、CSV 数据
Timer 定时器,控制请求间隔
Pre/Post Processor 请求前后处理器

性能指标

指标 说明
响应时间 用户请求到返回的时间
TPS 每秒处理事务数
QPS 每秒请求数
吞吐量 单位时间处理数据量
错误率 请求失败比例
并发数 同时在线或同时请求的用户数
90/95/99 分位 大多数用户的响应时间表现

JMeter 学习重点

text 复制代码
1. 创建线程组
2. 添加 HTTP 请求
3. 配置 Header、Cookie、Token
4. 使用 CSV 参数化
5. 添加断言
6. 查看聚合报告
7. 设计阶梯压测场景
8. 命令行运行 JMeter
9. 分布式压测
10. 结合服务器监控分析瓶颈

命令行运行示例

bash 复制代码
jmeter -n -t test_plan.jmx -l result.jtl -e -o report

优点

  • 免费开源
  • 插件丰富
  • 支持协议多
  • 图形界面适合入门
  • 社区资料多

局限

  • GUI 大压测不适合长期运行
  • 脚本维护不如代码灵活
  • 分布式压测配置需要经验

5. k6:现代性能测试工具 📈

官网:https://k6.io/

文档:https://grafana.com/docs/k6/latest/

k6 使用 JavaScript 编写性能测试脚本,适合开发和测试团队在 CI/CD 中做性能门禁。

示例脚本

javascript 复制代码
import http from 'k6/http';
import { check, sleep } from 'k6';

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

export default function () {
  const res = http.get('https://test.example.com/api/products');
  check(res, {
    '状态码是 200': (r) => r.status === 200,
  });
  sleep(1);
}

适用场景

  • API 性能测试
  • CI/CD 性能门禁
  • 云原生压测
  • 脚本化压测
  • 与 Grafana 监控结合

6. Locust:Python 性能测试工具 🐍

官网:https://locust.io/

文档:https://docs.locust.io/

Locust 使用 Python 写压测脚本,适合喜欢代码化、需要复杂业务流程的性能测试。

示例脚本

python 复制代码
from locust import HttpUser, task, between

class WebsiteUser(HttpUser):
    wait_time = between(1, 3)

    @task
    def product_list(self):
        self.client.get("/api/products")

优点

  • Python 编写,灵活
  • 支持复杂业务流
  • 支持分布式压测
  • Web UI 直观

7. Selenium:经典 Web 自动化工具 🌐

官网:https://www.selenium.dev/

WebDriver 文档:https://www.selenium.dev/documentation/webdriver/

Selenium 是浏览器自动化的经典工具,支持多语言、多浏览器、多平台。

适用场景

  • Web UI 自动化
  • 回归测试
  • 跨浏览器测试
  • 老项目自动化维护
  • 与 Selenium Grid 做分布式浏览器测试

核心概念

概念 说明
WebDriver 驱动浏览器的核心接口
Locator 元素定位方式,如 id、name、css、xpath
WebElement 页面元素对象
Wait 等待元素加载或状态变化
Grid 分布式运行测试

Python 示例

python 复制代码
from selenium import webdriver
from selenium.webdriver.common.by import By

browser = webdriver.Chrome()
browser.get("https://example.com/login")
browser.find_element(By.ID, "username").send_keys("admin")
browser.find_element(By.ID, "password").send_keys("123456")
browser.find_element(By.CSS_SELECTOR, "button[type='submit']").click()

优点

  • 历史悠久,资料多
  • 支持语言多
  • 支持浏览器多
  • 企业中应用广泛

局限

  • 等待处理容易导致脚本不稳定
  • 配置和维护成本相对高
  • 对现代 Web 的某些体验不如 Playwright 简洁

8. Playwright:现代 Web 自动化工具 🎭

官网:https://playwright.dev/

写测试文档:https://playwright.dev/docs/writing-tests

Playwright 支持 Chromium、Firefox、WebKit,适合现代 Web E2E 测试。

适用场景

  • Web E2E 自动化测试
  • 多浏览器测试
  • 截图、视频、Trace 调试
  • 自动等待元素可操作
  • CI/CD 自动化回归

示例

javascript 复制代码
import { test, expect } from '@playwright/test';

test('用户可以登录系统', async ({ page }) => {
  await page.goto('https://example.com/login');
  await page.getByLabel('用户名').fill('admin');
  await page.getByLabel('密码').fill('123456');
  await page.getByRole('button', { name: '登录' }).click();
  await expect(page).toHaveURL(/dashboard/);
});

学习重点

text 复制代码
1. 安装和初始化
2. 页面跳转 page.goto
3. 元素定位 locator
4. 点击、输入、选择
5. expect 断言
6. 截图、视频、Trace
7. 多浏览器运行
8. Page Object Model
9. 登录态复用
10. CI/CD 集成

9. Cypress:Web E2E 与组件测试工具 🧪

官网:https://www.cypress.io/

文档:https://docs.cypress.io/app/get-started/why-cypress

Cypress 常用于现代 Web 应用测试,提供可视化运行界面和良好的调试体验。

优点

  • 调试体验好
  • 可视化运行过程
  • 适合 E2E 和组件测试
  • 断言语法清晰

局限

  • 跨浏览器和多标签页场景限制较多
  • 与 Playwright 相比,某些复杂浏览器能力较弱

10. Appium:移动端自动化工具 📱

官网文档:https://appium.io/docs/en/

Appium 用于 Android、iOS、桌面、浏览器等多平台 UI 自动化。

适用场景

  • Android App 自动化测试
  • iOS App 自动化测试
  • H5 混合 App 测试
  • 多设备自动化回归

核心概念

概念 说明
Appium Server 自动化服务端
Client Java/Python/JS 测试代码
Driver Android/iOS 自动化驱动
Capability 设备、App、系统配置
Inspector 查看元素层级和定位信息

学习重点

text 复制代码
1. Android SDK / Xcode 环境
2. Appium Server 安装
3. 设备连接与调试
4. 元素定位
5. 点击、输入、滑动
6. Toast、弹窗、权限处理
7. 真机与模拟器测试
8. 多设备并发运行

11. pytest:Python 自动化测试框架 🐍

文档:https://docs.pytest.org/

pytest 是 Python 生态中非常常用的测试框架,适合接口自动化、单元测试、自动化框架封装。

示例

python 复制代码
import requests


def test_get_user():
    res = requests.get("https://test.example.com/api/users/1")
    assert res.status_code == 200
    assert res.json()["code"] == 0

核心能力

  • assert 断言
  • fixture 前后置处理
  • 参数化测试
  • 插件机制
  • 测试报告
  • 与 Allure 集成
  • 与 Jenkins / GitLab CI 集成

12. JUnit / TestNG:Java 测试框架 ☕

JUnit 官网:https://junit.org/

TestNG 文档:https://testng.org/

Java 技术栈中常用 JUnit 和 TestNG 做单元测试、接口自动化和集成测试。

JUnit 适合

  • Java 单元测试
  • Spring Boot 测试
  • 开发自测
  • CI 中快速反馈

TestNG 适合

  • 更复杂的测试组织
  • 分组测试
  • 依赖测试
  • 参数化测试
  • 自动化测试框架

13. Robot Framework:关键字驱动自动化 🤖

官网:https://robotframework.org/

用户指南:https://robotframework.org/robotframework/latest/RobotFrameworkUserGuide.html

Robot Framework 是关键字驱动测试框架,适合验收测试、接口测试、UI 自动化和 RPA。

特点

  • 语法接近自然语言
  • 适合非纯代码人员参与
  • 关键字复用性强
  • 支持 Web、API、数据库、文件等扩展库

14. Burp Suite:Web 安全测试工具 🔐

官网:https://portswigger.net/burp

Burp Suite 是 Web 安全测试中非常重要的工具,常用于抓包、修改请求、漏洞验证、扫描。

核心模块

模块 说明
Proxy 代理抓包,拦截请求和响应
Repeater 手工重复发送和修改请求
Intruder 参数爆破、模糊测试
Scanner 自动漏洞扫描,专业版功能更强
Decoder 编码解码
Comparer 对比请求或响应差异

学习重点

text 复制代码
1. 配置浏览器代理
2. 安装 HTTPS 证书
3. 抓取请求
4. 修改参数重放
5. 测试越权
6. 测试 SQL 注入、XSS
7. 分析 Cookie、Token、Header

15. OWASP ZAP:开源安全测试工具 🕷️

官网:https://www.zaproxy.org/

快速入门:https://www.zaproxy.org/getting-started/

ZAP 是 OWASP 旗下开源 Web 安全测试工具,适合安全测试入门和自动化安全扫描。

适用场景

  • Web 安全扫描
  • API 安全测试
  • 安全回归测试
  • CI/CD 中进行基础 DAST 扫描

16. Jira / 禅道 / TestRail:测试管理工具 📋

Jira:https://www.atlassian.com/software/jira

禅道:https://www.zentao.net/

TestRail:https://www.testrail.com/

主要用途

工具 适合场景
Jira 敏捷项目管理、Bug 跟踪、任务流转
禅道 国内团队常用,需求、任务、Bug、用例一体化
TestRail 专业测试用例管理、测试计划、测试执行、报告

测试管理核心能力

  • 需求管理
  • 测试用例管理
  • 测试计划管理
  • 测试执行记录
  • 缺陷跟踪
  • 报表统计
  • 版本管理
  • 权限管理

17. Allure Report:自动化测试报告工具 📊

官网:https://allurereport.org/

Allure Report 常用于自动化测试报告展示。

能展示什么?

  • 测试通过率
  • 失败用例
  • 执行耗时
  • 用例步骤
  • 截图和日志
  • 历史趋势
  • 分类统计
  • flaky 不稳定用例

适合结合

  • pytest
  • JUnit
  • TestNG
  • Playwright
  • Selenium
  • Jenkins
  • GitLab CI

18. Jenkins / GitLab CI / GitHub Actions:持续集成 🚀

Jenkins:https://www.jenkins.io/

GitLab CI:https://docs.gitlab.com/ci/

GitHub Actions:https://docs.github.com/actions

测试在 CI/CD 中的作用

text 复制代码
提交代码 → 拉取代码 → 安装依赖 → 构建 → 单元测试 → 接口测试 → UI 自动化 → 生成报告 → 通知结果 → 部署

质量门禁示例

门禁 要求
单元测试 通过率 100%
接口测试 核心接口全部通过
覆盖率 不低于 80%
安全扫描 无高危漏洞
性能测试 95% 响应时间小于 500ms

十三、接口测试详细讲解

1. 接口测试流程

text 复制代码
阅读接口文档 → 设计测试点 → 准备测试数据 → 发送请求 → 校验响应 → 校验数据库 → 异常测试 → 自动化回归

2. 接口测试用例模板

字段 示例
用例编号 API_LOGIN_001
接口名称 用户登录
请求地址 /api/login
请求方式 POST
前置条件 用户已注册
请求参数 username、password
测试数据 admin / 123456
预期状态码 200
预期业务码 code = 0
预期结果 返回 token
数据库校验 登录日志写入成功

3. 接口测试重点场景

正常场景

  • 参数正确
  • 权限正确
  • 数据存在
  • 状态合法

异常场景

  • 缺少必填参数
  • 参数类型错误
  • 参数超长
  • 参数为空
  • 参数格式错误
  • 数据不存在
  • Token 过期
  • 权限不足
  • 重复提交
  • 服务异常

安全场景

  • 越权访问
  • SQL 注入
  • XSS 参数
  • 重放攻击
  • 敏感字段泄露
  • Header 伪造

4. 接口断言维度

维度 示例
HTTP 状态码 200、401、403、500
业务状态码 code = 0
响应字段 token、userId、orderId
字段类型 id 是 number,name 是 string
字段长度 手机号 11 位
响应时间 小于 500ms
数据库 订单状态是否变更
缓存 Redis 是否写入
消息队列 是否发送消息

十四、性能测试详细讲解

1. 性能测试核心指标

指标 说明
响应时间 RT 一次请求从发出到返回耗时
TPS 每秒完成事务数
QPS 每秒请求数
并发用户数 同时操作系统的用户数
吞吐量 单位时间处理的数据量
错误率 失败请求占比
CPU 使用率 服务器 CPU 压力
内存使用率 是否内存泄漏
磁盘 IO 是否磁盘读写瓶颈
网络 IO 带宽是否打满
数据库慢查询 SQL 是否拖慢系统

2. 性能测试类型

类型 目标
基准测试 建立当前系统性能基线
负载测试 验证预期压力下表现
压力测试 找系统极限
稳定性测试 长时间运行是否稳定
峰值测试 突发流量是否能抗住
容量测试 数据量增长后的性能表现

3. 性能测试流程

text 复制代码
明确目标 → 选择场景 → 准备数据 → 编写脚本 → 试运行 → 正式压测 → 监控资源 → 分析瓶颈 → 输出报告 → 优化复测

4. 性能测试报告关注

  • 测试目标
  • 测试环境
  • 测试数据量
  • 并发模型
  • 响应时间统计
  • TPS / QPS
  • 错误率
  • 服务器资源
  • 数据库表现
  • 瓶颈分析
  • 优化建议

5. 常见性能瓶颈

层级 问题
前端 静态资源过大、请求过多
网关 限流配置不合理
应用服务 线程池不足、代码同步阻塞
数据库 慢 SQL、索引缺失、锁等待
缓存 缓存穿透、击穿、雪崩
消息队列 消费速度低于生产速度
服务器 CPU、内存、磁盘、网络瓶颈

十五、安全测试详细讲解

1. 安全测试基础流程

text 复制代码
信息收集 → 认证测试 → 授权测试 → 输入验证测试 → 会话测试 → 文件上传测试 → 业务逻辑测试 → 漏洞验证 → 报告输出

2. 常见安全漏洞

SQL 注入

风险:攻击者通过输入特殊 SQL 修改查询逻辑。

测试输入:

text 复制代码
' OR '1'='1
' OR 1=1 --
admin' --

XSS

风险:恶意脚本在用户浏览器执行。

测试输入:

html 复制代码
<script>alert(1)</script>
<img src=x onerror=alert(1)>

越权访问

风险:用户访问不属于自己的数据。

示例:

text 复制代码
用户 A 订单:/api/orders/1001
用户 B 修改请求中的 orderId=1001
如果 B 能看到 A 的订单,就是越权漏洞。

文件上传漏洞

测试点:

  • 是否限制文件类型
  • 是否校验文件内容
  • 是否限制文件大小
  • 是否重命名文件
  • 上传目录是否可执行脚本
  • 是否能上传 php、jsp、exe、html

3. 安全测试工具

工具 用途
Burp Suite 抓包、重放、漏洞验证、渗透测试辅助
OWASP ZAP 开源 Web 安全扫描和代理测试
Nmap 端口扫描、服务识别
SQLMap SQL 注入自动化检测
Wireshark 网络包分析

4. 安全测试学习参考


十六、自动化测试详细讲解

1. 自动化测试分层

text 复制代码
        UI / E2E 自动化
      接口自动化 / 集成测试
    单元测试 / 组件测试

建议:

  • 单元测试数量最多
  • 接口测试覆盖核心业务
  • UI 自动化只覆盖核心主流程

2. 自动化测试框架组成

模块 说明
用例层 测试用例脚本
业务层 封装业务操作
页面层 页面元素和操作封装
数据层 测试数据管理
配置层 环境地址、账号、数据库配置
工具层 日志、截图、请求、数据库工具
报告层 Allure、HTML 报告
CI 层 Jenkins、GitLab CI 自动执行

3. 自动化测试设计原则

原则 说明
稳定优先 不稳定脚本会降低团队信任
分层封装 降低维护成本
数据独立 每条用例尽量不互相依赖
断言明确 不只看页面没报错,要验证结果
可重复执行 本地和 CI 都能运行
日志清晰 失败时能快速定位
只自动化高价值场景 不追求 100% UI 自动化

4. 自动化测试适合场景

  • 登录、注册、下单、支付等主流程
  • 核心接口回归
  • 数据驱动批量验证
  • 多浏览器兼容回归
  • 每日构建冒烟测试
  • 上线前回归测试

5. 自动化测试不适合场景

  • 需求频繁变化的功能
  • 一次性活动页面
  • 强视觉主观判断
  • 需要人工判断体验的问题
  • 环境极不稳定的系统

十七、移动端测试详细讲解

1. 移动端测试范围

类型 测试点
安装卸载 首次安装、覆盖安装、卸载重装
启动 冷启动、热启动、启动时间
功能 登录、业务流程、表单、支付
兼容性 不同品牌、系统版本、分辨率
网络 Wi-Fi、4G、5G、弱网、断网
权限 相机、相册、定位、通知、麦克风
中断 电话、短信、切后台、锁屏
性能 CPU、内存、电量、流量、卡顿
安全 本地存储、抓包、证书、越权
升级 版本升级、数据兼容

2. Android 测试重点

  • 不同厂商系统差异
  • 权限弹窗
  • 后台保活
  • 安装包兼容
  • WebView 差异
  • 返回键逻辑
  • 通知权限

3. iOS 测试重点

  • 系统权限弹窗
  • 刘海屏、灵动岛、安全区域
  • App Store 审核规则相关
  • 后台切换
  • 推送通知
  • Safari / WKWebView 差异

4. 移动端常用工具

工具 用途
Appium 移动端自动化
Android Studio 模拟器、日志、调试
Xcode iOS 调试和模拟器
Charles 抓包
Fiddler 抓包
ADB Android 设备调试
TestFlight iOS 测试分发
Firebase Test Lab 云端设备测试

十八、测试文档模板

1. 测试用例模板

字段 示例
用例编号 TC_ORDER_001
模块 订单模块
用例标题 用户提交普通商品订单成功
前置条件 用户已登录,商品有库存
测试步骤 选择商品 → 提交订单 → 支付
测试数据 商品 ID、用户账号、地址
预期结果 订单创建成功,状态为待支付
实际结果 执行后填写
优先级 P0
执行状态 通过 / 失败 / 阻塞
备注 记录特殊说明

2. 测试计划模板

text 复制代码
1. 项目背景
2. 测试目标
3. 测试范围
4. 不测试范围
5. 测试类型
6. 测试环境
7. 测试数据
8. 人员分工
9. 时间计划
10. 准入标准
11. 准出标准
12. 风险与应对

3. 测试报告模板

text 复制代码
1. 测试版本
2. 测试时间
3. 测试人员
4. 测试范围
5. 用例执行统计
6. 缺陷统计
7. 遗留问题
8. 风险说明
9. 测试结论
10. 上线建议

十九、项目实战:电商系统测试方案

1. 系统模块

text 复制代码
用户模块
商品模块
购物车模块
订单模块
支付模块
优惠券模块
库存模块
物流模块
退款模块
后台管理模块

2. 用户模块测试点

功能 测试点
注册 手机号、验证码、密码规则、协议勾选
登录 账号密码、验证码、Token、错误次数限制
修改资料 昵称、头像、手机号、邮箱
地址管理 新增、编辑、删除、默认地址
权限 普通用户、会员、管理员

3. 商品模块测试点

功能 测试点
商品列表 分类、筛选、排序、分页
商品详情 图片、价格、库存、规格
搜索 关键词、空搜索、特殊字符
上下架 下架商品是否不可购买
库存 库存为 0 是否禁止下单

4. 购物车测试点

场景 测试点
加入购物车 单规格、多规格、重复添加
修改数量 加、减、超库存、最小值
删除商品 单个删除、批量删除
勾选商品 全选、反选、部分选择
价格计算 商品金额、优惠金额、合计金额

5. 订单模块测试点

场景 测试点
提交订单 地址、商品、库存、优惠券
订单状态 待支付、已支付、已发货、已完成、已取消
取消订单 未支付订单取消后库存恢复
超时关闭 超时未支付自动取消
并发下单 库存不能超卖

6. 支付模块测试点

场景 测试点
支付成功 订单变为已支付
支付失败 订单保持待支付或失败状态
重复支付 防止重复扣款
支付回调 回调幂等处理
金额校验 前端金额不能篡改

7. 性能测试场景

场景 目标
首页访问 验证高峰访问能力
商品详情 验证热点商品访问
提交订单 验证并发下单能力
支付回调 验证回调处理能力
秒杀抢购 验证库存扣减和限流

8. 安全测试场景

场景 风险
修改订单金额 低价购买
修改 userId 越权查看订单
重放支付回调 重复修改订单状态
暴力破解登录 账号安全风险
上传头像 文件上传漏洞

二十、学习路线规划

阶段 1:测试基础,1-2 周 🧱

学习内容:

text 复制代码
软件测试概念
STLC 测试流程
测试用例设计
Bug 管理
功能测试
冒烟测试
回归测试
兼容性测试

练习:

text 复制代码
测试登录注册页面
测试商品列表页面
测试表单提交功能
测试文件上传功能

阶段 2:接口测试,2-4 周 🔗

学习内容:

text 复制代码
HTTP 协议
状态码
JSON
Cookie / Session / Token
Postman / Apifox
接口断言
接口测试用例
SQL 数据校验

练习:

text 复制代码
测试登录接口
测试新增/编辑/删除接口
测试分页接口
测试 Token 过期
测试权限接口

阶段 3:数据库、Linux、日志,2-4 周 🐧

学习内容:

text 复制代码
SQL 查询
多表 JOIN
Linux 常用命令
日志查看
Nginx 基础
Redis 基础

练习:

text 复制代码
通过数据库验证订单状态
通过日志定位接口报错
通过 Linux 查看服务状态

阶段 4:自动化测试,1-2 个月 🤖

学习内容:

text 复制代码
Python 或 Java
pytest / JUnit / TestNG
Selenium / Playwright
接口自动化框架
数据驱动
Allure 报告
CI/CD 集成

练习:

text 复制代码
写登录接口自动化
写订单接口自动化
写 Web 登录自动化
生成 Allure 测试报告
接入 Jenkins 自动运行

阶段 5:性能测试,1 个月 ⚡

学习内容:

text 复制代码
JMeter
k6
性能指标
线程组
参数化
断言
监控
瓶颈分析

练习:

text 复制代码
压测登录接口
压测商品列表接口
压测下单接口
分析 TPS、响应时间、错误率

阶段 6:安全测试基础,1 个月 🔐

学习内容:

text 复制代码
OWASP Top 10
Burp Suite
OWASP ZAP
SQL 注入
XSS
CSRF
越权
文件上传漏洞

练习:

text 复制代码
抓包修改参数
测试越权访问
测试 XSS 输入
测试文件上传限制

阶段 7:测试开发进阶,长期 🚀

学习内容:

text 复制代码
自动化测试框架封装
测试平台开发
Mock 平台
质量看板
Docker
Kubernetes
持续测试
质量门禁

目标岗位:

text 复制代码
高级测试工程师
自动化测试工程师
性能测试工程师
安全测试工程师
测试开发工程师
SDET
质量工程师

二十一、面试题与参考答案

1. 软件测试的目的是什么?

答:软件测试的目的是发现缺陷、验证需求、降低上线风险、提升软件质量,并为是否上线提供质量依据。测试不能证明软件完全没有 Bug,只能在有限资源下尽可能发现问题并评估风险。


2. 测试用例包含哪些内容?

答:测试用例通常包含用例编号、模块、标题、前置条件、测试步骤、测试数据、预期结果、实际结果、优先级、执行状态、备注等。


3. 冒烟测试和回归测试有什么区别?

答:冒烟测试用于快速判断版本是否具备进一步测试条件;回归测试用于验证修改后旧功能是否受影响。


4. 黑盒测试和白盒测试有什么区别?

答:黑盒测试不关注代码内部实现,只验证输入和输出;白盒测试关注代码结构、分支、路径和内部逻辑。


5. 你如何设计登录功能测试用例?

答:从正常登录、错误账号、错误密码、空值、验证码、账号禁用、多次失败锁定、Token 过期、退出登录、权限跳转、安全风险、兼容性等方面设计。


6. Bug 的严重程度和优先级有什么区别?

答:严重程度表示 Bug 对系统影响有多大,优先级表示 Bug 应该多快修复。严重程度高的 Bug 通常优先级也高,但也有例外。


7. 接口测试主要测什么?

答:接口测试主要验证请求方法、参数校验、状态码、返回结构、业务逻辑、权限鉴权、异常处理、性能、安全和数据一致性。


8. 接口自动化怎么做?

答:先整理接口文档,设计测试用例,然后使用 Postman、pytest、requests、RestAssured 等工具编写脚本,加入参数化、断言、测试数据管理和报告,最后接入 CI/CD 自动执行。


9. 性能测试关注哪些指标?

答:响应时间、TPS、QPS、并发数、吞吐量、错误率、CPU、内存、磁盘 IO、网络 IO、数据库慢查询、95/99 分位响应时间等。


10. 什么是压力测试和负载测试?

答:负载测试是在预期负载下验证系统是否稳定;压力测试是不断增加压力,找出系统极限和崩溃点。


11. 什么是 SQL 注入?如何测试?

答:SQL 注入是攻击者通过输入恶意 SQL 改变查询逻辑。可以输入 ' OR 1=1 -- 等特殊字符串,观察是否绕过登录或导致数据库异常。


12. 什么是越权测试?

答:越权测试验证用户是否能访问或操作不属于自己的资源。例如用户 B 修改订单 ID 访问用户 A 的订单,如果能访问就是越权漏洞。


13. 自动化测试适合哪些场景?

答:适合稳定、高频、重复、核心流程、数据驱动、回归测试场景。不适合频繁变化、一次性需求、强主观判断的场景。


14. 如何提高自动化测试稳定性?

答:使用显式等待、稳定定位方式、合理封装、测试数据隔离、环境稳定、失败截图和日志、减少用例间依赖、避免固定 sleep。


15. JMeter 线程组是什么?

答:线程组用于模拟虚拟用户,控制并发用户数、启动时间、循环次数等,是 JMeter 性能测试的核心组件。


16. 如何判断一个版本是否可以上线?

答:要看核心用例是否通过,P0/P1 Bug 是否清零,遗留问题是否可接受,性能和安全是否达标,业务方是否验收通过,测试报告是否给出明确结论。


17. 什么是测试准入和准出?

答:准入是进入测试前必须满足的条件,例如需求明确、版本部署成功、开发自测通过;准出是测试结束或上线前必须满足的条件,例如核心用例通过、严重 Bug 清零。


18. 如何测试文件上传?

答:测试文件格式、大小、文件名、中文名、特殊字符、重复上传、非法格式、空文件、大文件、上传中断、预览、删除、安全限制等。


19. 如何测试分页?

答:测试第一页、最后一页、中间页、无数据、每页条数、跳页、排序后分页、搜索后分页、删除最后一条后的分页表现。


20. 如何测试搜索功能?

答:测试精确搜索、模糊搜索、空搜索、特殊字符、大小写、空格、超长关键词、无结果、多条件组合、搜索后分页和排序。


21. 如何做兼容性测试?

答:根据用户设备占比和业务场景,选择主流浏览器、操作系统、手机品牌、分辨率和网络环境,覆盖核心功能和高风险页面。


22. 如何定位一个接口 500 错误?

答:先确认请求参数、Header、Token、环境和接口地址是否正确,再查看后端日志、数据库日志、异常堆栈,必要时和开发确认代码逻辑。


23. 什么是幂等性?怎么测试?

答:幂等性指同一请求执行多次结果一致,不应产生重复副作用。比如支付回调重复发送,不应重复扣款或重复发货。


24. 如何设计订单系统测试?

答:从用户、商品、购物车、订单、支付、库存、优惠券、物流、退款、权限、性能、安全、并发、数据一致性等方面设计。


25. 你常用哪些测试工具?

答:测试管理可用禅道/Jira/TestRail,接口测试可用 Postman/Apifox,性能测试可用 JMeter/k6,自动化可用 Selenium/Playwright/pytest/JUnit,安全测试可用 Burp Suite/OWASP ZAP,报告可用 Allure,CI/CD 可用 Jenkins/GitLab CI/GitHub Actions。


二十二、官方资源与文档链接

下面所有链接均显示完整 URL,并使用 Markdown 链接格式,点击即可跳转。

1. 测试理论与标准

资源 链接
ISTQB 官方认证体系 https://istqb.org/
ISTQB CTFL Foundation Level https://istqb.org/certifications/certified-tester-foundation-level-ctfl-v4-0/
ISO/IEC/IEEE 29119 软件测试标准 https://www.iso.org/standard/81291.html
ISO/IEC/IEEE 29119 介绍站点 https://softwaretestingstandard.org/

2. 接口测试与 API 文档

资源 链接
Postman 官方文档 https://learning.postman.com/
Postman CLI 文档 https://learning.postman.com/docs/postman-cli/postman-cli-run-collection/
Apifox 帮助文档 https://docs.apifox.com/help
OpenAPI Specification https://spec.openapis.org/oas/latest.html
Swagger 官方文档 https://swagger.io/docs/
curl 官方站点 https://curl.se/

3. Web 自动化测试

资源 链接
Selenium 官网 https://www.selenium.dev/
Selenium WebDriver 文档 https://www.selenium.dev/documentation/webdriver/
Playwright 官网 https://playwright.dev/
Playwright 写测试文档 https://playwright.dev/docs/writing-tests
Cypress 官网 https://www.cypress.io/
Cypress 官方文档 https://docs.cypress.io/

4. 移动端自动化测试

资源 链接
Appium 官方文档 https://appium.io/docs/en/
Android Debug Bridge ADB https://developer.android.com/tools/adb
Android Studio https://developer.android.com/studio
Xcode https://developer.apple.com/xcode/
TestFlight https://developer.apple.com/testflight/

5. 单元测试与测试框架

资源 链接
pytest 文档 https://docs.pytest.org/
JUnit 官网 https://junit.org/
TestNG 文档 https://testng.org/
Robot Framework 官网 https://robotframework.org/
Robot Framework 用户指南 https://robotframework.org/robotframework/latest/RobotFrameworkUserGuide.html
Cucumber BDD 文档 https://cucumber.io/docs/bdd/

6. 性能测试

资源 链接
Apache JMeter 官网 https://jmeter.apache.org/
JMeter 用户手册 https://jmeter.apache.org/usermanual/index.html
k6 官网 https://k6.io/
k6 官方文档 https://grafana.com/docs/k6/latest/
Locust 官网 https://locust.io/
Locust 文档 https://docs.locust.io/

7. 安全测试

资源 链接
OWASP WSTG Web 安全测试指南 https://owasp.org/www-project-web-security-testing-guide/
OWASP Top 10 https://owasp.org/www-project-top-ten/
OWASP MASTG 移动安全测试指南 https://mas.owasp.org/MASTG/
OWASP ZAP 官网 https://www.zaproxy.org/
OWASP ZAP 快速入门 https://www.zaproxy.org/getting-started/
Burp Suite 官网 https://portswigger.net/burp
PortSwigger Web Security Academy https://portswigger.net/web-security

8. 测试管理与缺陷管理

资源 链接
Jira 官网 https://www.atlassian.com/software/jira
Jira Bug Tracking https://www.atlassian.com/software/jira/features/bug-tracking
禅道官网 https://www.zentao.net/
TestRail 官网 https://www.testrail.com/
TestRail 介绍文档 https://support.testrail.com/hc/en-us/articles/7076810203028-Introduction-to-TestRail

9. 测试报告与 CI/CD

资源 链接
Allure Report 官网 https://allurereport.org/
Jenkins 官网 https://www.jenkins.io/
GitLab CI/CD 文档 https://docs.gitlab.com/ci/
GitHub Actions 文档 https://docs.github.com/actions

10. 数据库、日志、监控与辅助工具

资源 链接
DBeaver 官网 https://dbeaver.io/
MySQL 文档 https://dev.mysql.com/doc/
PostgreSQL 文档 https://www.postgresql.org/docs/
Redis 文档 https://redis.io/docs/latest/
Grafana 文档 https://grafana.com/docs/
Prometheus 文档 https://prometheus.io/docs/introduction/overview/
Elastic 文档 https://www.elastic.co/docs
Wireshark 官网 https://www.wireshark.org/
Charles 官网 https://www.charlesproxy.com/
Fiddler 官网 https://www.telerik.com/fiddler

总结 🎯

软件测试是一套完整的质量保障体系,不只是功能点验证。完整的软件测试能力应包括:

text 复制代码
测试理论 + 需求分析 + 用例设计 + Bug 管理
接口测试 + 数据库 + Linux + 日志分析
自动化测试 + 性能测试 + 安全测试
测试管理工具 + CI/CD + 测试报告 + 质量门禁

建议学习顺序:

text 复制代码
测试基础 → 测试用例 → Bug 管理 → 接口测试 → SQL/Linux → 自动化测试 → 性能测试 → 安全测试 → CI/CD → 测试开发

如果目标是就业,优先掌握:

text 复制代码
功能测试 + 接口测试 + SQL + Linux + Postman/Apifox + JMeter + Selenium/Playwright + pytest/JUnit + Jenkins

如果目标是高薪方向,继续深入:

text 复制代码
自动化框架设计 + 性能瓶颈分析 + 安全测试 + 测试平台开发 + DevOps 质量工程
相关推荐
弹简特4 小时前
【接口自动化】02-Pytest固件fixture核心机制与Allure企业级报告实战
自动化·pytest·测试
汽车仪器仪表相关领域4 小时前
南华 NHASM-1 型稳态工况法汽车排气检测系统|国标合规汽油车工况检测专用设备
功能测试·安全·单元测试·汽车·压力测试·可用性测试
明航咨询—张老师5 小时前
安全左移的利器:CISAW-SS安全软件认证如何重塑开发安全基因?
软件工程·安全架构·安全性测试
钧界编程20 小时前
EasyClick 入门指南(九):异常处理与脚本健壮性 —— 从“不堪一击”到“金刚不坏”
测试
全栈人月20 小时前
使用 Kilo Code 解决遗留代码恐惧症
人工智能·单元测试·代码规范
大刚测试开发实战1 天前
TestHub测试平台整体功能简介
django·llm·测试
ClouGence1 天前
不用写 Selenium,零代码的 UI 自动化测试工具!
selenium·测试
大刚测试开发实战1 天前
年度重磅!TestHub测试平台正式开源!
github·测试
阿狸猿1 天前
论单元测试方法及应用
单元测试