3

我写了一个应用服务器(使用 python & twisted),我想开始写一些测试。但由于时间限制,我不想使用 Twisted 的试用版,现在没有时间玩它。所以这就是我的想法:编写一个连接到应用服务器并发出必要请求的小型测试客户端(通信协议是一些内部 XML),以静态方式存储接收到的 XML,然后编写一些测试使用 unitest 处理那些静态数据。

我的问题是:这是一种正确的方法吗?如果是,这种方法涵盖了哪些类型的测试?

此外,使用这种方法有几个缺点,例如:无法访问数据库层以构建/重建模式,测试客户端何时连接到服务器:每个单元测试或运行测试套件之前?

4

4 回答 4

2

您应该使用试用版。这真的不是很难。Trial 的文档有待改进,但如果你知道如何使用标准库单元测试,唯一的区别就是不用写

import unittest

你应该写

from twisted.trial import unittest

...然后您可以从您的test_方法中返回 Deferreds。几乎其他一切都是一样的。

另一个区别是,不是在模块底部构建一个巨大的测试对象然后运行

python your/test_module.py

您可以简单地定义您的测试用例,然后运行

trial your.test_module

如果您根本不关心反应器集成,实际上,您可以trial在一组现有的 Python 单元测试上运行。试用版支持标准库 ' unittest' 模块。

于 2009-02-01T11:25:33.207 回答
1

“我的问题是:这是一个正确的方法吗?”

这是你选择的。你找了很多借口,所以我假设你在这门课上相当固定。这不是最好的,但你已经列出了你这样做的所有理由(然后就这个具体的行动方案提出了后续问题)。“正确”不再进入它,所以这个问题没有答案。

“这种方法涵盖了什么样的测试?”

他们称之为“黑盒”测试。应用程序服务器是一个黑盒子,有一些输入和输出,您无法测试它的任何内部结构。它被认为是一种可接受的测试形式,因为它测试底线外部接口的可接受行为。

如果您有问题,结果证明它对进行诊断工作毫无用处。您会发现您还需要对内部结构进行白盒测试。

“无法访问数据库层以构建/重建模式,”

为什么不?这是 Python。编写一个单独的工具来导入该层并进行数据库构建。

“测试客户端什么时候连接到服务器:每个单元测试还是在运行测试套件之前?”

取决于测试的意图。取决于您的用例。与您的实际目标客户在“现实世界”中会发生什么?

您需要测试类似客户端的行为,以客户端建立连接的方式建立连接。

此外,您还需要测试异常行为,例如客户端断开连接或做事无序或未连接。

于 2009-01-21T11:15:34.870 回答
1

我认为你选择了错误的方向。确实,试用文档非常轻量。但是 Trial 是基于 unittest 的,只添加了一些东西来处理 reactor 循环和异步调用(编写处理 defers 的测试并不容易)。您所有不包括延迟/异步调用的测试都将与正常的单元测试完全相同。

Trial 命令是一个测试运行器(有点像鼻子),因此您不必为您的测试编写测试套件。您将节省时间。最重要的是,Trial 命令可以输出分析和覆盖信息。只需执行 Trial -h 即可获取更多信息。

但无论如何,您首先应该问自己的是您最需要哪种测试,单元测试、集成测试或系统测试(黑盒)。使用 Trial 可以完成所有工作,但不一定总是最合适的。

于 2009-01-21T14:01:38.157 回答
0

以前没有使用过twisted,并且twisted/trial 文档与我刚刚看到的相比并不出色,但是您可能需要2-3 天的时间才能正确实施您上面描述的测试系统。现在,就像我说的我不知道试用版,但我猜你可能会在 1-2 天内让它工作,因为你已经有了一个 Twisted 应用程序。现在,如果试用版在更短的时间内为您提供更多覆盖,我会选择试用版。

但请记住,这只是粗略查看文档的答案

于 2009-01-21T09:35:17.927 回答