【问题标题】:Which tests should get written first when following TDD for building a web app from the ground up?遵循 TDD 从头开始​​构建 Web 应用程序时,应该首先编写哪些测试?
【发布时间】:2014-10-01 21:45:29
【问题描述】:

我的基本问题归结为:开始一个新项目时,我是否应该先为某个功能编写功能测试,然后在尝试通过功能测试时编写单元测试?还是我应该先考虑该功能的较小组件,然后为此编写一个单元测试(然后再对该功能进行功能测试)?

例如,假设我希望能够登录我的网络应用程序。我是否首先编写功能测试来列出登录过程中发生的步骤(用户在登录页面,用户填写必填字段,用户单击登录按钮等)?还是更喜欢首先为表单字段的验证规则编写单元测试?我一直在做前者,现在我质疑我的工作流程是否有缺陷,以及是否有一些我没有看到的更好的方法。

顺便说一句,我觉得这可能会被标记为“征求意见”,但我已经尝试在其他地方四处寻找和询问,但到目前为止还没有找到明确的答案。提前感谢您的任何回复。

【问题讨论】:

  • 有一天我真的应该学习单元测试,也许是在班卓琴之后。
  • 根据定义,测试驱动开发 (TDD) 要求您在编写代码之前先编写测试;所以你写测试的顺序一般应该由你需要写代码的顺序来决定
  • 你问即使你知道这是题外话?
  • 这是一个工作流问题,可能是主观的。我问是因为我用尽了所有其他选项,但仍然没有找到明确的答案。

标签: php unit-testing tdd functional-testing


【解决方案1】:

您建议的第一个方法是:为整体行为编写功能测试,然后编写单元测试以在您进行时驱动一点点功能,这是我的偏好。

原因如下。第一个测试描述了您希望系统提供的新行为。当它通过时,您可以继续下一个功能。在它通过之前,您需要添加功能。所以这是一个很好的路线图。当你添加每一个新的功能时,你首先编写一个失败的测试单元测试,它只测试那个新的位。所以这是一个很好的、非常具体的测试;它运行迅速,不依赖其他元素。这推动了下一个位的开发,功能测试使您保持正轨,只编写新功能所需的位。您的单元测试将您的注意力集中在手头的直接问题上;您之前通过的单元测试让您知道您何时破坏了现有行为,而您的功能测试让您知道您何时完成了该功能。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-07-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-11
    • 2010-12-18
    相关资源
    最近更新 更多