Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.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
Unit testing 开发网站时进行单元测试?_Unit Testing_Tdd - Fatal编程技术网

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

Unit testing 开发网站时进行单元测试?,unit-testing,tdd,Unit Testing,Tdd,在学习了TDD和单元测试之后,我真的希望在编写代码时编写测试,最好是在编写代码之前,因为我看到了用Python编写代码的好处。我正在开发一个网站,我正在尝试根据需求编写测试,但事实证明这比预期的要困难 当您正在生成一个带有公共接口的代码库供其他人使用时,我可以看到编写测试的好处。开发一个网站,实际上没有太多的逻辑,主要是针对数据库进行读写,这似乎有点难以进行单元测试。通常,我必须在数据库中创建/编辑/删除行 我使用的是一个框架(Kohana3 for php),所以我将要使用的99%的库和帮助程

在学习了TDD和单元测试之后,我真的希望在编写代码时编写测试,最好是在编写代码之前,因为我看到了用Python编写代码的好处。我正在开发一个网站,我正在尝试根据需求编写测试,但事实证明这比预期的要困难

当您正在生成一个带有公共接口的代码库供其他人使用时,我可以看到编写测试的好处。开发一个网站,实际上没有太多的逻辑,主要是针对数据库进行读写,这似乎有点难以进行单元测试。通常,我必须在数据库中创建/编辑/删除行

我使用的是一个框架(Kohana3 for php),所以我将要使用的99%的库和帮助程序都已经过测试(希望如此),那么他们还需要为什么编写测试呢

我主要谈论的是脚本语言,而不是CSS或HTML,我已经知道跨浏览器测试

在开发一个网站时,你能真正测试多少,你应该如何去做

编辑:在这个问题上缺乏活动是一种迹象吗?我知道某些东西必须进行测试,比如安全性等等,但是使用单元测试和TDD可以编写多少是个问题

谢谢

开发一个网站,实际上没有太多的逻辑,主要是针对数据库进行读写,这似乎有点难以进行单元测试。通常,我必须在数据库中创建/编辑/删除行

不完全正确

您有数据模型处理。验证有效吗?对数据库中报告的行的计算有效吗

页面之间有控制、顺序和导航功能——链接是否有效?测试设置将提供一个已登录的用户。测试将(1)执行GET或POST以获取页面,然后(2)确认页面实际加载并具有正确的内容

你有授权谁能做什么?每个不同的测试设置将提供不同的登录用户。测试将(1)尝试GET或POST来处理页面。一些测试将(2)确认它们已被定向到错误响应页面。一些测试将(2)确认测试成功

页面上有内容--提取了哪些数据?测试设置将提供一个已登录的用户。测试将(1)执行GET或POST以获取页面,然后(2)确认页面实际加载并具有正确的内容。

您尝试过吗?它允许您在web浏览器中自动执行几乎所有操作。例如,您可以让它浏览并单击所有链接,确保它们指向正确的url


它可以使用多种语言,包括python,并允许在chrome、firefox、ie和其他浏览器中进行测试。

如果您的站点包含许多表单,您如何编写它们?您是否使用普通HTML编写每个视图?或者您是否编写自己的表单帮助程序,以您想要的方式生成表单?如果这样做,您可能会发现对表单生成器进行单元测试会使编写表单生成器更容易


一般来说,如果您的程序主要是CRUD,请寻找自动化CRUD管理的方法;编写自己的自定义积垢生成器。这并不意味着编写将结束所有框架的CRUD框架;那将是太多的工作了。只需为当前应用程序所需的小部件编写生成器。TDD将在这方面帮助您。

您使用哪种语言?PHP?是的,先生。我正在使用一个框架来让生活变得更轻松。@user156814“在这个问题上缺乏活动证明我是对的吗?”在这种情况下,你所说的基本上是错误的,以至于我们无法纠正错误观念。如果您的应用程序做了什么,那么它做的事情是可测试的。声称没有做任何可测试的事情是没有道理的。如果这是真的,为什么要写代码呢?我不是说它不可测试,很明显,几乎任何东西都有测试的方法。我在问,在这种情况下,单元测试到底有多大帮助,除非我正在为网站编写一个代码库?@user156814:我还是不明白你的问题。“几乎任何东西都有测试的方法”,这意味着所有东西都有单元测试。每一个“特性”——您编写的每一行代码——都可以作为一个离散单元进行测试。“单元测试到底有多大帮助?”?我无法理解这个问题,因为您个人编写的每一个代码单元都必须经过测试。如果不测试您编写的每个单元,您如何编写软件?你在问什么?我理解所有这些,但其中有多少可以进行单元测试?我可以看到测试验证和身份验证,但是如何使用单元测试来测试链接是否工作?也许您在这里使用的“测试单元”令人困惑。一切都需要测试,“网络”的一个基本方面是它的操作系统不可知性。找一台电脑,加载你的网站,看看它是否能工作。这是您所需要的最好的测试单元。@eykanal:“加载您的站点,看看它是否工作”。模糊、不可重复且不自动化。如果您为站点编写了一个代码单元,那么必须单独测试该代码单元。再简单不过了。如果你写了它,你必须做一个离散的单元并测试它。仅此而已。我想我有点困惑,我一直认为单元测试应该独立于其他任何东西(比如DB)。。。如果我进行测试以确保从数据库中获取正确的数据,这是否首先取决于数据库中是否有正确的数据?@S.Lott:我认为“模仿数据库通常很愚蠢”的说法有些言过其实。我不做太多的web开发,但我发现使用存储库之类的东西来协调对数据库的访问非常有帮助:它给了您一些进行单元测试的东西,您可以使用模拟来测试它,这样您就不必使用真实的数据库。只是一个不同的意见: