无需 Mock 的单元测试:一种新的测试方法

2025-03-29

本文介绍了一种新型的单元测试方法,无需使用 mocks 或 spies,即可实现快速、可靠且易于维护的测试。该方法的核心在于结合使用基于状态的测试和一种名为“Nullables”的新型基础设施技术。“Nullables”并非测试替身,而是带有“关闭”开关的生产代码,允许测试在不依赖外部系统或状态的情况下运行。虽然这种方法需要修改生产代码,但它避免了传统方法的诸多缺点,如测试脆弱、难以重构等,并带来了显著的性能提升。文章详细解释了该方法的各个模式和技巧,包括 Narrow Tests、State-Based Tests、Overlapping Sociable Tests 等,并提供了丰富的代码示例和多种应用场景,非常适合开发者学习和实践。

阅读更多
开发 Nullables

打造世界一流的产品工程组织:六大关键要素

2025-01-12

本文是James Shore在东京区域Scrum Gathering大会上的主题演讲记录,探讨如何打造世界一流的产品工程组织。他提出六个关键要素:人员、内部质量、用户喜爱度、可见性、敏捷性和盈利能力。文章详细阐述了如何通过改进招聘策略、提升代码质量、快速反馈循环、采用敏捷方法、以及与其他部门协作等方法来实现这些目标,并强调了持续改进的重要性。通过案例分析和实践经验,作者分享了宝贵的经验,为构建高效、卓越的产品工程团队提供了指导。

阅读更多
开发 产品工程

James Shore:一个有效的生产力衡量指标?

2024-05-06

James Shore分享了他在担任工程副总裁时如何应对“如何衡量生产力”这个棘手问题。由于软件生产力难以衡量,他另辟蹊径,通过与团队讨论“世界上最好的产品工程组织”应该是什么样子,确定了六个方面的理想状态和相应的指标。其中,“盈利能力”指标与结果最为相关,包括实际投资回报率、估计投资回报率和增值能力。由于实际投资回报率难以衡量,他最终采用了“增值能力”作为生产力指标,即工程团队花费在增值活动上的时间百分比。作者认为,虽然该指标易被操控,但在团队成员保持诚实和数据透明的情况下,它可以有效地反映生产力状况,并促进团队关注如何减少浪费、提高增值工作时间。

阅读更多