如何编写此集成测试

时间:2015-03-11 02:06:00

标签: java spring-mvc jms

我正在努力帮助我的叔叔出去有点堵塞。他有一名顾问进来的申请已经停止工作,顾问已经离开了公司,没有人可以解决这个问题。他要求我尝试帮助隔离出错的地方。

我认为编写集成测试将是一个良好的开端,因为我们将以编程方式测试他们的测试'实例。这是设置:

他们每10分钟拉一次数据流并将这些订单发送到他们运行的AMQ实例。 (我们将此模块称为“Streamer'”)。在AMQ实例的另一端,我们有“拉拔器”#39;将这些消息从AMQ中删除并将它们处理到数据库中。在线的某处,消息被操纵或丢失。他请我找出原因。

有没有人知道一种简单的方法,我可以测试整个系统,但能够验证所有信息,因为它被发送或更新? (我想用实时数据来做,而不是模拟数据)。

感谢任何和所有帮助。

2 个答案:

答案 0 :(得分:1)

您可能需要结合使用日志记录和后处理程序来读取日志并检查其一致性。

Streamer发送消息。这应该生成一个描述消息的日志记录,带有时间戳。

应该有另一个日志记录显示Puller收到了消息。

日志处理程序可以生成一个直方图,表明Puller接收Streamer发送的内容需要多长时间,并详细说明Streamer发送和Puller没有收到的任何消息,或Puller认为它已经收到但没有已经送走了。您还可以提取有关活动中任何长期差距的统计信息。

您的日志记录的目标应该是确保原始数据进入日志。日志处理的目标应该是在正确的详细程度上告诉您需要了解的有关系统活动的信息。

答案 1 :(得分:0)

严格来说,这不是集成测试。集成测试正在测试新代码是否可以在其生效之前与其他代码一起使用。

您需要的是记录。处理这些消息的每件事都需要打开日志记录,至少在你确定它正在工作之前。

我不知道你的顾问是否在这件事上添加了日志代码,但是如果他/她没有,我建议添加一些。

请记住,日志记录可能非常精细。您可以专注于一个方法甚至一个变量。从你知道它工作的地方和你知道它已经破裂的地方开始,看看它是否在那里工作。重复,直到您确切知道它停止工作的位置。它被称为二分搜索。它可以是一种非常强大的故障排除技术。

另一种技术是从您的拖缆向拉出器发送心跳消息。您可以经常发送一条非常简单的消息,这样您就不需要等待10分钟进行活动。只需要确保心跳消息不会与实际数据混淆。