我正在一个环境中实现一些自动功能测试,大约有20个应用程序使用队列和/或restful接口相互交谈。
我面临的问题是,我在其中一个应用程序中添加了一些测试,让我们称之为支付,它们看起来都非常漂亮和绿色。支付应用程序上的一个更改在发送到另一个应用程序的消息中添加了一个额外字段,让我们称之为CRM,而CRM放弃了该消息,这意味着应用程序开始失去同步。支付应用程序(与大多数其他应用程序一样)以一种即席即忘的方式发送消息,这意味着生产者永远不知道消息是否被处理或丢弃。
我想知道如何测试系统之间的这些依赖关系。一个选项(我不喜欢从我的直觉,但不知道为什么)是连接到另一个系统,并验证记录已经更新。大多数应用程序都有restful接口,并且还提供客户端,因此并不是很多工作。但我有强烈的感觉,这样做会使测试更加脆弱。我不喜欢这个的原因之一是,大多数应用程序都与其他4-10个应用程序对话,所以它不仅仅是检查另一个应用程序.而且由于很多事情都是异步的,所以它给测试增加了更多的不确定性。
那么,如何为这种环境创建功能测试呢?
发布于 2012-03-02 14:43:22
我试着试着尽可能接近脆弱程度。如果CRM是没有完成任务的组件,那么在测试中就会有一个漏洞。这是对变化反应不佳的组件。这是一段没有发出警报的留言。
我觉得当测试单个系统的方法不明显时,人们就会转向大型集成测试。如果您发现这个不太明显的简单测试问题,您通常会发现一种更好的方法来设计您正在做的事情。
发布于 2012-03-02 13:54:44
在消息传递系统中添加一些日志功能(或日志记录服务)可能是个好主意。当启用日志记录时,每个发送消息的应用程序/服务都应该对此进行记录。另外,应该记录传入的消息,并且在消息被成功处理或被丢弃时应该将其记录下来。您的测试框架应该可以方便地访问所有日志,并且日志记录服务应该设计为通过编程方式被测试查询。
然后,当您创建支付应用程序的测试时,您不必连接到您的CRM服务(以及4-10个其他应用程序)来验证是否收到了通过付款发送的消息。您只需连接到日志记录服务并检查日志。
https://softwareengineering.stackexchange.com/questions/137971
复制相似问题