加入收藏 | 设为首页 | 会员中心 | 我要投稿 衡阳站长网 (https://www.0734zz.cn/)- 数据集成、设备管理、备份、数据加密、智能搜索!
当前位置: 首页 > 综合聚焦 > 资源网站 > 资源 > 正文

要黑盒测试微服务内部服务间调用,我该如何实现?

发布时间:2020-02-28 02:45:18 所属栏目:资源 来源:站长网
导读:单体系统和微服务的区别在于,一个单体系统是一个大而全的功能集合,每个服务器运行的是这个应用的完整服务。而微服务是独立自治的功能模块,它是生态系统中的一部分,和其他微服务是共生关系。随着微服务架构的普及,我们遇到了许多服务之间相互依赖。那
  单体系统和微服务的区别在于,一个单体系统是一个大而全的功能集合,每个服务器运行的是这个应用的完整服务。而微服务是独立自治的功能模块,它是生态系统中的一部分,和其他微服务是共生关系。随着微服务架构的普及,我们遇到了许多服务之间相互依赖。那么,我们需要对其进行模块测试就有点力不从心了。例如,我们的模块中存在服务 A 内部依赖于服务 B,而整个模块又依赖于服务 C,如图所示。要黑盒测试微服务内部服务间调用,我该如何实现?  那么,针对微服务的内部服务依赖,我们如何实现测试呢?  事实上,我们由两种方案。第一种方案,我们将所有依赖的服务都进行构建与打包,然后统一部署进行测试。但是呢,这种方案过于复杂,且可能会可能演变成集成测试。因此,第二种方案通过虚拟化服务进行 API 仿真就显得更加合适了。对此,Hoverfly 作为一种新的服务虚拟化工具,可以模拟 HTTP 和 HTTPS 服务。Hoverfly 会启动一个代理,并使用存储的内容对请求进行响应,而这个响应和真实服务针对特定的请求产生的响应完全一致。如果整个流程能被正确地执行,并且存储地响应和真实服务一致,则 Hoverfly 可以完美地模拟真实服务。  读者可以通过官方教程进行安装,链接:https://hoverfly.readthedocs.io/en/latest/pages/introduction/downloadinstallation.html。  本文的示例教程以开放在 github,可以下载运行,链接:https://github.com/lianggzone/hoverfly-samples  其中最为核心的是 hoverfly-provider 服务提供一个 API 接口,通过 http://localhost:8080/health 提供服务。  而另外一个 hoverfly-service 服务通过 RestTemplate 进行内部服务调用,并通过 http://localhost:8089/health 提供服务。  现在,准备好必要的工作后,我们来聊一聊如何使用 Hoverfly 进行虚拟化服务。首先,我们需要启动 Hoverfly。  hoverctl start  Hoverfly 启动后,提示其代理端口和管理台端口,如图所示。要黑盒测试微服务内部服务间调用,我该如何实现?  然后,我们将 Hoverfly 切换成捕获模式。  hoverctl mode capture  我们启动 hoverfly-provider 服务和 hoverfly-service 服务,进行 http://localhost:8089/health 接口调用。注意的是,这里,我们需要指定 Hoverfly 作为代理。  curl localhost:8089/health -H "Content-Type: Content-Type" --proxy localhost:8500  此时,我们通过指定 proxy 参数,请求会首先转发到 Hoverfly 代理服务,然后再被转发到真正的业务服务,而响应接受过程也是如此。要黑盒测试微服务内部服务间调用,我该如何实现?  最后,我们采集足够多的样本后,就可以切换到仿真模式。  hoverctl mode simulate  在仿真模式下,我们再次发起相同的请求。  curl localhost:8089/health -H "Content-Type: Content-Type" --proxy localhost:8500  Hoverfly 会将之前记录袭来的请求来响应业务结果。要黑盒测试微服务内部服务间调用,我该如何实现?  那么,我也可以通过其控制台进行查看。  事实上,一旦 Hoverfly 存储了请求和响应的数据,我们就不需要访问真正的业务访问,做到真正的仿真测试。次数,我们可以通过如下命名导出结果文件 simulations.json。  hoverctl export simulate.json  然后,根据持续集成和持续测试的规格标准,进行配置文件依赖的初始化即可。(这里,可以通过 hoverctl import simulations.json 执行)要黑盒测试微服务内部服务间调用,我该如何实现?

(编辑:衡阳站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读