← 所有标签

Translation

[转载] Mock 不是 Stub

转载自 Martin Fowler 的博客:很多人把 mock object 和 stub 混为一谈,但 Fowler 指出这里其实纠缠着两层差异——一是「状态验证 vs 行为验证」,二是「经典派 TDD vs mockist 派 TDD」。文章用一个订单/仓库的例子演示了两种写法,借 Meszaros 的术语厘清了 dummy、fake、stub、spy、mock 五种测试替身,并从驱动 TDD、夹具搭建、测试隔离、与实现耦合、设计风格等几个维度,把两种风格的取舍掰开了讲。

[转载] 写出优秀的单元测试:最佳与最差实践

转载自 Steve Sanderson 的博客:好的单元测试和坏的单元测试差别在哪?作者的核心观点是——单元测试不是用来找 bug 的,找 bug 该靠手工测试和集成测试;单元测试的真正用途是在 TDD 流程里帮你稳健地设计软件组件。文章给出了一条从「纯单元测试」到「纯集成测试」的光谱,并总结了写出落在「甜蜜点」上的单元测试的几条实操建议。

[转载] 乒乓缓冲区(Ping-Pong Buffers)

转载自 Embedded.fm 博客:当一个慢速外设(如 SPI 上的高精度 ADC)持续滴入数据、要攒够 N 个样本才能跑算法时,单缓冲会在「DMA 完成」与「下一个样本到来」之间发生冲突。乒乓缓冲区(ping-pong buffer)用两块大小为 N 的内存轮流承担「被 DMA 写入」与「被 CPU 处理」两个角色,从而在没有拷贝开销的情况下让数据采集与算法处理解耦——它本质上就是一个只有 2 个元素的循环缓冲区。

[转载] Intel 8087 浮点芯片内部的微码:寄存器交换

转载自 Ken Shirriff 的博客(righto.com):1980 年的 Intel 8087 浮点协处理器把所有运算都实现为芯片内部一层被称为「微码」的低级代码。本文以 FXCH(浮点寄存器交换)指令为样本,逐条拆解它背后的 14 条微指令,并讲解 8087 的栈式寄存器组、tag 标签位、异常屏蔽机制,以及作者如何用显微镜和神经网络从硅片里把 1648 条微指令逆向提取出来。

[转载] 一种 Git 分支模型

转载自 Ty Hopp 的博客,介绍一种介于 GitHub flow 与 Gitflow 之间的 git 分支模型:长期存活的 main 与 release 分支、短生命周期的特性分支、定期的 branch cut、stabilization 期、backport 与 hotfix 流程。