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