微服务与遗留应用的测试策略
1. 遗留应用与微服务测试概述
微服务常被用于替换遗留应用,而遗留应用通常是单体部署架构。遗留应用的持续交付管道会测试众多功能,这些功能后续需拆分为微服务。由于功能繁多,单体部署架构的持续交付管道测试步骤耗时极长,生产部署也变得复杂且耗时。在这种情况下,对遗留应用的每次小代码更改都投入生产是不现实的,通常每14天的冲刺阶段结束时进行一次部署,甚至每季度才发布一次。夜间测试可检查系统的当前状态,部分测试可从持续交付管道转移至夜间测试,这样能加快持续交付管道的速度,但某些错误可能仅在夜间测试时才被发现,此时就需要找出前一天的哪些更改导致了错误。
2. 遗留应用测试的迁移
从遗留应用向微服务迁移时,测试尤为重要。若仅使用遗留应用的测试,会测试到已迁移至微服务的功能,这意味着每次微服务发布时都要运行这些测试,耗时过长。因此,需要迁移测试,将其转变为微服务的集成测试。不过,微服务的集成测试应快速执行,在此阶段,无需对单个微服务的功能进行测试。遗留应用的测试应转变为单个微服务的集成测试甚至单元测试,这样测试速度会更快,且作为单个微服务的测试运行,不会拖慢微服务的共享测试。
不仅要迁移遗留应用,还要迁移测试,否则即使迁移了遗留应用,也无法实现快速部署。可以从遗留应用的测试中移除已转移至微服务的功能测试,逐步加快遗留应用的部署速度,使对遗留应用的更改也变得更加容易。
3. 遗留应用与微服务的集成测试
遗留应用需与微服务一起进行测试,微服务要与生产环境中的遗留应用版本一起测试,以确保微服务在生产环境中能与遗留应用协同工作。为此,可将生产环境中运行的遗留应用版本集成到微服务的集成测试中,每个微服务都有责任