gpt4 book ai didi

integration-testing - 如何为异步交互的系统编写集成测试

转载 作者:行者123 更新时间:2023-12-02 09:14:33 25 4
gpt4 key购买 nike

假设我有一个名为 PlaceOrder 的函数,调用该函数时会将订单详细信息插入本地数据库并将消息(订单详细信息)放入 TIBCO EMS 队列中。

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

现在我编写集成测试的方式是

  1. 调用下单
  2. sleep ,并检查本地数据库中是否存在详细信息
  3. sleep 并检查外部系统中是否存在详细信息。

上面的做法正确吗?上述测试让我相信,端到端集成正在发挥作用,但是有没有更好的方法来测试上述场景?

最佳答案

您描述的问题很常见,您的方法是一个非常典型的解决方案。

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

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

在“以测试为指导的开发面向对象的软件”*中,有一章专门讨论这个主题,因此如果您要进行大量此类测试,您可能需要获取一份副本。

"There are two ways a test can observe the system: by sampling its observable state or by listening for events that it sends out. Of these, sampling is often the only option because many systems don’t send any monitoring events. It’s quite common for a test to include both techniques to interact with different “ends” of its system"

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

关于integration-testing - 如何为异步交互的系统编写集成测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5153257/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com