开发网站时的单元测试?

时间:2010-07-27 19:09:30

标签: unit-testing tdd

在了解了TDD和单元测试之后,我真的希望在编写代码时编写测试,最好是在编写代码之前,因为我看到了Python编写的优点。我正在开发一个网站,我正在尝试根据要求编写测试,但它证明比预期更困难。

当您使用公共接口生成代码库供其他人使用时,我可以看到编写测试的好处。开发一个网站,其中逻辑真的不多,而且主要是对数据库进行读写,这对于单元测试来说似乎有点困难。大多数情况下,我必须在数据库中创建/编辑/删除行。

我正在使用一个框架(Kohana 3 for php),所以我将要使用的所有库和助手中有99%已经过测试(希望如此),那么他们还要编写什么样的测试? ?

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

在开发网站时,你真的可以测试多少,你应该怎么做呢?

编辑:此问题上缺少活动是否有迹象?我知道必须测试某些东西,比如安全性等,但是使用单元测试可以编写多少东西,TDD就是问题。

感谢。

3 个答案:

答案 0 :(得分:2)

  

开发一个网站,其中逻辑真的不多,而且对数据库的阅读和写作大多比单元测试更难。大多数情况下,我必须在数据库中创建/编辑/删除行。

不完全正确。

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

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

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

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

答案 1 :(得分:1)

你试过Selenium吗?它允许您在Web浏览器中自动执行几乎任何操作。例如,您可以让它通过并单击所有链接并确保它们转到正确的URL。

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

答案 2 :(得分:0)

如果您的网站包含多种表单,您如何编写它们?你用纯HTML写每个视图吗?或者您是否编写了自己的表单助手,以想要的方式生成表单?如果你这样做,你可能会发现对表单生成器进行单元测试可以更容易地编写它们。

通常,如果您的程序主要是CRUD,请注意自动化CRUD管理的方法;编写自己的自定义CRUD生成器。这并不意味着编写将结束所有框架的CRUD框架;这将是太多的工作。只需为当前应用程序所需的小东西编写一个生成器。 TDD将帮助您。