Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/259.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在遵循TDD从头开始构建web应用程序时,应该首先编写哪些测试?_Php_Unit Testing_Tdd_Functional Testing - Fatal编程技术网

Php 在遵循TDD从头开始构建web应用程序时,应该首先编写哪些测试?

Php 在遵循TDD从头开始构建web应用程序时,应该首先编写哪些测试?,php,unit-testing,tdd,functional-testing,Php,Unit Testing,Tdd,Functional Testing,我的基本问题归结为:当开始一个新的项目时,我应该先为一个特性编写一个功能测试,然后在我试图通过功能测试时编写单元测试吗?或者我应该先考虑该特性的一个较小的组件,然后为其编写一个单元测试(然后再为该特性编写一个功能测试) 例如,假设我希望能够登录到我的web应用程序。我是否首先编写功能测试,列出登录过程中发生的步骤(用户在登录页面上,用户填写必填字段,用户单击登录按钮等)?还是更倾向于先为表单字段的验证规则编写单元测试?我一直在做前者,现在我在质疑我的工作流程是否有缺陷,是否有更好的方法我没有看到

我的基本问题归结为:当开始一个新的项目时,我应该先为一个特性编写一个功能测试,然后在我试图通过功能测试时编写单元测试吗?或者我应该先考虑该特性的一个较小的组件,然后为其编写一个单元测试(然后再为该特性编写一个功能测试)

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


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

您建议的第一种方法是:为总体行为编写一个功能测试,然后编写单元测试来驱动一点点功能,这是我的首选


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

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