受这个问题的启发,我想知道有没有人有关于创建一个有用和“完整”的测试套件(测试套件是否可以“完整”)的 Django 网络应用程序的建议。
我的情况:我已经完成了一个原型,并正在添加一些回归测试。我个人使用django-webtest进行大部分测试,同时也会使用Django 测试客户端进行一些 URL 测试。
我对自己的测试套件一点也不放心。由于我不是专业的测试人员,因此试图在这方面改进。任何建议 - 无论是否适用于我的情况 - 都将不胜感激。
受这个问题的启发,我想知道有没有人有关于创建一个有用和“完整”的测试套件(测试套件是否可以“完整”)的 Django 网络应用程序的建议。
我的情况:我已经完成了一个原型,并正在添加一些回归测试。我个人使用django-webtest进行大部分测试,同时也会使用Django 测试客户端进行一些 URL 测试。
我对自己的测试套件一点也不放心。由于我不是专业的测试人员,因此试图在这方面改进。任何建议 - 无论是否适用于我的情况 - 都将不胜感激。
我建议阅读Karen M. Tracey的Django 1.1 Testing and Debugging。前五章涵盖了Django中的测试。具体来说,您应该查看第5章,其中讨论了集成其他测试工具的内容。以下是第5章内容的摘录:
在本章中,我们:
- 学习了Django提供的用于添加测试函数的钩子
- 看到了这些钩子如何被使用的示例,特别是在添加代码覆盖率报告的情况下
- 还探讨了一个例子,在这个例子中,使用这些钩子是不必要的-当将twill测试工具集成到我们的Django测试用例时
以下是Karen Tracey在她的书中讨论的一些工具的链接:
您可能还想查看Lettuce。来自网站的介绍:
Lettuce是一个非常简单的基于Cucumber的BDD工具。
Lettuce文档还有一个关于将Lettuce与Django集成的部分。
测试至少可以回答以下4个问题:
我的实现正确吗?应用程序是否与文档或至少心理预期的行为相匹配。
我的最新更改有没有破坏任何东西?
我的应用程序安全吗?对于无辜用户和狡猾的人都是如此。
我的应用程序性能足够吗?
对于#1,每个“特性”至少需要一个测试,对于主要特性可能需要多个测试。如果你既是开发者又是测试开发者,很容易出现遗漏错误。
对于#2,从编写测试套件并且忠实地运行它开始是关键。
对于#3,确保在正常程序指导操作之外访问的URL在权限方面表现正确。您可能不希望一个用户能够修改甚至另一个用户的信息,但是如果他们只需输入../user/505就能获取那里的所有内容,那可能是一个问题。我相信这里还有很多其他应该进行测试的事情,所以请其他人在这里发表意见。
测试具有大量流量的应用程序的性能和可伸缩性并非我所擅长的领域。
查看Django本身的测试用例可以提供应该进行测试的粒度的感觉。Django trunk tests
Django文档中有一篇关于测试的好文章:搜索文档以获取testing。