QA之一 -- 常见测试类型和测试环境
QA(Quality Assurance 质量保证)
QA 是从流程、规范、设计、开发、测试到上线,全程保障产品质量的工作。
1)常见测试类型(按目的/层级)
A.单元测试(Unit Test)
- 测什么:单个类/方法的逻辑、边界条件、异常分支
- 特点:不依赖网络/DB,速度最快
- 工具:Junit5、Mockito、PIT
B.组件测试 / 模块测试 (Component Test)
- 测什么:某个模块内部组合(例如 Service + 校验 + 组装),依赖可用 stub/mock
- 特点:比单元测试稍大,单仍尽量不依赖外部系统
C.集成测试 (Integration Test)
- 测什么:与真实依赖的集成是否正确
- DB(Mybatis/JPA + 事务)
- Redis/Kafaka/ES
- 外部 HTTP/RPC 协议 (可用 mock server)
- 工具:Testcontainers、SpringBootTest (谨慎使用)
D.端到端测试 (E2E / System Test)
- 测什么:从入口 API 到落库/消息的完整链路
- 特点:覆盖关键路径,成本高、速度慢、数量少
- 工具:Postman/Newman、pytest、自动化脚本
E.回归测试 (Regression)
- 测什么:新版本是否破坏已有功能(可自动化 + 人工)
- 通常发生:发版前、修复 BUG 后
F.冒烟测试 (Smoke Test)
- 测什么:最关键功能是否能跑通(健康检查)
- 通常发生:部署到新环境后、发布后第一时间
G.性能测试 (Performance / Load / Stress)
- 测什么:QPS、延迟(P95/P99)、资源(CPU/内存)、瓶颈
- 类型:
- Load(负载):目标流量下表现
- Stress(压测):超过目标直到崩溃点
- Soak(稳定性):长时间运行看泄露/抖动
- 工具:JMeter、Gatling、K6
H.安全测试(Security Testing)
- SAST:源码静态扫描(Semgrep、SpotBugs、Sonar)
- SCA:依赖漏洞扫描(Dependency-Check、Snyk)
- DAST:动态扫描(ZAP、Burp)
- 渗透测试:人工/红队
I.兼容性测试(Compatibility)
- 测什么:不同 JDK、不同数据库版本、不同浏览器/客户端(视业务)
- 方法:API 向后兼容、协议兼容
J.灾备/容错测试(Resilience)
- 测什么:超时、重试、熔断、降级、限流、依赖不可用
- 方法:故障注入/Chaos(可选)
2)常见测试环境(按生命周期)
1)本地开发环境(Local)
- 开发者机器
- 单元测试为主,可用Docker 起 DB/Redis
2)开发/联调环境(DEV)
- 团队共享环境
- 用于接口联调、初步集成验证
- 数据可不严格,迭代快
3)测试环境(TEST / QA)
- QA主战场
- 功能测试、集成测试、自动化回归
4)预发布环境(STAGING / UAT / PRE)
- 尽量接近生产配置
- 灰度前验证、回归、性能测试、DAST
- 常用于业务验收(UAT)
5)生产环境(PROD)
- 正式对外
- 发布后要做:冒烟、监控验证、回滚预案
有些公司还会有:沙箱(Sandbox)、灰度环境(Gray)、压测环境(Perf)等。
3)一条典型的测试流程(从提交到上线)
1.开发本地:单元测试
2.提 MR:CI 跑单元测试 + SAST/SCA
3.合并后部署到 DEV:冒烟 + 联调
4.部署 TEST:功能测试 + 集成测试 + 回归
5.部署 STAGING/UAT:全量回归 + 性能/安全扫描(可选)
6.上线 PROD:灰度/蓝绿 + 上线冒烟 + 监控观察
学习技术不是用来写HelloWorld和Demo的,而是要用来解决线上系统的真实问题的.

浙公网安备 33010602011771号