保障被测服务与依赖服务交互可靠性的策略与实践

dzf
2023年04月19日 · 阅读 213
在微服务架构中,被测服务很少孤立存在,往往与众多依赖服务相互协作以实现完整的业务功能。这些依赖服务可能包括数据库、缓存系统、第三方 API 等。保障被测服务与依赖服务交互的可靠性成为软件测试与质量保障领域的关键任务,直接影响到整个系统的稳定性、性能和用户体验。我们采用的测试方法是服务故障演练,简单来说,就是验证被测服务所依赖的第三方服务出现故障后,被测服务是不是可靠,下面通过一个图说明这个流程。
一.服务故障演练的场景
如图,我们的被测服务是B,但是B要想完全实现身份验证的逻辑,除了自己完成一些相关验证的操作外,还得依靠C返回的验证码来辅助验证,才能实现验证服务逻辑的闭环。所以,想要测试服务B是否可靠,必须得验证服务C出现故障后服务B也能正常处理业务逻辑,那才说明服务B是可靠的,这就是我们为什么要进行服务故障演练,出故障的服务是C,验证可靠性的服务是B,无论C发生什么故障,B都要一直保持可靠。
二.如何进行服务故障演练
-
介入时机:
服务端业务稳定之后就可以介入了,当服务端业务稳定时,意味着系统的核心业务功能已经经过了充分的测试并且能够正常地为用户提供服务。在这个阶段介入故障演练,可以确保我们是在一个相对可靠的基础上进行测试,不会因为系统本身还存在未解决的功能缺陷而干扰对故障场景的观察和分析。 -
前置工作:
在梳理服务之间的依赖关系,确定每个服务的上下游依赖关系后,准备好工具,满足依赖服务异常行为的模拟 -
测试内容:
- 依赖服务返回超时:
预期:被测服务需要有依赖服务的超时处理机制,调用的被测服务接口返回状态码5XX。
测试方法:通过抓包工具拦截被测服务的请求,拦截后等待20秒查看被测服务对外接口的处理情况。 - 依赖服务返回异常code:
预期:被测服务需要有依赖服务场景异常的处理方式,比方说依赖服务接口返回状态码5XX。
测试方法:通过抓包工具拦截依赖服务的返回,篡改返回状态码 - 依赖服务返回体的遍历:
预期:依赖服务不同的返回体下,也有对应的处理方式
测试方法:通过抓包工具拦截依赖服务的返回,篡改返回体 - 被测服务请求依赖服务时协议的正确性校验:
预期:能请求成功拿到接口正向的预期结果
测试方法:通过抓包工具抓取到被测服务的请求协议,对齐依赖服务的接口文档或直接在依赖服务的测试环境下执行该协议,是否能获取到正向的处理结果 - 依赖服务宕机:
预期:被测服务闭环该场景的处理情况,不能出现未处理暴露敏感数据的情况
测试方法:kill-9等干掉进程的方式,直接干掉依赖服务;或者修改被测服务请求依赖服务的对象,改成失效的情况
三.结果衡量方式
用例评审或者代码覆盖率统计,确保演练场景的全面性,可以有效保障被测服务与依赖服务交互的可靠性,提升整个系统的质量和稳定性,为用户提供可靠的服务体验。
分类:
无
标签:
无