假设我有一个名为PlaceOrder
的函数,调用时会将订单详细信息插入本地数据库并将消息(订单详细信息)放入TIBCO EMS队列中。
收到消息后,TIBCO BW将调用其他系统(比如ExternalSystem
)传递订单详情。
现在我编写集成测试的方式是
上述方法是否正确?以上测试让我相信,端到端集成正在运行,但有没有更好的方法来测试上述场景?
答案 0 :(得分:2)
您描述的问题很常见,您的方法是一种非常典型的解决方案。
这个解决方案的问题是,如果延迟太短,你的测试有时可能会通过,有时会失败,但如果延迟很长,那么你只是浪费时间等待,并且通过许多测试,它可以添加一个很多延迟。但除非你能得到一些信号告诉你订单到达数据库,否则你只需要等待。
您可以通过短时间间隔进行大量检查来减少延迟。如果您在超时后订单不存在,那么您将无法通过测试。
在“以测试为导向的日益增长的面向对象软件”*中,有一章关于这个主题,所以如果您要进行大量的此类测试,您可能需要获得一份副本。
“测试可以通过两种方式观察系统:通过对其可观测量进行采样 状态或通过侦听它发出的事件。其中,抽样是 通常是唯一的选择,因为许多系统不发送任何监控 事件。测试包含两种交互技术是很常见的 与其系统的不同“目的”“