2011-03-01 50 views
2

假设我有一个名为PlaceOrder的函数,它在调用时将订单详细信息插入本地数据库并将消息(订单详细信息)放入TIBCO EMS队列中。如何为异步交互的系统编写集成测试

收到消息后,TIBCO BW将调用其他系统(例如ExternalSystem)传递订单详情。

现在,我写我的集成测试的方法是

  1. 电话下订单
  2. 睡眠,并为您的详细信息存在于本地数据库
  3. 睡眠和检查细节存在于ExternalSystem。

上述方法是否正确?以上测试让我相信,端到端集成工作正常,但是有没有更好的方法来测试上述情况?

回答

1

你描述的问题是相当普遍的,你的方法是一个非常典型的解决方案。

该解决方案的问题是,如果延迟太短,您的测试有时可能会通过,有时会失败,但如果延迟很长,那么您只是浪费时间等待,并且有很多测试,它可以添加很多延迟。但是除非你能得到一些信号告诉你订单到达数据库,否则你只需等待。

您可以通过短时间间隔进行大量检查来减少延迟。如果您的订单在超时后不存在,那么您将无法通过测试。

在“成长中的面向对象软件,以测试为指导”*中,有关于这个主题的一章,所以如果您要进行大量的这类测试,您可能需要获得一份副本。

“有两种方法的测试可以观察系统:通过采样其显着 状态或通过监听,它发出事件其中,采样 往往是唯一的选择,因为许多系统不发送任何监控 事件。这是很常见的一个测试,包括这两种技术进行交互 与不同的系统”

(*)http://my.safaribooksonline.com/book/software-engineering-and-development/software-testing/9780321574442

的“末端”
相关问题