一、按照测试目标分类(测试目的是什么)
主类别 | 细分说明 |
---|---|
1. 界面测试 | UI内容完整性、一致性、准确性、友好性,布局排版合理性,控件可用性等 |
2. 功能测试 | 检查软件功能是否符合需求说明书,常用黑盒方法:边界值、等价类、判定表等 |
3. 性能测试 | 关注响应速度、系统负载、吞吐量等,需基于架构与性能需求设计测试 |
4. 可靠性测试 | 评估系统稳定性、服务可用性(如99.99%、99.999%) |
5. 安全性测试 | 验证系统对数据、身份、访问权限的防护能力,防范SQL注入、XSS等攻击 |
6. 易用性测试 | 符合UI标准、直观性、操作灵活性、美观舒适度等 |
二、按照执行方式分类(是否运行程序)
主类别 | 细分说明 |
---|---|
1. 静态测试 | 不运行程序,仅分析代码/文档/结构,如代码审查、静态扫描 |
2. 动态测试 | 运行程序并输入测试数据,如功能测试、系统测试等 |
三、按照测试方法分类(看代码与否)
主类别 | 细分说明 |
---|---|
1. 白盒测试 | 分析程序结构和路径(语句覆盖、判定覆盖、路径覆盖等) |
2. 黑盒测试 | 基于功能需求进行测试(等价类、边界值、场景法等) |
3. 灰盒测试 | 结合黑盒和白盒,对输入输出及部分内部结构进行验证 |
一、白盒测试
✅ 强调对程序内部逻辑结构进行测试,关注“怎么实现的”。
🔹 主要应用阶段:
-
多用于 单元测试
-
由 开发人员或白盒测试工程师编写
🔹 特点:
-
需要阅读和理解源代码
-
关注每条路径是否被测试到
-
能提高代码质量,及时发现隐藏逻辑问题
🔹 常见方法(6种逻辑覆盖):
覆盖类型 | 描述说明 |
---|---|
1. 语句覆盖 | 要求程序中每条语句至少执行一次 |
2. 判定(分支)覆盖 | 要求每个分支(if/else)都执行到,判断结果为 T 和 F 各一次 |
3. 条件覆盖 | 每个判断条件的每个可能取值(T/F)都至少出现一次 |
4. 判定-条件覆盖 | 同时满足判定覆盖和条件覆盖的要求 |
5. 条件组合覆盖 | 所有条件变量的 T/F 组合都测试(复杂度高) |
6. 路径覆盖 | 要求程序中所有可能的执行路径都至少测试一次(数量通常是指数级) |
二、黑盒测试
✅ 不考虑程序内部实现,重点在于输入与输出是否符合需求说明书。
🔹 主要应用阶段:
-
多用于 系统测试、验收测试
-
由 测试工程师执行
🔹 特点:
-
不需要读代码,只需理解需求
-
能从用户角度检验功能是否正常
-
无法覆盖具体逻辑路径,可能遗漏内部缺陷
🔹 常用设计方法:
测试方法 | 描述说明 |
---|---|
1. 等价类划分法 | 将输入划分为有效/无效等价类,每类只取一个代表值进行测试 |
2. 边界值分析法 | 对输入的边界点和边界附近的值进行测试,如 [0,100] 测试 -1, 0, 1, 99, 100, 101 |
3. 判定表法 | 将输入条件与预期动作列为表格,覆盖所有输入组合,适用于复杂业务规则 |
4. 正交法 | 利用正交表从大量组合中选出有代表性的少数组合,提升测试效率 |
5. 场景法 | 根据真实业务流程设计测试用例,模拟用户操作路径 |
6. 错误推测法 | 基于经验假设容易出错的情况,如输入为0、空字符串、最大长度等 |
三、灰盒测试
✅ 结合黑盒和白盒测试,既看外部行为,也关注部分内部实现。
🔹 主要应用阶段:
-
多用于 集成测试
-
可由 测试人员与开发共同参与
🔹 特点:
-
不需要深入所有源代码,但会参考接口文档、中间模块结构
-
可以设计更有针对性的用例,如模拟接口调用、Mock 数据
-
较全面,适用于复杂系统间数据流/状态流的验证
✅ 总结对比表:
类别 | 是否看代码 | 代表测试者 | 应用阶段 | 典型方法/技术 |
---|---|---|---|---|
白盒测试 | ✅ 是 | 开发或白盒工程师 | 单元测试 | 语句/分支/路径/条件覆盖,静态扫描等 |
黑盒测试 | ❌ 否 | 测试工程师 | 系统、验收测试 | 等价类、边界值、场景法、判定表、错误猜测 |
灰盒测试 | ⚠️ 部分 | 联合测试者 | 集成测试 | 接口验证、中间状态分析、部分代码辅助设计用例 |
四、按照测试阶段分类(在哪个阶段进行)
主类别 | 细分说明 |
---|---|
1. 单元测试 | 对最小功能单元(函数/类)测试,主要用白盒方法 |
2. 集成测试 | 测试模块之间的接口与数据传递,结合白盒和黑盒方法 |
3. 系统测试 | 测试整个系统功能、性能、界面、安全性等,主要用黑盒测试 |
4. 验收测试 | 由用户或第三方进行确认测试,确认软件是否符合需求和交付标准 |
附加补充 | 冒烟测试:验证核心功能是否正常;回归测试:确保修改不引入新Bug (冒烟测活着没,回归测改坏没) |
五、按照是否手动执行分类
主类别 | 细分说明 |
---|---|
1. 手工测试 | 人工执行测试用例,对灵活性和异常情况测试有优势 |
2. 自动化测试 | 使用脚本与工具自动运行测试,提高效率,常用于回归、性能、安全性测试等 |
六、按照实施组织划分
主类别 | 细分说明 |
---|---|
1. Alpha测试 | 开发方内部模拟用户环境的测试(内测) |
2. Beta测试 | 实际用户使用中进行的公开测试(公测) |
3. 第三方测试 | 由独立测试机构进行,保障客观性与专业性 |
七、按照地域范围划分
主类别 | 细分说明 |
---|---|
1. 国际化测试 | 验证多语言、时区、货币等本地化因素是否正常 |
2. 本地测试 | 针对单一地区、本地配置和用户习惯进行的测试 |