📝 面试求职: 「面试试题小程序」 ,内容涵盖 测试基础、Linux操作系统、MySQL数据库、Web功能测试、接口测试、APPium移动端测试、Python知识、Selenium自动化测试相关、性能测试、性能测试、计算机网络知识、Jmeter、HR面试,命中率杠杠的。(大家刷起来…)
📝 职场经验干货:
本文分享作者近段时间总结的一些用例治理经验,本文主要探讨稳定失败用例和不稳定成功用例的治理手段。
一、用例失败的原因
分析原因之前,先剖析用例的组成。
1.前置准备
测试数据准备、测试环境准备(清理测试数据、复原测试环境、Mock等)。
2.测试流程编排
通常是一个测试场景,包含多步服务请求流程。例如:淘宝购物场景,包含选择商品、下单、支付流程。那么这个场景的用例编写至少包含2步服务请求。
理论上测试流程长度与稳定性成反比,因此流程中的单个请求的测试稳定性至关重要。
3.测试断言
断言是我们的测试预期,断言内容包含请求响应断言、DB断言以及出口报文断言。断言颗粒度可以分为全局断言、局部断言。
全局断言:即对断言内容(响应、DB、出口报文)进行逐一check。
局部断言:只对断言内容(响应、DB、出口报文)中的关键字段进行check。
分析到这里,大家应该比较清晰用例失败的原因了。除去因代码变更导致的失败外(不在本文讨论之内,本文主要讨论用例在非代码变更引起失败的原因以及治理),那么用例失败的原因 可以归类到上述3部分的任何一类。
因此,我们在治理失败用例的第一步就是定位到根因,以便对症下药。
二、用例治理的方法
在定位到用例失败的根因后,需针对不同环节采取针对性治理策略,提升用例稳定性和可维护性。以下是针对用例前置准备、测试流程编排、测试断言三大部分的治理方法:
1、前置准备环节治理
前置准备阶段常见于环境脏数据、资源冲突或 Mock 覆盖不全等问题。治理方案包括:
1.1 环境隔离与检查
-
-
为每个用例分配独立的环境命名空间或测试租户,避免并行执行时的数据污染。
-
使用 Docker 容器化技术或云原生环境实现快速环境重建。
示例:电商测试中,为“下单”用例分配独立的用户 ID 和订单号池,避免并发冲突。 -
在用例执行前增加环境健康检查(如服务端口、DB连接、缓存状态等),失败时自动触发环境重建或告警。
-
1.2 数据清理原子化
-
-
在用例执行前后自动清理测试数据(如通过
@BeforeTest
/@AfterTest
钩子)。 -
采用“影子表”或“测试专用库”隔离生产数据,降低误删风险。
-
将清洗服务原子化,不同的场景可以组合不同的原子能力
-
1.3 Mock服务智能覆盖
-
-
对第三方依赖(如支付、物流)构建 Mock 服务,覆盖超时、异常状态码等场景。
-
通过流量录制回放技术,动态生成 Mock 响应,确保与真实接口行为一致。
-
2、测试流程编排治理
流程编排问题常表现为步骤依赖失效、执行顺序错误或超时。治理策略包括:
2.1 流程解耦与原子化
-
-
将复杂场景拆分为独立可执行的子用例,例如将“下单+支付”拆分为“下单成功”“支付成功”两个用例。
-
通过状态机管理流程,确保步骤间依赖显式声明(如支付前必须存在有效订单)。
-
2.2 动态重试与超时控制
-
-
对非核心步骤(如页面加载)添加重试逻辑,容忍短暂延迟。
-
设置差异化超时阈值,区分关键步骤(如支付)与非关键步骤(如商品浏览)。
-
2.3 执行顺序优化
-
-
标记用例优先级(P0/P1/P2),确保核心链路优先执行。
-
使用 DAG(有向无环图)编排用例执行顺序,避免资源争用。
-
3、测试断言治理
断言失败常因字段值变化、异步延迟或断言颗粒度不当导致。治理方法如下:
3.1 分层断言设计
-
- 第一层:关键字段断言
仅校验业务核心字段(如订单状态变为“已支付”)。 - 第二层:全局完整性断言
在核心流程通过后,补充全字段校验或数据库一致性检查。
- 第一层:关键字段断言
3.2 查询SQL优化
-
- 对于耗时较长的SQL优化,按照索引查询。
3.3 动态阈值断言
-
- 避免硬编码固定值(如金额、时间戳),改用相对值或模式匹配。
示例:校验支付时间时,使用支付时间 ≈ 当前时间 - 5分钟
而非精确值。
- 避免硬编码固定值(如金额、时间戳),改用相对值或模式匹配。
3.4 异步断言重试
-
- 对数据库更新、消息队列等异步场景,采用轮询机制(如每隔 1s 检查一次,最多 10 次)。
- 集成工具自动捕获异步事件(如 Kafka 消费完成)。
3.5 智能对比工具
-
- 使用 Diff 工具(如 JSON Diff)自动忽略无关字段(如日志 ID、随机 Token)。
- 对浮点数、文本等动态内容设置容忍阈值(如金额误差 < 0.01 元)。
4、通用治理策略
4.1 用例分组管理
-
- 将用例按业务场景分组管理,快速定位问题 ,还可以更好地使用执行资源。
- 定期清理冗余用例,淘汰低价值场景。
4.2 失败分析自动化
-
- 集成失败根因分析工具:自动捕获日志、数据库快照、网络流量,生成诊断报告。
- 分类标记高频失败原因(如环境问题标记为
Env-Flake
,断言问题标记为Assert-Flaky
)。
4.3 定期用例健康度巡检
-
- 设置用例稳定性指标(如失败率 >10% 则触发告警)。
- 建立“用例维护日历”,每周/月滚动修复陈旧的测试数据与断言。
- 通过注释标记用例设计意图与潜在风险点。
4.4 知识沉淀与协作
-
- 构建“用例知识库”,记录历史失败原因与修复方案。
三、治理效果
- 稳定性提升:失败率下降 90%。
- 执行效率优化:整体执行时间下降 80%。
最后: 下方这份完整的软件测试视频教程已经整理上传完成,需要的朋友们可以自行领取【保证100%免费】