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

相關文章
相關標籤/搜索