《Java 并发编程·性能诊断与事故》附录 B JCStress/JMH/压测模板
三个可直接复制的模板:JCStress 0.16 的 Maven 工程含 proc full、可序列化 Result 与 toString 约定;JMH 1.37 的 pom 与基准类给出 -wi/-i/-w/-r/-f 参数和误差列读法;无第三方依赖的开环压测程序给 p50/p90/p99/p999 与拒绝计数。全部在本机实跑并贴真实输出。
tag
三个可直接复制的模板:JCStress 0.16 的 Maven 工程含 proc full、可序列化 Result 与 toString 约定;JMH 1.37 的 pom 与基准类给出 -wi/-i/-w/-r/-f 参数和误差列读法;无第三方依赖的开环压测程序给 p50/p90/p99/p999 与拒绝计数。全部在本机实跑并贴真实输出。
六种语言、十二个关键页、三个平台,组合起来是 216 种情况,一个人不可能每次发布都全测。可行的做法是剪枝:每语言五个页面、两个平台,加上伪本地化、缺 key 检测与截图回归三件工具。上线前真正要盯的不是「翻得对不对」,是漏译、回退与切换后不刷新。
libraryd 有 33 个测试,但把领域、仓储、HTTP 和端到端混在一起跑,会让失败定位和反馈速度一起变差。本节按模块划出四层测试,说明每层该依赖什么、不该依赖什么,并用真实的测试数量、耗时与配比解释为什么端到端只保留两个主链路用例。
测试写得吃力,往往不是测试技巧问题,而是设计没有留缝。本节从 library 的 Clock、Supplier、仓储接口出发,讲清构造器注入、纯函数、窄接口与确定性输入四个杠杆,并给出可复用的测试分层、真实 mvn test 输出与反模式清单。
把 Dummy、Stub、Fake、Spy、Mock 五种替身放回 library 的仓储接口上:用 Stub 制造「书不存在」,用 Fake 验证借还流程,用记录型 Mock 检查 save 调用次数,并说明什么时候不该验证交互、如何避免测试变脆。
从手工跑 main 验证借阅规则的痛点出发,给出 Maven 引入 JUnit 5 的最小 pom、断言与异常断言、测试生命周期、嵌套与参数化测试;再用 library 的 LoanPolicyTest 和真实 mvn test 输出,说明一条测试应该验证什么。
引擎测试的难点不在断言,而在把外部世界换掉:时间、图形 API、磁盘与随机数。本节用 FakeClock、NullRHI、内存文件系统与种子化 PRNG 四类假对象,拼出一个无 GPU、无磁盘、无真实时钟的内核测试台,让同一关卡每次跑出逐位一致的结果。全部代码在 Node 直跑,17 条用例锁住行为。
为 TaskAPI 收口上线:跑 vet 与 -race 测试、看逐函数覆盖率、写发布构建脚本产出多平台静态二进制、打包 tar.gz 并生成 sha256 校验和,配发布检查清单与上线后验证,最后回顾全卷 18 章的演进与下一步学习方向。
系统讲解 Kafka 应用测试策略:测试金字塔中 Kafka 的位置、MockProducer/MockConsumer 单元测试、Embedded Kafka 与 Testcontainers 集成测试对比、Spring Boot @EmbeddedKafka 实战、端到端与契约测试、CI 中的容器编排与性能优化
微型博客的测试策略与质量保障实战:测试金字塔与风险对齐、单元/集成/组件/E2E/契约各层职责、Go 后端测试与 testcontainers、前端组件测试与视觉回归、测试数据工厂与环境隔离、Flaky 测试治理、性能与负载测试,以及覆盖率口径与 CI 质量门禁的落地组合。
系统讲解 Testcontainers 集成测试:容器化测试的原理与 Ryuk 资源回收、GenericContainer 与专用模块(数据库/Kafka/Redis)、@Testcontainers 生命周期与单例复用、等待策略、Docker Compose 模块、Spring Boot @ServiceConnection 零配置注入,以及 CI 环境与并行测试实践。
GraphQL Mock 与测试策略实战:@graphql-tools/mock 的 addMocksToSchema、MockList、faker 集成与确定性种子、Schema 快照与 mock 驱动的前端开发、resolver 单元测试、executeOperation 集成测试、MSW 客户端拦截、联邦子图 mock、测试数据管理与 CI 分层。
Flutter Golden 测试实战:matchesGoldenFile 原理与渲染流程、字体与平台差异导致的假失败、多设备多主题矩阵、golden_toolkit/alchemist 工具链、CI 中 golden 校验与更新策略,构建可靠的视觉回归防线。
Rust 测试与性能基准工程化:单元/集成/文档测试的组织与 dev-dependencies、rstest 参数化与 insta 快照、proptest 属性测试与反例最小化、criterion 基准与 black_box、baseline 与 critcmp 回归检测、cargo-llvm-cov 覆盖率与 nextest。
基础设施即代码同样需要测试金字塔。本文把静态检查、plan 校验、Terratest 真实资源集成测试、Kitchen 配置收敛验证、InSpec 合规基线串成一条链路,讲清各自的边界、成本控制、隔离策略与 CI 集成方式,并给出可落地的分层测试方案与常见坑。
系统讲解 Kafka Streams 测试:TopologyTestDriver 初始化与输入输出通道、事件时间推进与窗口断言、状态存储校验、序列化与 Schema 测试、Testcontainers 容器化端到端集成测试、CI 中的测试策略与常见陷阱
拆解低代码应用的测试与质量体系:以元数据为测试对象、Schema 层单元测试与断言、端到端录制回放与语义选择器、回归与视觉对比、性能基线与容量评估、权限与多租户反向用例、上线检查单与灰度验证,以及质量门禁如何接入 CI,回答如何给配置出来的应用建立可回归的质量保障。
测试金字塔在 Android 上有自己的形状:JVM 单测跑得快但受限于无 Android 运行时,仪器测试真实但慢且易碎。本文讲透 JUnit 与断言库选型、协程测试调度器、MockK 打桩、Robolectric 本地跑 Android 代码、Espresso 与 IdlingResource、Compose 语义查找与断言、Hilt 测试替换,以及 CI 分片与设备农场。
车载软件测试与 HIL 台架实战:MIL 与 SIL 与 PIL 与 HIL 的层次划分与选择依据、HIL 台架的实时仿真与被控对象模型、剩余总线仿真与 IO 接口配置、测试用例设计与覆盖率度量、故障注入与鲁棒性测试、灰盒调试与标定集成,以及测试自动化与报告。
系统讲解 WASM 模块的测试体系:wasm-bindgen-test 与 headless 浏览器测试、wasmtime 宿主侧单元测试、接口契约与黄金数据、wasm-smith 模糊测试与差分测试、覆盖率采集、CI 集成与性能回归,并给出可复用的测试分层策略与落地清单。