微服务场景下的自动化测试(下)

组件测试

贯穿应用层和领域层的测试。不过通常来说,这部分的测试不会访问真实的外部数据源,而是使用同schema的内存数据库,而且对外部service的访问也会使用Stub的方式:

· 内存数据库

· Stub外部服务(WireMock)

· RestAssured

比如使用h2来做内存数据库,并且自动生成schema。使用WireMock来Stub外部的服务等。

如果使用Spring,还可以通过profile来切换不同的数据库。比如下面这个例子中,默认的profile会连接数据库jigsaw,而integration的profile会连接jigsaw_test数据库:

组件测试会涉及到的组件包括:

· URL路由

· 序列化与反序列化

· 应用对领域层的访问

· 领域层对数据的访问

· 数据库访问层

· 前后端分离

除了后端的测试之外,在目前的前后端分离场景下,前端的应用越来越复杂,在这种情况下,前端的组件测试也是一个测试的重点。

一个前端应用至少包括了这样一些组件:

· 前端路由

· 模板

· 前端的MVVM

· 拦截器

· 事件的响应

要确保这些组件组合起来还能如预期的执行,相关测试必不可少。这篇文章详细讨论了前后端分离之后的测试及开发实践。

契约测试

在微服务场景中,服务之间会有很多依赖关系。根据消费者驱动契约,我们可以将服务分为消费者端和生产者端,通常消费者自己会定义需要的数据格式以及交互细节,并生成一个契约文件。然后生产者根据自己的契约来实现自己的逻辑,并在持续集成环境中持续验证。

Pact已经基本上是消费者驱动契约(Consumer Driven Contract)的事实标准了。它已经有多种语言的实现,Java平台的可以使用pact-jvm及相应的maven/gradle插件进行开发。

· pact/pact-jvm

· pact-broker

乐搏第十八期VIP全栈课程即将开班

Python自动化课程

也将迎来下一批提升的同学

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180723A1T94300?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券