一、测试微服务时的测试类型
现在,让我们仔细看看所有的微服务测试类型
1、单元测试
单元测试是一种软件测试,可让您检查各个模块或软件组件的准确性。目标是验证每个代码单元是否正常工作。
在功能开发阶段,开发人员独立编写单元测试,因为每个开发人员都比测试人员更了解和理解他们代码的工作原理,并且可以更好地执行此任务。
这使您可以快速检查下一个代码更改是否导致回归,即先前测试的代码部分是否出现错误。它还使检测和消除此类缺陷变得更加容易。
2、合同测试
它是在外部服务边界的测试,验证它是否满足消费者服务所期望的契约。
契约测试是一种通过隔离每个微服务并检查微服务传输的HTTP 请求和响应是否符合契约中记录的共同理解来测试集成点的技术。
通过这种方式,契约测试确保微服务可以通信。
3、集成测试
集成测试检查通常属于同一子系统的不同模块(或类)之间的交互,以确保它们在提供高级功能时按预期协同工作。
集成测试还检查子系统采用的所有通信路径是否正确,并检测每个模块可能对其对等体应该如何行动的任何错误假设。这种类型的测试被认为是整个架构中最关键的测试。
4、组件测试
组件是一个微服务或一组微服务,它们在更大的系统中完成一个角色。组件测试允许您独立验证和评估微服务应用程序的每个组件的性能,而无需集成其他服务。
通常,运行组件测试比评估微服务更容易和更快。
由于微服务测试难度大、速度慢,需要模拟其他微服务或依赖。您可以通过用测试副本或虚拟服务器替换它们来隔离依赖关系。
5、端到端测试
端到端测试建立在集成测试的基础上,集成测试又建立在您所学的所有其他形式的测试之上。顾名思义,E2E 将业务逻辑作为一个集成测试过程进行测试,不是孤立的,而是作为整个系统的一部分。
从理论上讲,它们应该模拟应用程序的真实用户或至少执行真实用户的操作。这些测试通常最难编写并且消耗最多的开发时间。
二、开始测试微服务
微服务架构的测试过程与通常的测试过程有很大不同。微服务架构的特殊性在于,软件是由后端运行的多个服务提供的。
因此,我们需要一种不同且更广泛的测试方法,因为在开发过程中执行集成测试或遍历主要流程可能具有挑战性。
但是,我们可以快速更新单个微服务并对其进行测试,而不会影响其他微服务。
微服务金字塔增加了两种新的测试类型:组件测试、合同测试。
测试微服务的挑战
微服务需要额外的步骤,例如管理多个存储库和分支,每个存储库和分支都有其数据库模式。但与微服务架构相关的测试挑战可能比这更深刻。
以下是与测试微服务相关的一些关键挑战:
可用性:由于不同的团队可能会管理他们的微服务,因此很难确保微服务的可用性(或者,更糟糕的是,试图找到所有微服务同时可用的时间)。
碎片化和整体测试:微服务旨在单独工作以及与其他松散耦合的服务一起工作。这意味着开发人员必须单独测试每个组件,以及一起测试所有组件。