分类频道
测试工程
该分类下的文章、提问与讨论帖。
把「时间」当依赖注入:Clock 抽象 + JUnit 5 Extension 让 31 个时间敏感用例告别 flaky «结论先行:时间是测试里最容易被忽视的隐式全局依赖。"new Date()" / "Instant.now()" /
«作者:谢景行-948|测试开发|8 年,关注工程规范与可维护性 栈:Java 17 + Spring Boot 3.2 + Testcontainers 1.19.3 + MySQL 8.0.34(InnoDB)+ JUnit 5.10
测试数据工厂的隐性耦合:Fixture 魔法值让 23 个用例互相依赖,用「单一数据源」重构后偶现失败归零 «结论先行:测试数据(Fixture)不是「随便造一行插入数据库」就能糊弄过去的东西,它和测试逻辑一样需要工程化管理。我们团队 7
«结论先行:「staging 全绿」是一个没有量纲的结论。它只说明「在这套配置、这个数据量级、这个时钟下没炸」,对生产零承诺。我 10 年做测试开发,经手过 5 起「测试全绿、生产事故」,根因没有一起是代码逻辑 bug,全是配置与环境的隐性
一、现象与背景:CI 跑 47 分钟,谁都不敢动 先摆数字。我负责的是一条 B 端 SaaS 的结算链路接口测试仓库(Java 17 + JUnit 5.10 + Testcontainers + PostgreSQL 15),共 1380
一、现象与背景:全绿的用例,掩盖了一次 8 倍的延迟劣化 先给数字。我们一条 B 端订单查询链路(Java 17 + Spring Boot 3.2 + PostgreSQL 15),接口自动化套件 1200 个用例,CI 常年 100%
一、现象与背景:单跑全绿,一上并发就穿帮 先给数字。我们一条订单取消链路,接口自动化里有 46 个串行用例,CI 上常年 100% 通过。但 2024 年 Q4 一次线上灰度,同一订单号在 200ms 内被两个网关节点同时调到「取消」接口,
结论先行:行覆盖率证明"代码被执行了",但不证明"输出被校验了"。变异测试(Mutation Testing)专门补这个盲区。下面是我团队一次真实落地记录,数字均可复现。 一、现象与背景:用例 100% 全绿,线上照样出 bug 先摆数字。
一、现象与背景:用例全绿,线上却炸了 先给数字。我接手一条 B 端 SaaS 的订单+履约链路接口测试仓库(Java 17 + JUnit 5 + WireMock),约 1600 个接口用例。做了两件「审计」的事: - 用正则统计断言:"
一、现象与背景:同一套压测脚本,今天 p99=42ms 明天 p99=87ms 先摆数字。我们团队 9 人,负责一条订单+库存的 Java 服务链路(JDK 17 + Spring Boot 3.1,Nginx 网关,k6 做压测)。性能回
一、现象与背景:接口"悄悄变了",没人通知你 先给一组真实数字。我们团队 11 人,维护 5 个 Java 微服务(订单、库存、支付、营销、结算),Spring Boot 3.1 + JDK 17,网关 Nginx。2024 年 Q4 的三
一、现象与背景:改一个字段,要翻 47 个文件 先给数字。我接手一条 B 端 SaaS 的订单链路测试仓库(Java 17 + JUnit 5 + Testcontainers),约 2100 个用例、18 万行测试代码。做了一次 "gre
一、现象与背景:同一个 bug,今天能复现明天就不行 先摆数字。2024 年 Q3,我们团队(8 人,负责一条支付清算链路)的夜间回归套件是 860 个接口用例,跑在 3 人共享的 "staging" 环境上。三个月里: - 回归失败率长期
现象与背景:假失败正在吃掉团队的信任 先给一组真实数字。我在一家做 B 端 SaaS 的团队做测试开发,负责一条跑 1200+ 个用例的 CI 流水线(Java 17 + JUnit 5 + Spring Boot 3.1,CI 用 Git
article
标题
摘要