本着这个问题的精神,我想知道是否有人对为 Django webapp 创建有用且“完整”的测试套件(测试套件是否可以“完整”?)有任何提示。
我的情况:我已经完成了一个原型,现在正在添加一些回归测试。我个人使用django-webtest进行大部分测试,并使用Django 测试客户端进行一些 URL 测试。
我对我的测试套件完全不满意。我远不是一个测试专家,所以试图在这方面进行改进。任何提示——无论是否适用于我的情况——将不胜感激。
本着这个问题的精神,我想知道是否有人对为 Django webapp 创建有用且“完整”的测试套件(测试套件是否可以“完整”?)有任何提示。
我的情况:我已经完成了一个原型,现在正在添加一些回归测试。我个人使用django-webtest进行大部分测试,并使用Django 测试客户端进行一些 URL 测试。
我对我的测试套件完全不满意。我远不是一个测试专家,所以试图在这方面进行改进。任何提示——无论是否适用于我的情况——将不胜感激。
我建议阅读Karen M. Tracey 的Django 1.1 测试和调试。前五章介绍了 Django 中的测试。具体来说,您应该查看第 5 章,其中讨论了集成其他测试工具。以下是第 5 章所涵盖内容的摘录:
在本章中,我们:
- 了解了 Django 为添加测试函数提供了哪些钩子
- 看到了如何使用这些钩子的示例,特别是在添加代码覆盖率报告的情况下
- 还探讨了一个不需要使用这些钩子的示例——将
twill
测试工具的使用集成到我们的 Django 测试用例中时
以下是 Karen Tracey 在她的书第 5 章中讨论的一些工具的链接:
您可能还想看看生菜。从网站:
Lettuce 是一个非常简单的基于 Cucumber 的 BDD 工具。
Lettuce 文档还有一个关于将 Lettuce 与 Django 集成的部分的部分。
测试提供了(至少)4 个问题的答案。
我的实现是否正确?应用程序是否与记录在案的或至少在脑海中应有的行为方式相匹配。
我最近的改变有什么破坏吗?
我的应用程序安全吗?来自无辜的用户和狡猾的人。
我的应用程序的性能是否足够?
对于#1,每个“功能”至少需要进行一次测试,并且可能需要针对主要功能进行多次测试。如果您既是开发人员又是测试开发人员,这里很容易出现遗漏错误。
对于#2,从编写测试套件和代码(并忠实地运行它)的纪律开始是关键。
对于 #3,确保在正常程序指导操作之外访问的 URL 在权限方面表现正常。您可能不希望一个用户能够修改甚至另一个用户的信息,但如果他们可以输入 ../user/505 并获得可能有问题的所有内容。我敢肯定这里还有很多其他的东西需要测试,所以请其他人在这里插话。
测试具有大量流量的应用程序的性能和扩展稳健性并不是我所知道的。
查看 Django 本身的测试用例可以了解应该测试的粒度。Django 主干测试
Django docs 有一篇关于测试的好文章:search the docs for testing。