我的项目基于事件驱动的微服务架构。而且,我们正在尝试使用黄瓜进行端到端测试,以使测试中的功能以商业可读格式提供。
详细信息如下。服务架构:
涉及4个微服务。我们将请求发送到服务A,请求得到处理并存储在数据库中,服务A发布事件,服务B吸收了该事件,服务B再次处理该事件并将结果存储在DB中并发布了要使用的事件通过服务C并像该服务D一样。
用户(向服务A发送请求的请求)服务A->(处理,存储在数据库中并将事件发布到服务B)->服务b(从A消耗事件,将结果处理并存储在DB中,将事件发布到C) ...
测试策略:作为端到端测试的一部分,我们将向服务A发送发布请求。服务A将仅返回响应200,而没有响应正文。
我们需要对每个服务数据库中的数据进行验证,并断言这与预期的一样。
类似于特征文件
给出系统处于预期状态。什么时候发送请求到服务A和服务返回200响应和验证服务A数据库中是否存在已处理的数据和验证服务B数据库中是否存在已处理的数据和验证服务C DB中是否存在已处理的数据
**我想了解,1.进行此类测试的正确方法应该是什么。
这是您的问题:
我们需要对每个服务数据库中的数据进行验证,并断言这与预期的一样。
这在单元测试和应用程序测试中完成。
如果需要验证每个数据库中的数据是否正确,则您尝试进行单元测试,但您的单元是一堆服务组合。
您正在做一个巨大的单元测试。
单元测试
单元测试验证每个服务中的逻辑是否正确
单独进行应用程序测试
测试api是否以正确的状态代码响应正确的错误。它正确地读写数据库。在这里,您可以测试应用程序的api。
端到端
您将一堆服务捆绑在一起,并发布了一些数据,您确认返回的数据符合预期。 您无需详细介绍每种服务的功能,这已经在较早的测试中得到了解决。
这是服务基本上可以进行通信并返回您期望的最终检查。 您对他们的操作方式没有兴趣。
不要在端到端测试中进行单元测试