java mockserver搭建_自动化测试基础设施(一)——为功能测试构建通用mock server系统...

版本4(提供多种协议的支持)

估计有人在抱怨,说了这么多这个mock server还只能mock HTTP接口啊,我们的系统中存在HTTP接口,RPC接口,SMTP接口等等。这是mock server中协议组件的职责。协议组件是mock server的入口,它提供多种协议的服务,并且解析出协议包数据,然后将数据交给extractor组件;除此之外,协议组件在收到上层的返回值后,会 按照协议的格式返回给被测系统 。利用一些开源的类库,我们可以很容易对一些通用协议提供支持,但对一些私有的二进制协议如果没有现成的库支持,要重新开发成本很大,不过我们可以从客户 端来解决这个问题,这在后续的文章中会有介绍。

版本5(模拟行为)

基本上一个功能还算完善的mock server成型了。但这就够了么?对于要模拟各种场景的测试还远远不够。我们很多接口有回调的功能,我们通常还需要模拟接口超时的情况,而对于一些支付 相关的接口经常需要对参数进行加密解密,而且这些情况都需要是可配置的。有没有发现,前面我们介绍的所有实际上都是mock值。也就是我们设置一些值,然 后调用的时候将值返回。但是很多时候我们不仅需要mock值,更要mock行为。这样我们有了mock server中最核心的组件:命令执行引擎(好牛的名字,其实就那样)。在设置mock的时候我们不再是设置一个值,而是设置一个预定义命令组合成的流水 线(即按照类似下面xml的配置一步一步执行,并且可以将上一步的执行结果传递给下一步):

1000

{“ret”:”true”}

{“ret”:”true”}

上面的流水线被命令执行引擎解析执行后就是按顺序执行对应的DelayCommand, CallbackCommand以及ReturnCommand命令了,具体命令就不介绍了。采取这种方式给我们mock server带来了很大的灵活性:只需要简单的扩展一个子命令,就可以扩充mock server的行为。比如mock某网关接口时需要使用MD5加密,只需要扩展一个MD5Command(下面代码中的$result表示前一步骤 加密后的结果):

$result

DSL

现在我们的mock不仅可以mock值了,对于各种行为的模拟也得心应手。但是要使用方便,还要提供便于使用的接口。Mock server提供两类接口:针对自动化测试的DSL,以及针对手工测试使用的管理界面。这里主要介绍这种DSL(因为我们的测试用例是使用xml编写,转 换成编程语言也很容易):

1000

$result

service是对被mock的服务的描述,比如对于SMTP,我们可以这样定义: service="smtp:9000"。这个表示在9000端口上监听smtp协议。而matcher即前面介绍的matcher组件所使用的各种匹配 器,用于匹配被测系统调用mock server时传递的数据。比如上面的例子表示的就是如果被测系统调用http接口/ticket.jsp,并且参数里包含orderNo则延迟1秒钟, 然后返回一个json值 。

总结

前面几节介绍了一个比较完善的通用mock server从简到繁演化的设计思路,希望可以为想要构建类似设施的读者提供一个参照。

a46538fc47e2e813d0ab83b7723863a0.png

这个mock系统包含两个主要部分:mock admin和mock server。Mock admin是管理界面,主要提供监控(可以在界面上实时看到被测系统与mock server交互)以及手工测试时的配置界面。 Mock server即前面介绍的主体,其架构如上图所示。Mock server包含几个核心组件:协议、extractor、matcher、命令执行引擎、存储(即mock server中使用的各种数据的存储)。Mock server提供三类接口:配置、被mock接口(各种服务,通过协议组件提供)、查询。

原文:http://www.infoq.com/cn/articles/auto-test-mock-server

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值