当前位置: 首页 > news >正文

测试用例设计方法与理论基

一、测试理论基础(为什么要这样设计)

1.1 测试的目的与边界

概念含义对用例设计的启示
验证(Verification)产品是否“按规格做对”用例要可追溯到需求/设计条目
确认(Validation)产品是否“做对的事”需场景化、用户视角的补充用例
测试只能证明缺陷存在穷举通常不可行等价类、边界等方法在风险与成本间折中
缺陷集群性少数模块集中大量缺陷高风险模块提高用例密度与回归频率

小结:用例不是“写得越多越好”,而是在有限资源下最大化发现重要问题的概率

1.2 测试层级(测试金字塔思想)

常见分层:单元测试 → 接口/服务测试 → UI/端到端测试

  • 底层(单元):快、稳、定位准,适合覆盖分支与算法。
  • 中层(接口):验证业务规则与集成,性价比常最高。
  • 顶层(UI/E2E):慢、脆弱,适合关键用户路径与冒烟。

对用例文档的启示:同一需求可在不同层各写一部分用例,避免全部堆在 UI 手工用例里。

1.3 质量属性(非功能也要进用例)

除功能正确外,常见维度:性能、安全、兼容性、可用性、可维护性、可靠性等。
设计时自问:本需求是否影响其中某几项?若有,单列用例或检查项。

1.4 测试左移与右移(简要)

  • 左移:需求/设计阶段参与评审,提前写验收标准与可测性检查。
  • 右移:生产可观测、灰度、监控告警与用户反馈闭环。

用例设计可与左移结合:验收标准即用例骨架


二、测试用例的基本结构(怎么写才规范)

推荐字段(可按团队模板裁剪):

字段说明
用例编号唯一标识,便于追溯与自动化关联
标题一句话说清“测什么”
前置条件账号、数据、环境、开关状态
步骤可执行、可复现的操作序列
预期结果明确、可判定(界面/接口/DB/日志)
优先级P0 冒烟 / P1 核心 / P2 一般 / P3 边缘
关联需求需求 ID 或文档章节

好预期 vs 坏预期

  • 坏:登录成功(模糊)
  • 好:跳转至首页 URL 包含/home,顶部显示用户昵称“张三”,本地存储写入 token 字段且长度大于 20

三、黑盒设计方法(功能测试最常用)

以下方法可组合使用:先等价类划范围,再边界取值,再用判定表处理多条件组合,用场景法串用户路径。

3.1 等价类划分(Equivalence Partitioning)

思想:把输入域划分为若干类,每类选取少量代表值,假设同类行为等价。

步骤

  1. 划分有效等价类(合法输入)与无效等价类(非法输入)。
  2. 每个等价类至少 1 条用例覆盖。
  3. 无效类每次只违反一条规则(便于定位根因)。

示例:用户名注册(规则:3~20 位字母数字)

等价类代表值预期
有效-最短abc注册成功
有效-最长20 位字母数字注册成功
有效-中间user01注册成功
无效-过短ab提示长度错误
无效-过长21 位提示长度错误
无效-含特殊字符user@1提示格式错误
无效-空(空)提示必填

3.2 边界值分析(Boundary Value Analysis)

思想:缺陷常出现在边界附近。在等价类基础上,重点测边界上、刚越界的值。

示例:分页接口pageSize,约束 1~100

用例输入预期
下边界内pageSize=1返回 1 条
下边界pageSize=1(与上等价可合并时选其一)正常
越下界pageSize=0400 或业务错误码,明确文案
上边界内pageSize=100正常
越上界pageSize=101错误
非整数/负数pageSize=-11.5按接口约定校验

三点法(常用习惯):若边界为[min, max],可测min-1, min, min+1, max-1, max, max+1中合法存在的组合。

3.3 判定表(Decision Table)

思想:多个条件组合、每种组合对应不同结果时,用表避免遗漏。

示例:电商优惠券使用(简化)

规则编号R1R2R3R4
条件:满 100 元YYNN
条件:券在有效期内YNYN
预期:可用券

每条对应一条用例,保证组合覆盖完整。

3.4 因果图 / 判定表前置(简述)

条件多且有约束(某条件成立则另一条件无意义)时,可先画因果再收敛为判定表,避免无效组合爆炸。团队若不用正式因果图,思维上理清依赖即可。

3.5 状态迁移(State Transition)

思想:系统处于有限状态,事件触发迁移;测合法路径非法事件在当前状态下是否被拒绝

示例:订单状态

状态:待支付 → 已支付 → 已发货 → 已完成;取消:待支付 → 已取消

用例当前状态操作预期
ST-01待支付支付成功已支付
ST-02待支付取消订单已取消
ST-03已发货支付成功拒绝或幂等无变化
ST-04已完成取消订单不允许

3.6 场景法 / 用户故事测试(Use Case / Journey)

思想:按真实用户目标串联步骤,覆盖主成功路径重要异常分支

示例:找回密码

  1. 主路径:输入注册手机 → 收验证码 → 输入新密码 → 用新密码登录成功。
  2. 分支:验证码错误 3 次锁定、链接过期、手机号未注册提示等。

场景用例标题建议采用:“作为…,我要…,以便…”“Given-When-Then”,与敏捷验收对齐。

3.7 错误推测(Error Guessing)

思想:依赖经验猜测易错点:空值、并发、重复提交、权限切换、时区、精度、缓存不一致等。

示例:提交订单连点两次 → 预期只生成一单(幂等或前端防抖)。

3.8 正交试验(Orthogonal Arrays,可选)

思想:因素与水平很多时,用正交表抽取有代表性的组合,以较少用例获得较好覆盖。适合配置类、兼容性矩阵(浏览器 × OS × 分辨率)的抽样。


四、白盒与基于结构的补充(与开发协作时)

4.1 语句 / 分支 / 条件覆盖(概念)

  • 语句覆盖:每条语句至少执行一次(弱)。
  • 分支/判定覆盖:每个分支的真假都走到(强于语句)。
  • 条件组合(更强):复杂条件中子条件组合。

黑盒用例设计完成后,可对核心模块让开发给出分支说明或覆盖率报告,查漏补关键分支用例(尤其安全与资金相关)。

4.2 基本路径测试

对控制流图求圈复杂度,导出线性无关路径集,作为最少路径覆盖参考。多用于算法密集或规则引擎类代码。


五、专项测试的设计要点(简例)

5.1 性能

明确场景、指标、数据量、环境
示例:首页接口在 1 万条帖子数据量下,P95 延迟 ≤ 200 ms,错误率 0。

5.2 安全

示例:未登录访问需鉴权接口 → 401;水平越权:用户 A 的 ID 改用户 B → 403 或无数据。

5.3 兼容性

示例:同一登录流程在 Chrome / Safari / 微信内置浏览器各跑一遍主路径。


六、从需求到用例:推荐工作流

  1. 拆解:功能点、接口、界面、数据规则、状态机。
  2. 建模:等价类 + 边界;多条件用判定表;流程用状态图/场景。
  3. 标注风险:资金、权限、合规、高并发、历史缺陷多模块 → 提高优先级与条数。
  4. 分层落地:能接口不测 UI;能单不测集。
  5. 可判定预期:每条用例都能回答“怎样算过/不过”。
  6. 评审:产品、开发、测试对齐歧义与边界。
  7. 维护:需求变更同步更新用例编号与关联字段。

七、完整小例子:需求片段 → 用例表(登录)

需求摘要:支持手机号+密码登录;手机号 11 位国内号;密码 8~20 位;错误 5 次锁定 15 分钟;勾选“记住我”时 token 有效期 30 天,否则会话级。

编号标题前置条件步骤摘要预期结果优先级
LOGIN-001合法账号密码登录主路径已注册手机号 13800138000输入正确密码,不勾选记住我,登录进入首页,token 为会话级(按产品定义校验)P0
LOGIN-002记住我延长有效期同上勾选记住我后登录token/过期时间符合 30 天策略P1
LOGIN-003密码错误累计锁定新会话连续输错密码 5 次第 6 次提示锁定 15 分钟,期间正确密码也不可登录(按需求)P0
LOGIN-004手机号格式-边界无效输入 10 位、12 位、含字母前端或接口返回明确校验错误P1
LOGIN-005手机号未注册库里无该号输入未注册手机号+任意密码提示账号不存在或统一“账号或密码错误”(按安全策略)P1

八、附录:方法速查表

方法典型适用核心价值
等价类输入域大、规则清晰降维抽样
边界值数值/长度/分页/日期范围高频缺陷区
判定表多条件组合防遗漏
状态迁移订单、工单、审批防非法跃迁
场景法端到端、发布验收对齐用户价值
错误推测幂等、并发、安全补黑盒盲区
正交试验多因素配置控制用例规模
http://www.jsqmd.com/news/773797/

相关文章:

  • VideoDownloadHelper:5分钟掌握高效视频下载技巧的终极指南
  • 终极Windows风扇控制神器:Fan Control完整指南与实战教程
  • 口碑好的永城市装修哪家专业
  • 潜伏9年通杀全版本!Copy Fail 内核提权漏洞分析(CVE-2026-31431)
  • Java 方法 (Java 入门笔记)
  • 让游戏焕发新生:BepInEx插件框架的魔法世界
  • FIR滤波器设计原理与工程实践指南
  • 2026奇点大会闭门报告首度流出:AISMM评估体系+7个垂直行业落地瓶颈清单(仅限前500名技术决策者查阅)
  • docxcpp开源库,用于读写docx
  • Flutter for OpenHarmony 校园闲置跳蚤市场APP 实战DAY3:商品卡片封装+模拟假数据+分类联动筛选
  • 大路灯护眼灯有必要吗?护眼大路灯最建议买的十个牌子,精选推荐
  • 特斯拉Model 3 CAN总线数据解析:解锁智能汽车的“神经系统“
  • Arm Socrates™ IP工具平台:SoC设计的高效解决方案
  • 2026年加厚铁床主流厂家对比评测 - 品牌宣传支持者
  • MySql基础知识精简版
  • MAA明日方舟助手:解放双手的终极自动化工具完全指南
  • 如何创建引用分区Reference Partition_通过外键关联实现子表与父表同等分区
  • OpenClaw自动化测试帖子
  • AI工具导航:如何利用Awesome列表高效构建技术栈与工作流
  • FastbootEnhance:告别命令行,用图形化界面轻松管理Android设备
  • Sigma规则开发利器:VSCode插件全解析与实战指南
  • SNAP-V架构:边缘计算中的高效脉冲神经网络设计
  • 智能体操作系统AgentOS:架构设计与核心模块实现详解
  • 轻量级进程守护工具openclaw-warden:极简配置与自动化运维实践
  • 开源语音助手BMO:从零构建本地化智能对话系统
  • 弹幕格式转换终极指南:如何3分钟搞定B站弹幕跨平台播放
  • Caveman - 让 AI「少说废话」,节省 75% Token 还更准确 (2026-05-08 02:01)
  • 产品经理没有设计基础,如何用 AI 工具快速画原型
  • AISMM vs. MLPerf/LLMBench/HuggingFace Eval:谁才是大模型评估的黄金标尺?
  • STM32F411机器人小车开发平台解析与实战