测试认知
1 测试类型
1.1 按测试阶段划分
测试阶段反映了软件质量验证的递进过程,从代码单元到整体系统的逐步集成与验证。
| 阶段 | 测试对象 | 执行者 | 目的 | 示例 |
|---|---|---|---|---|
| 单元测试 | 函数、方法、类等最小模块 | 开发人员或白盒测试工程师 | 验证代码单元是否正确 | 测试一个加法函数 add(a, b) 的输出是否正确 |
| 集成测试 | 模块之间的接口与交互 | 开发或测试人员 | 验证模块集成后数据传输与协作是否正常 | 用户服务调用订单服务创建订单,检查数据是否流转成功 |
| 系统测试 | 整个软硬件系统 | 测试工程师 | 验证系统是否满足需求规格说明书 | 从注册→登录→下单→支付全流程测试 |
| 验收测试 | 业务功能是否符合用户预期 | 客户、产品经理、UAT用户 | 决定是否接受系统上线 | Alpha测试(内部环境)、Beta测试(真实用户环境) |
1.2 按测试方法划分
测试方法决定了测试人员对被测系统内部结构的了解程度,直接影响用例设计策略。
| 类型 | 描述 | 特点 | 常用技术/工具 |
|---|---|---|---|
| 黑盒测试 | 不关注内部代码结构,仅通过输入输出验证功能 | 用户视角,与实现分离 | 等价类划分、边界值分析、场景法 |
| 白盒测试 | 基于代码逻辑设计测试用例,查看内部路径 | 发现逻辑错误,成本高 | 语句覆盖、分支覆盖、路径覆盖 |
| 灰盒测试 | 了解部分内部结构(如接口、数据库),但以功能为主 | 兼具深度与广度 | API测试、数据库验证 |
1.3 按是否运行程序划分
该分类区分了静态分析与动态执行两种基本测试范式。
| 类型 | 是否运行程序 | 方法 | 示例 |
|---|---|---|---|
| 静态测试 | 否 | 代码审查、文档评审、静态分析工具扫描 | 使用SonarQube检测代码异味和安全漏洞 |
| 动态测试 | 是 | 运行程序并观察行为 | 功能测试、性能测试、回归测试 |
1.4 按执行方式划分
自动化程度是影响测试效率与可持续性的关键因素。
| 类型 | 描述 | 适用场景 |
|---|---|---|
| 手动测试 | 人工操作、记录结果 | 探索性测试、UI体验测试、初期验证 |
| 自动化测试 | 使用脚本/工具自动执行 | 回归测试、性能测试、大量重复场景 |
1.5 按测试对象/目的划分
此类测试聚焦特定质量属性,确保系统在多维度上达标。
- 功能测试:验证功能是否符合需求,如按钮点击、表单提交
- 性能测试:评估响应时间、吞吐量、并发能力
- 负载测试:模拟正常/峰值压力
- 压力测试:超出极限,观察崩溃点
- 并发测试:多用户同时操作
- 稳定性测试:长时间运行,检测内存泄漏
- 安全测试:排查SQL注入、XSS攻击、权限越界等漏洞
- 兼容性测试:验证在不同设备、浏览器、操作系统下的表现
- 易用性测试:评估操作是否直观、提示是否清晰
- 安装/卸载测试:验证安装包能否正常安装、升级、回滚、卸载干净
- 可靠性测试:长时间运行是否稳定,有无故障
1.6 其他重要测试类型
以下测试类型虽不构成独立层级,但在实际项目中具有不可替代的作用。
- 回归测试:代码修改后重新运行旧用例,防止“修旧出新错”
- 冒烟测试:对新版本快速验证核心功能是否可用,决定是否继续测试
- 探索性测试:无预设脚本,边学习、边设计、边执行,发现隐藏缺陷
2 标准化测试流程
1. 需求分析→ 2.测试计划→ 3.测试设计→ 4.环境搭建→ 5.测试执行→ 6.缺陷管理→ 7.测试报告→ 8.上线与复盘