MOCK服务小结

前言:前端

说到mock,你们会想到单测中的mock,测试同窗会想到httpmock服务等。web

mock的做用:程序运行过程当中,设定过滤规则及返回值,来知足固定的数据解析,解决不容易构造或者获取的数据对象。json

mock有哪些工具:api

前端js端拦截mock.js微信

web端的mock工具apiary、swagger、alibaba-rap等工具

Java阵营中主要的Mock测试工具备JMock,MockCreator,Mockrunner,EasyMock,MockMaker等,在微软的.Net阵营中主要是Nmock,.NetMock测试

WEB应用MOCK:spa

web端的mock相对成熟,以http请求拦截为主,进行请求的数据的返回,从上面能够看到有2种方式本地拦截和proxy拦截.net

单一方式缺点:xml

一、本地拦截,没法模拟请求时延等特殊场景,本地数据维护复杂

二、proxy拦截,全部测试case环境须要作host处理,域名切换问题

组合方式优点:

一、使用者不须要host指定

二、能够模拟复杂场景(数据返回,时延,超时等)

三、模拟数据入口统一复用性高

组合的方式缺点:

一、controll层返回页面时,mock页面,业务改动即需变动,没法验证到真正生成页面逻辑,这种mock对测试没有价值

二、返回数据格式多样时,mock多种数据格式,服务接口复杂,使用成本较高,不利于业务快速迭代

web端的mock能解决80%的业务场景,可是真正的数据交互过程不能获得验证。

因此在web以外能不能作深度的mock服务,来知足自动化测试过程当中业务逻辑的验证,减小web端mock服务的复杂性。

RPC服务的mock

RPC服务自动mock,如何帮助测试或开发同窗快速mock一个scf服务?

首先,经过mock咱们能够解决两大类问题:

1、第3方服务依赖:

一、一些服务写场景的覆盖(测试回归阶段,如被测服务调用写操做会产生脏数据的问题,mock掉依赖的imc写接口,返回已有信息,同时完成被测服务的整个逻辑验证)

二、服务深度依赖的问题(被测试服务A,A依赖B,B依赖CD,mock掉B解决了深度依赖的问题)

2、外部服务复杂,MOCK自身部分接口:

三、数据流转状态的模拟 (如担保支付调用微信返回状态)

stp帮你一键生成mock服务

stp工具提供:

一、界面操做建立mock服务

二、接口操做批量建立mock服务

三、服务接口数据在线维护,实时生效

四、mock服务提供下载,根据环境状况进行部署

具体流程以下:

 

 

接口使用方式:

接口定义:

createScfMock

updateScfMock

参数内容:

{"implClass":"","intfCalss":"","methods":[{"methodName":"","returnRes":"","stat":0}],"pom":"","realServerIp":"","realServerPort":"","serviceName":""}

 

参数描述:

类型

参数

描述

String

 pom

pom.xml字符串

String

 serviceName

部署服务名

String

 implClass

接口实现类

String

 intfCalss;

接口类例如:com.ITest

String 

realServerIp

真实服务ip

String 

realServerPort

真实服务端口

String 

methodName

方法名称

String 

returnRes

返回值

int

stat

mock状态 0关闭,1打开

 

建立接口返回结果:

{"errorCode":"0","ip":"","port":"","serviceName":""}

类型

参数

描述

String

errorCode

0成功,1失败,2服务被占用

String

serviceName

服务名称

String

ip

服务ip

String

port

服务端口

更新接口返回

[{"stat":true,"info":""}] 

类型

参数

描述

String

stat

true/false

String

info

失败方法信息

例子:

建立

请求以下:

http://stp.corp.com/createScfMock?jsonData=[{"serviceName":"test","realServerName":"phone","creater":"hhh","implClass":"PhoneRecordService","intfCalss":"com.phone.IPhoneRecord","methods":[{"methodName":"getRec","returnRes":"11","stat":0}],"pom":"<dependency><groupId>com.spat</groupId><artifactId>com.spat.phone</artifactId><version>1.2.23-SNAPSHOT</version></dependency>","realServerIp":"0.0.0.0","realServerPort":"21010"}]

 

返回结果:

[{"errorCode":2,"info":"","ip":"192.168.183.14","port":"19999","serviceName":"hhtest"}]

 

更新

请求以下:

http://stp.corp.com/updateScfMock?jsonData=[{"serviceName":"hhbtest","realServerName":"wphone","creater":"name","implClass":"WPhoneRecord","intfCalss":"com.spat.wphone.IPhoneRecord","methods":[{"methodName":"getRecordList","returnRes":"11","stat":0}],"pom":"<dependency><groupId>com.spat</groupId><artifactId>com.spat.phone</artifactId><version>1.2.23-SNAPSHOT</version></dependency>","realServerIp":"0.0.0.0","realServerPort":"21010"}]

 

返回结果:

[{"stat":true,"info":""}]  经过无方法信息,失败会返回方法名称

后记:

    一点点实践,但愿对你们有所启发!--------------------- 版权声明:本文为CSDN博主「hhb200766」的原创文章,遵循CC 4.0 by-sa版权协议,转载请附上原文出处连接及本声明。原文连接:https://blog.csdn.net/hhb200766/article/details/81389947

相关文章
相关标签/搜索