前言

过去几年,我一直在帮助朋友和同事学习 PHP 和测试驱动开发 (TDD)。我意识到,我发现自己在与不同的人重复讨论一些事情。我告诉自己,如果能把我的笔记集发给我的朋友和同事就好了,这样我就能帮助他们用 PHP 开发从项目开始到部署的应用程序。遗憾的是,我的笔记只对我自己有意义。

2009 年,我担任 C# 开发员,并结识了同为编程爱好者的同事。遗憾的是,我们很久没有联系了。11 年后的 2020 年,在 COVID 禁闭期间,我与久违的朋友取得了联系,并开始聊起了编程。他们告诉我,他们非常想学习 PHPTDD。然后我们在一个周末进行了一次屏幕分享教程,我意识到我真的需要开始写一些更有条理的东西来帮助其他有兴趣学习这个主题的人。

我大部分时间都在进行自我培训。我买书,看书,看有关我自己想学的东西的教程。于是我决定写一本关于 PHP TDD 的书。由于我从 Packt 出版的书籍中学到了很多,我想我应该与他们联系。

作为一名软件开发人员,阅读本书将有助于你开始整理思路和项目构建所需的东西。你将学习如何编写和使用自动化测试来帮助提高软件质量,还将学习如何使用工具来自动执行测试以及将代码部署到远程服务器上。我的目标是让读者了解 TDD 作为一种流程的价值,而不仅仅是学习如何编写自动化测试。这就是为什么我涵盖了从启动项目到将其部署到面向公众的服务器上的主题。

这本书适合谁

如果你是一名专业的 PHP 开发人员,厌倦了开发不容易测试或维护的应用程序,本书将帮助你成为一名更好的专业 PHP 开发人员。您将学习如何利用 测试驱动开发TDD)和 行为驱动开发BDD)来帮助您开发结构更合理、可维护性更强的软件。

章节简介

第 1 章 什么是测试驱动开发,为什么要在 PHP 中使用它?,介绍了 TDD 的定义、它试图解决什么问题、对 PHP 有什么好处,以及我们开发人员将从实施 TDD 中获得什么。本章还将让你了解 TDD 在大型项目中的价值,以及它如何帮助减少回归。

第 2 章 理解和组织我们项目的业务需求,介绍了如何将业务需求解释为一个有条理的列表。该列表可用于帮助开发人员确定优先级,并确定我们需要构建哪些功能,以及首先构建哪些功能。

第 3 章 使用 Docker 容器设置我们的开发环境,主要介绍用于开发的 Docker 容器。使用容器将帮助开发人员在不同的服务器环境中获得更一致的应用程序设置。

第 4 章 在 PHP 中使用面向对象编程,介绍了 PHP 中的面向对象编程(OOP)概念。理解 PHP 中的面向对象编程对于实施 TDDBDD 至关重要。

第 5 章 单元测试涵盖单元测试的基础知识,在本章中学到的知识将为后续章节中讨论的 TDD 和 BDD 应用概念奠定基础

第 6 章 应用行为驱动开发,介绍了 BDD 过程BDD 过程将帮助软件开发人员确保实现软件产品的预期行为。

第 7 章 使用 BDD 和 TDD 构建解决方案代码,展示了如何同时使用 BDD 和 TDD。同时实施 BDDTDD 将有助于确保交付预期行为,还有助于提高所开发软件的可靠性。

第 8 章 结合 SOLID 原则使用 TDD,涉及在项目中遵循 SOLID 原则。这将帮助开发人员实施 SOLID 原则,同时在更现实的使用场景中遵循 TDD

第 9 章 持续集成,详细介绍了用于测试执行的持续集成(CI)CI 用于确保所有自动测试首先通过,从而帮助将可靠的代码合并到项目的主分支。

第 10 章 持续交付,将讨论如何使用持续交付(CD)实现发布流程自动化。在 CI 的基础上,我们将进一步实现产品部署流程的自动化。

第 11 章 监控,将介绍如何使用监控工具来监控已部署的应用程序。在生产中运行的应用程序需要维护,而监控工具可以帮助开发人员及时发现生产中可能出现的问题。