前言:前端
说到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