3. 测试用例管理:从设计原则到用例库搭建
测试用例管理,说白了就是给测试工作建一套规矩。我见过太多项目,测试用例写得像天书,要么漏测,要么重复。今天咱们就把这块掰开揉碎了讲。
3.1 测试用例设计原则
设计用例不是拍脑袋。我习惯用两个经典方法打底——等价类和边界值。这两个方法配合使用,基本能覆盖90%的常见场景。
3.1.1 等价类划分法
等价类的核心思想很简单:把输入域分成若干类,每类里取一个代表值测试。如果这个代表值通过了,那整类都应该通过。
举个例子,一个温度采集模块,要求输入范围是 -40°C 到 85°C。我们可以这样划分:
| 等价类 | 范围 | 代表值 | 预期结果 |
|---|---|---|---|
| 有效等价类 | -40 ~ 85 | 0 | 正常采集 |
| 无效等价类(下限) | < -40 | -50 | 返回错误码 |
| 无效等价类(上限) | > 85 | 100 | 返回错误码 |
我的经验: 等价类划分时,别忘了考虑空值、NULL、非法字符这些特殊类。我在一个CAN总线项目中,就因为没测空帧,导致现场丢包。
3.1.2 边界值分析法
为什么会单独强调边界值?因为软件出问题,十有八九在边界上。你想想看,程序员写 if (temp >= -40 && temp <= 85) 这种条件时,最容易写错的就是等号。
边界值分析的原则是:取每个边界的两端值。还是温度的例子:
- 下边界:-41, -40
- 上边界:85, 86
- 内点:0(可选)
// 一个典型的边界值测试用例
TestCase: TC_TEMP_001
Input: temp = -41
Expected: ERROR_OUT_OF_RANGE
Actual: PASS // 这里如果返回正常值,说明边界判断有bug
注意: 边界值不是只测整数边界。如果输入是浮点数,要考虑精度边界。我曾经遇到一个ADC采样模块,边界值在 3.14159 附近反复跳变,最后发现是浮点比较精度问题。
3.2 用例库搭建
用例设计好了,得有个地方管起来。我个人比较喜欢 TestLink 和 TestRail,各有千秋。
3.2.1 TestLink vs TestRail
| 特性 | TestLink | TestRail |
|---|---|---|
| 开源/商业 | 开源免费 | 商业付费 |
| 安装部署 | 需PHP+MySQL,稍复杂 | 云服务或本地部署,简单 |
| 用例组织 | 测试计划-测试套件-用例 | 项目-里程碑-测试运行 |
| 报告能力 | 基础统计 | 丰富图表,可定制 |
| API支持 | 有REST API | 有REST API,更完善 |
选哪个?我的建议是:小团队、预算有限用 TestLink;大团队、需要快速出报告用 TestRail。我在上一家公司,团队20人,用的 TestLink 自己搭,够用了。
3.2.2 用例库搭建步骤
不管用哪个工具,搭建思路差不多:
- 创建项目结构:按产品线或模块分
- 定义用例模板:ID、标题、前置条件、步骤、预期结果
- 批量导入:用Excel或CSV导入历史用例
- 建立关联:用例关联需求、缺陷
- 设置权限:谁可以创建、修改、执行
避坑指南: 我曾经一次性导入2000条用例,结果格式不对,全乱了。后来学乖了,先导10条验证格式,再批量操作。
3.3 用例优先级与标签体系
用例多了,得排优先级。不然每次回归测试都跑全量,时间根本不够。
3.3.1 优先级定义
我习惯用P0-P3四级:
| 优先级 | 定义 | 执行频率 | 举例 |
|---|---|---|---|
| P0 | 冒烟测试,核心功能 | 每次构建 | 系统启动、主界面显示 |
| P1 | 主要功能,高频使用 | 每日回归 | 数据采集、通信正常 |
| P2 | 次要功能,异常场景 | 每周回归 | 边界值、错误处理 |
| P3 | 边缘场景,UI细节 | 每版本回归 | 界面布局、提示文字 |
3.3.2 标签体系
标签比优先级更灵活。我常用的标签分类:
- 按模块:bootloader、driver、protocol、app
- 按测试类型:smoke、regression、stress、security
- 按平台:stm32、esp32、linux、rtos
- 按阶段:unit、integration、system、acceptance
标签的好处是,你可以快速筛选出“所有STM32平台上的回归测试用例”,或者“所有与CAN通信相关的压力测试用例”。
我的习惯: 每个用例至少打3个标签。比如一个用例可以打上 "driver", "regression", "stm32"。这样组合查询时特别方便。
3.4 知识体系总览
下面这张图,把本章的核心内容串起来了。你可以把它当作测试用例管理的思维导图。
嗯,到这里,测试用例管理这块的核心内容就讲完了。记住:设计原则是根基,用例库是载体,优先级和标签是效率工具。三者缺一不可。