现实世界中的 PHP 测试
现实世界中的 PHP 测试
简介:
引言
Chris Hartjes 所著的《Real-World PHP Testing》(2018 年)并非又一本枯燥的 PHPUnit 参考手册,而是一本由经验丰富的开发者撰写的实用指南。Hartjes 在 PHP 社区中作为测试的积极倡导者和热门播客 PHP Town Hall 的主播而闻名。在这本书中,他分享了真实的技巧和方法,帮助你将测试融入日常开发,即使你正在处理遗留代码。
本书内容
本书共 12 章,涵盖了 PHP 应用程序测试的各个阶段——从基本概念到高级技术。作者不仅解释了如何编写测试,还展示了如何将它们集成到开发过程中,使其带来实际价值,而不仅仅是流于形式。主要关注单元测试,但也涉及集成测试、数据库测试、HTTP 请求测试以及与外部 API 的协作。
本书适合谁
本书面向已具备 PHP 基础知识并希望提高代码质量的 PHP 开发者。无论是对测试刚入门的新手,还是希望梳理知识并学习新技巧的经验丰富的程序员,都会从中受益。我特别推荐给那些处理遗留代码的人——Hartjes 花了大量篇幅介绍遗留系统的测试策略。
读者将学到什么
- 测试基础:单元测试、集成测试和功能测试之间的区别,FIRST 原则(快速、独立、可重复、自我验证、及时)。
- PHPUnit:安装、配置、编写测试类、使用断言、数据提供器、测试中的依赖注入。
- 模拟对象和桩:使用 PHPUnit 和 Mockery 库创建桩,测试复杂依赖关系。
- 数据库测试:测试数据库策略、测试夹具、事务、查询和模型测试。
- HTTP 和 API 测试:模拟 HTTP 请求、测试 REST 控制器、使用 Guzzle 和其他 HTTP 客户端。
- 遗留代码测试:为测试进行重构、提取依赖关系、使用 seam 模式。
- CI/CD 与自动化:将测试集成到 Jenkins、Travis CI、GitLab CI 中,配置推送时自动运行。
- TDD(测试驱动开发):“红-绿-重构”循环,实际示例。
- 代码覆盖率:分析覆盖率报告,设置质量阈值。
- 最佳实践:测试组织、命名、可读性维护、避免脆弱测试。
优势
实用导向。每一章都包含可直接应用于项目的真实代码示例。作者不沉迷于理论,而是展示如何解决具体问题。
聚焦真实场景。Hartjes 探讨了每位开发者都会遇到的情况:测试遗留代码、与外部服务协作、错误处理。这使得本书对于不处理“理想”项目的人来说尤其宝贵。
结构清晰。内容逻辑性强,由浅入深。每章末尾都有总结和关键要点列表,有助于巩固知识。
现代工具。本书涵盖了 PHPUnit(7.x)、Mockery、PHPStan 等工具的当前版本,使其在出版多年后仍然有用。
幽默与轻松风格。作者文笔生动,带有一丝自嘲,使阅读引人入胜。测试并非最有趣的话题,但 Hartjes 成功保持了读者的兴趣。