测试工程概念


好的,我帮你把这些测试概念和覆盖率分类整理成一个清晰的体系,并给出具体例子。我们可以从两个维度来看:测试类型(功能/非功能/UI/API)覆盖率指标(专业 QA 关注的覆盖率)


一、按测试类型分类

类型 说明 覆盖点 / 举例
User Story / 功能测试 针对用户需求和业务功能 验证功能是否满足用户故事。
例:用户能成功注册账号并收到激活邮件
非功能测试 (NFR, Non-Functional Requirements) 验证系统在性能、可靠性、安全等方面的质量 性能覆盖:压力测试、负载测试、吞吐量覆盖等
例:系统在 1000 并发下响应时间 < 1s
可靠性覆盖:崩溃率、重启恢复能力等
例:服务在连续运行 7 天不崩溃
安全测试覆盖:权限验证、SQL 注入、XSS 攻击等
例:未登录用户不能访问敏感接口
API 测试 (AP 测试) 针对服务接口进行验证 验证请求/响应、状态码、错误处理、边界值
例:POST /user 接口参数缺失返回 400
UI 测试 验证用户界面交互 界面元素、点击流程、可视化结果
例:点击“提交”按钮后弹窗显示“成功提交”

二、专业 QA/测试工程师关注的覆盖率分类

这些覆盖率通常用于衡量测试的全面性和质量。可以和上面类型结合使用。

覆盖率类型 说明 举例
决策覆盖 (Decision Coverage / Branch Coverage) 每个判断(if/else)都至少被执行一次 if (x > 0) {...} else {...} 两条分支都要测试
条件覆盖 (Condition Coverage) 每个布尔条件至少取 true 和 false if (x>0 && y<5) → x>0 true/false, y<5 true/false 都要测试
边界覆盖 (Boundary Coverage) 测试边界值和临近值 输入范围 1~100 → 测试 0,1,2,99,100,101
等价类覆盖 (Equivalence Class Coverage) 将输入分成有效/无效等价类,每类选一个代表测试 年龄输入 0~150 → 有效类 1~150,无效类 <0 或 >150 各测试一次
场景覆盖 (Scenario Coverage) 测试实际业务流程或使用场景 用户注册 → 登录 → 下单 → 支付 → 发货,覆盖整个场景
参数组合覆盖 (Pairwise / Orthogonal Array Coverage) 对多个参数组合进行覆盖,尤其对交互影响大的情况 用户输入城市(3种) + 设备类型(2种) → 覆盖 3×2 组合或用 Pairwise 减少测试用例

三、结合类型和覆盖率的例子

测试类型 覆盖率方式 示例
User Story 功能测试 场景覆盖 测试购物流程:添加商品 → 支付 → 发票生成
API 测试 条件覆盖 + 边界覆盖 测试用户注册接口:用户名为空 / 超长 / 特殊字符
NFR 性能测试 场景覆盖 并发 1000 用户下完成支付流程的响应时间
NFR 可靠性 决策覆盖 服务异常重试机制是否覆盖所有异常分支
UI 测试 等价类覆盖 输入框只允许数字 → 输入字母、空值、特殊符号

自动化测试指标

在行业实践里,自动化测试覆盖率并不是只看一个指标,而是综合考虑多维度的覆盖能力,确保测试既全面又有价值。可以分为几个主要关注点:


1️⃣ 功能覆盖(Functional Coverage)

目标:确保自动化测试覆盖了核心业务功能和用户需求。

指标 说明 举例
User Story/场景覆盖率 业务流程或用户故事是否被自动化脚本覆盖 注册 → 登录 → 下单 → 支付流程
接口/API 覆盖率 系统所有 API 是否至少被调用一次 /register, /login, /checkout 等接口都被测试
状态码覆盖率 API 返回的各种 HTTP 状态码是否被触发 200, 400, 401, 500
逻辑/分支覆盖率 接口或函数内 if/else、switch 分支是否被执行 if age>150 → error 分支被测试

2️⃣ 输入/参数覆盖(Input/Parameter Coverage)

目标:验证各种输入和参数组合是否被充分测试。

指标 说明 举例
等价类覆盖率 输入划分的有效/无效等价类是否被覆盖 年龄输入 0~150 为有效,<0 或 >150 为无效
边界值覆盖率 输入边界值和邻近值是否被覆盖 输入长度 0,1,最大长度,最大长度+1
参数组合覆盖率 多参数交互是否被覆盖(Pairwise 或 Orthogonal) 用户类型 × 权限 × 设备类型组合测试

3️⃣ UI / 端到端覆盖(UI / End-to-End Coverage)

目标:验证用户界面和流程操作是否正确。

指标 说明 举例
场景覆盖率 用户操作流程是否完整自动化 登录 → 搜索 → 加购物车 → 下单 → 支付
控件状态覆盖 不同控件状态是否被验证 按钮禁用/启用,弹窗显示/隐藏

4️⃣ 非功能覆盖(Non-Functional Coverage)

目标:确保系统在性能、可靠性、安全等维度满足要求。

指标 说明 举例
性能覆盖率 高并发、负载场景是否被自动化测试 并发 1000 用户下完成支付流程
可靠性覆盖率 异常场景、重试机制是否被触发 服务断开后自动重连是否生效
安全覆盖率 权限、注入、越权等安全场景是否覆盖 普通用户访问管理接口被拒绝

5️⃣ 自动化测试自身指标(Tool / Quality Coverage)

指标 说明 举例
脚本执行覆盖率 自动化脚本实际执行的用例比例 自动化回归覆盖 80% 核心业务用例
用例通过率 / 故障发现率 自动化测试发现缺陷能力 自动化用例每轮发现新缺陷数量
重复性 / 回归覆盖 同一功能的多轮回归是否被覆盖 新版本上线,旧功能是否自动化回归验证

🔹 总结

在行业实践中,自动化测试覆盖率关注的是“多维度的覆盖能力”,而不是单纯看代码覆盖率。核心关注点包括:

  1. 业务功能覆盖(场景、API、分支)
  2. 输入和参数覆盖(等价类、边界、组合)
  3. UI/端到端流程覆盖
  4. 非功能覆盖(性能、可靠性、安全)
  5. 自动化质量指标(执行率、缺陷发现率、回归覆盖)

最佳实践

image

明白,我帮你设计一张 “自动化测试覆盖率优先级图”,将覆盖类型按优先级分为 必须 100% 覆盖(高风险)部分覆盖(中低风险),覆盖功能、API、UI、非功能指标。


自动化测试覆盖率优先级图(文字版示意)

───────────────────────────────
  自动化测试覆盖率优先级图
───────────────────────────────

【高风险 – 必须 100% 覆盖】 🔴
-------------------------------------------------
功能覆盖:
  • 核心业务场景/用户故事(登录、支付、下单)
API 覆盖:
  • 核心接口调用
  • 核心状态码(200/400/401/500)
  • 核心逻辑/分支覆盖
参数覆盖:
  • 重要边界值
  • 核心等价类
UI/端到端:
  • 核心页面控件
非功能覆盖:
  • 核心接口性能/可靠性/安全场景
-------------------------------------------------

【中低风险 – 部分覆盖 / 抽样】 🟡
-------------------------------------------------
功能覆盖:
  • 次要业务流程
API 覆盖:
  • 参数组合 Pairwise/Orthogonal
  • 次要状态码/分支
参数覆盖:
  • 次要边界值
  • 次要等价类
UI/端到端:
  • 次要页面控件/低频流程
非功能覆盖:
  • 次要接口性能/压力测试
  • 非核心服务安全/可靠性测试
-------------------------------------------------
posted @ 2025-12-09 18:36  向着朝阳  阅读(3)  评论(0)    收藏  举报