摘要:即便是提供測試環境的外部系統,一般也僅在開發聯調階段配合提供聯調測試對接服務,一旦聯調測試結束,也不再繼續提供測試服務。
MOCK API 的定義
根據百度百科的定義,mock測試就是在測試過程中,對于某些不容易構造或者不容易獲取的對象,用一個虛擬的對象來創建以便測試的測試方法。這個虛擬的對象就是mock對象,mock對象就是真實對象在調試期間的代替品。
在瀑布流開發模式中,如果前端開發人員需要進行頁面對接,需要后端先完成API的開發工作,如果沒有mock,那么前后端開發的進度會互相影響。
通過 Mock API事先編寫好 API 的數據生成規則,由工具動態生成 API 的返回數據。開發人員通過訪問 Mock API 來獲得頁面所需要的數據,就可以輕松地完成對接工作。
MOCK API 能用來解決什么? 1.依賴的接口尚未開發完成在系統交互雙方定義好接口之后,我們可以提前進行開發和測試,并不依賴上游系統的開發實現。
2.自定義返回測試結果(比如 HttpservletRequet、JDBC 對象等)在測試時使用Mock,可以自由方便的構建配置接口對象的信息參數;
在測試過程中,需要第三方接口返回特定的數據以符合特定的測試場景,這種情況往往需要跨條線的溝通協調測試數據,成本高,效率低;利用Mock可以自定義返回測試結果,支持手動構造依賴接口的返回值。(這個功能將在后面重點提及)
3.自動化測試在自動化測試概念和發展要求下,自動化測試的規模也逐漸增大到一定程度;
大型業務系統下測試接口多,測試用例也日益增多,依賴環境的穩定就成為了自動化測試執行的關鍵所在;
自動化測試過程中,經常會因為依賴的第三方環境不穩定,導致測試執行失敗,長期以往的出現問題,導致測試人員對自動化的穩定運行失去維護的信心;
利用Mock技術,在測試過程中,只關注被測業務邏輯,mock掉依賴不相關的系統,這種情況下自動化測試運行失敗,就一定是被測系統本身的業務邏輯問題,而不是第三方系統、數據的問題;
4.更多場景,歡迎看客老爺補充。 應用場景示例(自定義返回結果)接下來我們從測試的層面舉個場景:
我所在的項目是企業管理咨詢,項目最經常需要的是根據企業詳情判斷返回不同的狀態。涉及到的數據其實很多,但是為了方便舉例,我計劃寫三個接口進行演示,第一個是登錄,第二個是獲取企業詳情,簡化了復雜的判斷,直接用判斷corpld(企業ID)來作為識別的憑證,第三個是設置企業狀態,有注銷和恢復兩種狀態。會根據企業的corpstatus進行判斷。接下來帶你一一設置:
登陸接口不必多講,我們直接到第二個接口,新建一個期望,請求觸發條件不寫,在返回數據這里添加corpstatus可能值為1或者2。
第三個接口是設置企業狀態(注銷/恢復),這里需要兩個請求參數,第一個是corpld企業ID,對應上個接口的corpld;第二個是corpstatus企業狀態,這里引用了全局變量,用兩對花括號表示。
還是進入mockapi新建期望,因為這里有兩個狀態(注銷/恢復),所以需要寫兩個期望。當請求參數corpstatus=4條件觸發時,返回參數content=注銷成功;當請求參數corpstatus=2條件觸發時,返回參數content=企業已恢復。
由于這三個接口都是應用在一個場景里面的,我們不妨用一個流程進行測試的,總共三個測試用例:
登陸
獲取企業詳情
設置企業狀態(注銷/恢復)
在測試前需要在第二個用例中要寫好一個響應預處理,通過Javascript代碼動態改變返回的結果,實現corpstatus=2或者4,從而對應上之前的全局變量。
然后就可以點擊進行測試。從測試記錄可以看到會根據corpstatus的不同返回了不同的信息。
這就是一個簡略完整的一個場景用例設計。那如果沒有mockapi的話,等著后端開發,corpstatus可能就拿不到,進度勢必會被影響,為了模擬數據測試,這時候mockapi的優勢就凸顯了。
下面再講一個使用mock自定義功能的項目場景:
之前所在公司子系統較多,我們為了減低集成和維護成本,采用了ESB的架構。ESB架構可以解決多個應用系統互聯所面臨的的復雜性。也是因為子系統較多導致整個業務系統的運轉比較復雜,其中便涉及到和多個外部系統的對接及數據交互,比如倉儲和物流,勢必會跟EMS、順豐等有數據交互。
當然,跟外部系統對接時系統間的聯調測試必不可少,有些外部系統提供測試環境,有些甚至不提供。即便是提供測試環境的外部系統,一般也僅在開發聯調階段配合提供聯調測試對接服務,一旦聯調測試結束,也不再繼續提供測試服務。
那么,當這些外部系統的聯調測試環境不可用時,我們就需模擬這些外部系統來和自己的系統進行數據交互,以便支持完整業務測試流程的正常進行。
再具體到API開發層面的話,就是開發的API經常遇到在URL一樣的情況下,需要根據請求頭或者請求體的不同,返回不同測試結果。以前沒用mockapi自定義的功能的話,解決的方式只有新建多個接口分別進行,十分麻煩。
舉個例子,在API文檔建立后,在進行測試時,我的要求是在URL一樣的情況下,根據不同的請求頭部返回不同結果。
1.當標簽頭部
Contest-type=application/json
Clientld=purchase.consemer
OperationCode= medicine.purchase.consemer.List
那么返回參數
Floor=2
Room=2
Cabinet=2
2.當標簽頭部
Contest-type=application/json1
Clientld=purchase.consemer1
OperationCode= medicine.purchase.consemer.List1
那么返回參數
Floor=3
Room=3
Cabinet=3
使用 eolinker 進行自定義 MOCK API?
eolinker 是一款接口管理工具,提供API管理、測試功能,本次我們使用它來進行 Mock API,官網地址:https://www.eolinker.com
1.先建立好文檔
2.建立期望進行測試
3.寫完后測試后返回的數據與我們的想要的一致
4.第二種情況類似,就不贅述了
本篇文章主要從測試層面和角度去介紹 MOCK API,算是我上篇文章內容的延伸,最近一直在研究API測試相關,下篇我會從開發的層面去介紹 MOCK API 的實際應用。希望對大家有所幫助。eolinker官網:https://www.eolinker.com
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/31318.html
摘要:其標準為前身是,提供強大的在線編輯功能,包括語法高亮錯誤提示自動完成實時預覽,并且支持用戶以格式撰寫導入導出轉換文檔。 團隊內部RestAPI開發采用設計驅動開發的模式,即使用API設計文檔解耦前端和后端的開發過程,雙方只在聯調與測試時耦合。在實際開發和與前端合作的過程中,受限于眾多因素的影響,開發效率還有進一步提高的空間。本文的目的是優化工具鏈支持,減少一部分重復和枯燥的勞動。 現狀...
摘要:前言最近一直在搗鼓畢設,準備做的是一個基于前后端開發的平臺,前期花了很多時間完成了功能模塊的交互。核心代碼就是這么一句。經過各種猜想和測試,發現是模擬有問題。其實用的最終核心思路還是一樣的。 前言 最近一直在搗鼓畢設,準備做的是一個基于前后端開發的Mock平臺,前期花了很多時間完成了功能模塊的交互。現在進度推到如何設計核心功能,也就是Mock數據的解析。 根據之前的需求設定加上一些思考...
摘要:前言最近一直在搗鼓畢設,準備做的是一個基于前后端開發的平臺,前期花了很多時間完成了功能模塊的交互。核心代碼就是這么一句。經過各種猜想和測試,發現是模擬有問題。其實用的最終核心思路還是一樣的。 前言 最近一直在搗鼓畢設,準備做的是一個基于前后端開發的Mock平臺,前期花了很多時間完成了功能模塊的交互。現在進度推到如何設計核心功能,也就是Mock數據的解析。 根據之前的需求設定加上一些思考...
摘要:前言最近一直在搗鼓畢設,準備做的是一個基于前后端開發的平臺,前期花了很多時間完成了功能模塊的交互。核心代碼就是這么一句。經過各種猜想和測試,發現是模擬有問題。其實用的最終核心思路還是一樣的。 前言 最近一直在搗鼓畢設,準備做的是一個基于前后端開發的Mock平臺,前期花了很多時間完成了功能模塊的交互。現在進度推到如何設計核心功能,也就是Mock數據的解析。 根據之前的需求設定加上一些思考...
閱讀 2078·2023-04-25 17:57
閱讀 1284·2021-11-24 09:39
閱讀 2482·2019-08-29 16:39
閱讀 3312·2019-08-29 13:44
閱讀 3117·2019-08-29 13:14
閱讀 2313·2019-08-26 11:36
閱讀 3810·2019-08-26 11:00
閱讀 948·2019-08-26 10:14