我想开始一个宠物项目,以自信地从头开始创建 Web 应用程序,并且我想使用 BDD 和 TDD。 我在“Growing Object-Oriented Software: Guided by Tests”中读到,我们应该从系统的最薄片开始,这样我们就可以拥有整个应用程序的行走骨架,这样我们就可以获得快速反馈并开始思考生产/部署程序。
在 BDD 中编写验收测试后,我将转向更细粒度的测试,例如单元测试。
假设 Web 应用程序是关于寻找与您更相似的 super 英雄,我会编写一个 BDD 场景,例如:
When I insert my information
Then the system should tell that the superhero I'm more similar to is "Batman"
我故意忽略身份验证,以便我们可以专注于系统的主要功能。此场景假设背后有一个可用的基础架构,以便可以端到端地自动复制上述场景。
假设我想在不同的层(Web Server、Application Server 和 Database)布局 Web 应用程序,我该如何实现这个测试? 假设我想使用 Selenium WebDriver 来模拟用户,哪些层必须被模拟,哪些层将首先被测试? 我也考虑过只从测试 API 开始,但这不是端到端测试,但我们只会部分测试应用程序。
最佳答案
Cucumber 是一个很好的 BDD 框架。 UI/Selenium 测试可能有点古怪,所以我建议少用它们(请参阅测试金字塔)。 就我个人而言,我认为我会像您为初学者建议的那样在 API 级别工作,然后您将 UI 与应用程序分离。
在 API 级别编写一些应用程序 (BDD) 的 Cucumber 集成测试,描述高级功能。我不会在这个级别上 mock ,因为您希望看到整个应用程序在此时运行。
然后当您实现这些时,使用 TDD,在这里您将想要模拟外部设备,例如文件 IO/数据库。完成所有 TDD 单元测试后,整个功能应该会通过。继续,直到完成所有功能。
像这样继续下去,然后您将在 API 级别拥有一组可靠的单元测试和一组可靠的集成(功能)测试。
完成后(或并行获取垂直切片)使用“快乐的一天”场景 Selenium 测试启动 UI,这里真正需要测试的是 UI 代码,并且正确连接到应用程序,作为主要应用程序已经过良好测试。
只是我的看法 - 希望对您有所帮助。
关于testing - 如何使用 BDD 从头开始创建 Web 应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45388009/