测试 · 质量
全绿却什么都没测的测试套件
审计一个 15 个代码仓库的 SaaS 平台的测试与 CI,让测试重新有意义
角色IT 业务分析师兼 QA/QC 负责人

- 通过的后端测试
- 35 → 276
- 移除的假界面测试
- 146 → 0
- 两周内的自动化测试用例
- 901
- 发布前发现的数据隔离缺陷
- 10
客户名称已隐去;例子和数据均经过模拟。流程、方法与成果数据是真实的。
问题
产品是面向美国住宅建筑行业的 SaaS 平台:管理后台网页、工人移动应用和供应商门户,共 15 个代码仓库。CI 面板大多显示绿色,但缺陷仍然流到客户那里。
Jira,9 月初我兼任 QA/QC 负责人时积压的缺陷
- 未关闭超过 30 天
- 未关闭不到 30 天
- 已不再打开
244 个缺陷156 个未关闭
背景与角色
- 我是美国客户的 BA 和主要对接人,同时支持 QA;从 2026 年 9 月起兼任 QA/QC 负责人。
- 我无法在产品仓库提交合并请求,因此每个发现都必须附带足够证据,让开发自行修复。
- 工作采用我设计的 AI 智能体辅助流程;每个结论我都对照真实运行日志核实。
- 客户名称、产品名称和漏洞细节均已隐去。
第 1 步:审计测试套件
我在 6 个仓库中重新运行全部测试,逐类阅读测试,而不是相信 CI 上的绿色。
测试套件审计根因修复前后(2026.07)
- 之前
- 之后
假界面测试,什么都不检查却总是通过✓ 146 → 0
1460通过的后端测试✓ 35 通过,195 失败 → 276 通过,0 失败
35 通过,195 失败276 通过,0 失败工人移动应用覆盖率✓ 12.6% → 21%
12.6%21%供应商门户单元测试✓ 0 → 133
0133
原因195 个失败测试,其中 183 个源于同一原因
- 因一个 jsonb 类型映射错误在初始化阶段失败
- 其他错误组
195 个失败测试195
第 2 步:审计 CI
CI 显示绿色不代表测试真的运行了。我把每个仓库的流水线配置与真实运行记录逐一对照(2026.09)。
CI 审计三处毫无意义的绿色
- 新代码
- 流水线许多测试套件从未被调用配置为忽略错误,仍显示绿色
- 测试步骤夜间任务:6/6 个子步骤失败没有任何仓库开启分支保护
- 合并到主分支
闲置的 Playwright 场景120
闲置的 Maestro 流程25
闲置的后端测试文件332
CI 修复,每处一行4足以重新启用上述测试
第 3 步:用 Tester Kit 测试每个工单
把工单、评论和合并请求拆成来源清单;每个测试用例都必须指向一个来源,再经过覆盖率关卡和另一个 AI 会话的独立审查后才运行。
Tester Kit
- 工单、评论、PR拆分为来源
- 有来源的测试用例
- 覆盖率关卡
- 独立审查另一个 AI 会话
- 运行 API 和界面
- 测试员签字一个 Excel 文件
运行次数,9 月最后 2 周31
自动化测试用例901
被拦下的“假通过”用例9报告通过,却没有检查验收标准
第 4 步:测试整个权限史诗
按公司划分的权限(多租户)被拆成多个工单。各个工单单独测试均通过。
为什么按史诗测试
- 各个工单单独测试均通过
- 工单交汇处新页面Excel 导出共享 API
- 数据泄露到其他公司
史诗测试结果按公司划分的权限
- 通过
- 真实缺陷
- 其余
146 个用例146
结果
- 后端测试恢复运行:从 35 通过、195 失败到 276 通过、0 失败;移除 146 个假测试;冒烟测试成为合并关卡。
- 列出闲置测试的具体清单和重新启用它们的 4 处 CI 修复,并附运行记录为证。
- 两周内 901 个自动化测试用例;9 个假通过在被采信前即被拦下。
- 发布前发现 10 个跨公司数据隔离缺陷。
我的收获
- 只有证明测试步骤真的在运行、真的能阻断,CI 的绿色才有意义。
- 数百个失败测试往往只有几个共同原因;找到根因比逐个修补更快。
- 权限缺陷出现在功能交汇处,必须在史诗层面测试,而不仅是逐个工单。
- QA
- CI/CD
- 自动化测试
- Playwright
- 审计
- 多租户
