17

本着这个问题的精神,我想知道是否有人对为 Django webapp 创建有用且“完整”的测试套件(测试套件是否可以“完整”?)有任何提示。

我的情况:我已经完成了一个原型,现在正在添加一些回归测试。我个人使用django-webtest进行大部分测试,并使用Django 测试客户端进行一些 URL 测试。

我对我的测试套件完全不满意。我远不是一个测试专家,所以试图在这方面进行改进。任何提示——无论是否适用于我的情况——将不胜感激。

4

2 回答 2

14

我建议阅读Karen M. Tracey 的Django 1.1 测试和调试。前五章介绍了 Django 中的测试。具体来说,您应该查看第 5 章,其中讨论了集成其他测试工具。以下是第 5 章所涵盖内容的摘录:

在本章中,我们:

  • 了解了 Django 为添加测试函数提供了哪些钩子
  • 看到了如何使用这些钩子的示例,特别是在添加代码覆盖率报告的情况下
  • 还探讨了一个不需要使用这些钩子的示例——将twill测试工具的使用集成到我们的 Django 测试用例中时

以下是 Karen Tracey 在她的书第 5 章中讨论的一些工具的链接:

生菜

您可能还想看看生菜。从网站:

Lettuce 是一个非常简单的基于 Cucumber 的 BDD 工具。

Lettuce 文档还有一个关于将 Lettuce 与 Django 集成的部分的部分。

于 2010-12-16T22:53:45.457 回答
3

测试提供了(至少)4 个问题的答案。

  1. 我的实现是否正确?应用程序是否与记录在案的或至少在脑海中应有的行为方式相匹配。

  2. 我最近的改变有什么破坏吗?

  3. 我的应用程序安全吗?来自无辜的用户和狡猾的人。

  4. 我的应用程序的性能是否足够?

对于#1,每个“功能”至少需要进行一次测试,并且可能需要针对主要功能进行多次测试。如果您既是开发人员又是测试开发人员,这里很容易出现遗漏错误。

对于#2,从编写测试套件和代码(并忠实地运行它)的纪律开始是关键。

对于 #3,确保在正常程序指导操作之外访问的 URL 在权限方面表现正常。您可能不希望一个用户能够修改甚至另一个用户的信息,但如果他们可以输入 ../user/505 并获得可能有问题的所有内容。我敢肯定这里还有很多其他的东西需要测试,所以请其他人在这里插话。

测试具有大量流量的应用程序的性能和扩展稳健性并不是​​我所知道的。

查看 Django 本身的测试用例可以了解应该测试的粒度。Django 主干测试

Django docs 有一篇关于测试的好文章:search the docs for testing。

于 2010-12-16T21:58:05.770 回答