用例组织与结构:让测试用例不再是一盘散沙
说实话,我见过太多测试团队,用例写了一堆,但真正要用的时候,谁也找不到。就像把螺丝刀、扳手、电钻全扔在一个大箱子里,你要找个十字螺丝刀,得翻半天。
为什么会这样?
因为用例没有组织。没有层级,没有优先级,没有标签。说白了,就是没有结构。
今天我就跟你聊聊,怎么把用例组织得清清楚楚。这是我这些年踩坑踩出来的经验。
一、用例层级结构:模块-功能-用例
我个人习惯,把用例分成三层:模块 → 功能 → 用例。
你想想看,一个大型系统,可能有几十个模块。每个模块下面,又有几十个功能点。每个功能点,又对应着几条甚至几十条用例。
如果不分层,全平铺在一起,那画面太美我不敢看。
第一层:模块
模块就是系统的大功能块。比如一个电商系统,可以分成:
- 用户模块
- 商品模块
- 订单模块
- 支付模块
- 物流模块
第二层:功能
每个模块下面,再拆成具体功能。比如「订单模块」下面:
- 创建订单
- 取消订单
- 修改订单
- 查询订单
第三层:用例
每个功能下面,才是具体的测试用例。比如「创建订单」功能:
- 正常创建订单(商品库存充足)
- 创建订单时库存不足
- 创建订单时用户余额不足
- 创建订单时商品已下架
关键点:模块和功能是「组织单元」,用例才是「执行单元」。别把用例直接挂在模块下面,那样太粗了。
我在项目中遇到过,有人把用例直接挂在模块下,结果一个模块下面挂了300条用例。找一条用例,得翻5页。后来我强制要求必须分三层,查找效率提升了一倍不止。
二、用例优先级定义:P0/P1/P2/P3
优先级这东西,说白了就是「先测什么,后测什么」。资源永远不够,时间永远紧张,你得学会取舍。
我一般用四级优先级:
| 优先级 | 定义 | 举例 | 执行策略 |
|---|---|---|---|
| P0 | 核心功能,必须通过 | 登录、支付、下单 | 每次回归必跑,失败即阻塞发版 |
| P1 | 重要功能,尽量通过 | 搜索、筛选、详情页 | 每次回归必跑,失败需评估影响 |
| P2 | 一般功能,可接受小问题 | 个人中心、消息通知 | 按需执行,大版本回归时跑 |
| P3 | 边缘功能,低优先级 | 帮助中心、意见反馈 | 有时间再跑,或仅冒烟 |
注意:P0用例不能太多。我曾经见过一个团队,把一半用例都标成P0。那跟没标有什么区别?P0应该控制在总用例的10%以内。
嗯,这里有个小技巧。我一般定优先级的时候,会问自己一个问题:「这个功能挂了,用户会不会骂娘?」如果会,那就是P0。如果只是皱皱眉,那就是P1。如果根本没人注意到,那就是P3。
三、用例标签与分类:给用例打上「身份证」
层级结构解决了「在哪找」的问题,优先级解决了「先测谁」的问题。但还有一个问题:「怎么筛选」。
比如,我只想看「和数据库相关的用例」,或者「和性能相关的用例」。这时候就需要标签了。
常见的标签分类
- 按测试类型:功能测试、性能测试、安全测试、兼容性测试
- 按测试阶段:冒烟测试、回归测试、验收测试
- 按数据依赖:需要登录、需要管理员权限、需要特定数据
- 按自动化状态:已自动化、待自动化、不适合自动化
- 按业务领域:核心交易、用户增长、风控、运营
我的建议:标签不要超过10个。标签太多,等于没有标签。我见过有人给一条用例打了8个标签,那还不如不打。
标签的命名规范
我个人习惯用「前缀:值」的格式。比如:
type:functionalstage:smokeauth:login_requiredauto:yes
这样在筛选的时候,可以快速定位。比如我想找「所有需要登录的冒烟测试用例」,直接搜 stage:smoke AND auth:login_required 就行了。
四、知识体系总览
说了这么多,我画了一张图,帮你把整个知识体系串起来。你一看就明白了。
你看,这三者其实是互补的。层级结构告诉你「在哪」,优先级告诉你「先测谁」,标签告诉你「怎么筛」。三者结合起来,你的用例库就是一个井井有条的图书馆,而不是一个乱糟糟的杂物间。
总结一下:
- 模块-功能-用例三层结构,别偷懒
- P0/P1/P2/P3四级优先级,P0别超过10%
- 标签用「前缀:值」格式,控制在10个以内
我曾经在一个项目里,接手了一个3000条用例的烂摊子。没有层级,没有优先级,没有标签。我花了整整两周,重新梳理了一遍。从那以后,每次新项目开始,我都会先把用例结构定好。磨刀不误砍柴工,真的。
可可精品资料库