第 6 章 对 BookSwap Web 应用进行端到端测试
我们在学习如何使用 TDD 实现和测试 Go 代码的过程中取得了很大进展。到目前为止,我们已经涵盖了多种实现单元测试和集成测试的技术。单元测试验证每个组件是否按预期工作,而集成测试则扩展了其范围,涵盖了不同单元之间的接口和交互。此外,我们还学习了如何将这些技术应用于各种示例,包括之前章节中介绍的 BookSwap Web 应用。
这些测试为代码更改提供了快速的反馈循环,因为它们不需要启动整个应用程序并使其可用才能运行测试套件。如第 5 章《进行集成测试》中所讨论的那样,我们学习了如何利用 httptest
和 ginkgo
库轻松编写和运行 Web 应用的集成测试。我们还学习了如何使用行为驱动开发(BDD)来编写测试,这是一种流行的技术,常用于编写集成测试和端到端(E2E)测试。
然而,虽然我们可以依赖单元测试和集成测试来确保应用程序在各种场景下的正常运行,但我们不应忽视 E2E 测试为我们的测试策略带来的好处。只有 E2E 测试才能验证整个应用程序的行为,并复制用户流程和体验。简单来说,这些测试为我们提供了对生产环境中用户体验的洞察,这是我们在发布应用程序之前应进行的最终验证。
本章将讨论为前几章介绍的 BookSwap Web 应用实现端到端(E2E)测试套件的过程。我们将使用 Docker 来简化相同应用程序的创建和销毁,并讨论需要对应用进行的修改,以便使用数据库。接下来,我们将学习如何使用 Godog
编写和运行 E2E 测试。最后,我们将讨论在测试中应包含哪些数据库断言。
在本章中,我们将涵盖以下内容:
-
BookSwap
应用的需求 -
Web 应用中数据库存储的实现
-
开始使用
Cucumber
和Godog
-
E2E 测试的实现
-
数据库启动位置和断言
技术要求
要运行本章中的代码示例,您需要安装 Go 版本 1.19 或更高版本。安装过程可以参考 Go 官方文档,网址为 https://go.dev/doc/install 。
本书中包含的代码示例可以在以下地址公开获取: https://github.com/PacktPublishing/Test-Driven-Development-in-Go/chapter06 。