testing - 如何使用 BDD 从头开始​​创建 Web 应用程序?

标签 testing web-applications tdd bdd

我想开始一个宠物项目,以自信地从头开始创建 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/

相关文章:

.net - 如何减少 .NET 中的 MSTest 执行时间?

java - 我怎么知道是否在被测单元上调用了方法?

unit-testing - 开发网站时进行单元测试?

python - QMessageBox 的功能测试...为什么不起作用?

unit-testing - (广泛的问题)你怎么能确定一段代码工作正常?

java - Espresso 测试android中的多场比赛

java - Web 应用程序和智能卡交互

javascript - 如何在本地将 CSS 和 JS 连接到 Chromium Delphi?

java - 创建数据库驱动的 Java 网站的最佳方法?

c# - 不确定如何在 DnD Kata 中添加强度修饰符