怎么读这张看板:原始通过率 43.06% 里,56.75% 的用例根本没跑起来(框架缺陷 1055 + WCF 434 + 数据库 231)。
剔除后真实产品缺陷只有 6 条(去重后 3 类)。所以判断质量要看有效通过率,判断环境要看环境健康度,两个都别混进一句话里说。
逐轮通过率
逐轮明细
| 轮次 | 通过 | 失败 |
错误 | 合计 |
通过率 | 有效通过率 |
| R1 · 10-23 18:54 | 91 | 51 | 2921 | 3063 | 2.97% | — |
| R2 · 10-24 10:17 | 95 | 54 | 2882 | 3031 | 3.13% | — |
| R3 · 10-24 10:35 | 95 | 276 | 2660 | 3031 | 3.13% | — |
| R4 · 10-24 10:41 | 1305 | 514 | 1212 | 3031 | 43.06% | — |
失败三层归因
L1 测试框架缺陷 1055L2 WCF 环境 434L2 数据库环境 231L3 真实产品缺陷 6
被环境错误掩盖的产品信号
一个用例只归一层,但消息里常并列多条原因。环境错误会把真产品信号压在同一批用例里,所以子断言级单独统计一遍——
共 42 类,涉及 462 个用例。
| 出现次数 | 子断言 |
|---|
| 4609 | Invalid column name 'wSizeType'. |
| 4524 | 未将对象引用设置到对象的实例。 |
| 2826 | 可为空的对象必须具有一个值。 |
| 2798 | The number of rows provided for a FETCH clause must be greater then zero. |
| 2701 | Cannot insert the value NULL into column 'wAgentCodeIn', table '@sAgentCodeIn'; column does not allow nulls. I |
| 1950 | A TOP or FETCH clause contains an invalid value. |
| 1729 | SqlDateTime 溢出。必须介于 1/1/1753 12:00:00 AM 和 12/31/9999 11:59:59 PM 之间。 |
| 1508 | 值不能为 null。 |
八项改进状态
| 编号 | 问题 | 状态 | 做法 |
| P0-1 | 录分探针 CommandText 空值,1055 条用例跑完记不上分 | 已修 | Func.cs:安全默认语句 + 全流程 fail-open + 补第二层空引用 |
| P0-2 | 434 条 WCF 用例恒报未提供客户端证书 | 已修 | Proxy.cs:按 contract 查证书;BatchRunner 嵌入客户端 pfx |
| P1-1 | 只有一个通过率,分不清环境坏了还是产品坏了 | 已修 | 拆成环境健康度 / 有效通过率 / 真实缺陷数 / 被掩盖信号 |
| P1-2 | 环境没搭好也照跑,产出 2900+ 条假错误 | 已修 | 开跑前 3 条探针,任一失败退出码 2 且不产出结果 |
| P1-3 | 32 条用例被悄悄删掉,无任何记录 | 已建机制 | 每轮比对用例清单,输出 case-diff;历史缺口记入 case-changelog |
| P2-1 | 忽略数四轮恒为 0,Ignore 形同虚设 | 已修 | 读取 Ignore 原因与缺陷号;更正:全库 0 处使用 |
| P2-2 | 每轮结果覆盖写,趋势无从追溯 | 已修 | results/时间戳.json 逐轮留存 + summary.csv 追加行 |
| P2-3 | 10 条用例占 62% 耗时,3 条各 30.4s 纯等待 | 已修 | 单用例看门狗 + 超时重试 1 次 + 挂死线程上限 |