從零到一落地接口自動化測試

前段時間寫了一系列自動化測試相關的文章,當然更多的是方法和解決問題的思路角度去闡述我的一些觀點。

昨天花了幾個小時看完了陳磊老師的《接口測試入門課》,有一些新的收穫,結合我自己實踐自動化測試的一些經驗以及個人理解,這篇文章來聊聊新手如何從零到一落地實踐接口自動化測試。

 

爲什麼要做接口測試

測試理念的演變

早些時候,軟件研發交付流程大多遵循V型或W型的瀑布模式,這種模式下只有開發編碼完成纔會提測進入測試驗證階段。這個階段測試同學做的大多是基於業務流程和頁面的功能測試工作,也就是我們自嘲的“點工”。

近幾年隨着業務迭代速度加快,以及測試行業的不斷髮展,像測試左移、敏捷測試等理念開始被更多的人認可。從軟件工程的角度來說,越早介入發現問題和風險,修復的成本越低,最終交付的質量也越高。

前幾年自動化測試最火爆的時候,很多同學應該都知道測試金字塔模型。見下圖:

按照某些理論或者大廠的最佳實踐,UI:API:UNIT層的自動化測試佔比應該是1:2:7,原因如下:

  • UI:維護成本高,介入時間較晚,收益最小;
  • API:維護成本適中,可以儘早介入,覆蓋的場景也較多;
  • UNIT:維護成本最小,可以更早介入,測試粒度最小,收益最高(至於誰來寫單元測試,當然是開發啊);

技術要求的提升

國內大部分測試同學在技術上來說相比於開發,是要弱上不少的。

爲了不斷提升軟件系統的交付質量,需要儘可能的擴大測試覆蓋的場景和測試的深入程度,這對測試同學的技術有了更高的要求。

隨着系統複雜度提升,同時像微服務、雲原生、server mesh等新技術的應用,爲了瞭解被測對象以便更好的開展工作,測試這個崗位的技術要求也越來越高。

從一開始的UI層面的測試,開始不斷向下探,API層的測試在日常工作中的佔比越來越高也是演進的一個必然趨勢。API測試還有2個特性:

  • 相比於UI層測試可以更早介入,向上可以不斷加大UI層的覆蓋廣度;
  • 相比於UNIT層測試難度更低點,向下可以逐漸覆蓋一些公共接口的單元測試;

既提升了技術逼格,又能做產出KPI,同時還提升了軟件的交付質量,一箭三雕,贏麻了。

 

理解接口和接口測試

如何理解接口?

簡單來說,接口就是一箇中介,負責界面層的業務場景和代碼層的實現邏輯交互轉化。

接口遵循一定的規則和約束,輸入特定的數據會返回特定的數據,輸入和輸出的邏輯需要事先約定。

接口之間互相調用也需要遵循一定的規則,這個規則就是網絡協議,如:http協議、tcp協議,rpc協議。

如何理解接口測試?

接口測試就是對約定好的輸入輸出邏輯進行測試和校驗,和功能測試一樣也需要設計測試用例。

設計測試用例的方法和功能測試沒太多區別,同樣需要考慮等價類邊界值判定表法以及異常場景。

當然,接口測試還需要考慮性能、安全等因素,不過這就是其他細分測試領域了,這裏暫且不表。

如何學習接口測試?

學習接口測試的大前提是瞭解不同類型的接口結構是怎樣的,因此網絡協議是必學項。相關書籍如下:

  • 入門瞭解:《圖解HTTP》、《圖解TCP/IP》
  • 深入學習:《HTTP權威指南》、《TCP/IP權威指南》

瞭解接口的結構後,還需要學習一些接口測試相關的工具,業內常用的工具如下:

  • 抓包工具:Fiddler、Charles
  • 測試工具:Jmeter、Postman
  • 接口生成管理工具:Yapi、Swagger

UI/API/UNIT測試的區別

UI、API、UNIT測試有各自不同的特點,概括總結的話區別如下:

  • UI測試:業務流程測試;
  • API測試:業務數據流測試;
  • UNIT測試:業務實現邏輯測試;

 

如何落地接口自動化測試

在討論新手從零到一落地接口自動化測試之前,我想先拋出我的幾點建議:

  • 從零開始,不要直接去學習所謂的自動化框架;
  • 學習框架之前,很有必要學習網絡協議和編碼知識;

爲什麼這麼說?新手一般技術基礎不太紮實,且沒有太多編碼實踐,直接學習框架特別容易一步一個坑。

見過太多新手直接學框架,出現了諸如安裝失敗,報錯看不懂,不會調試等等很多現象。還有部分同學對代碼編輯器不會用,看不懂日誌,不會封裝等問題。

從零開始學習落地接口自動化,或者說其他自動化測試,我更建議從易到難的去落地實踐,這樣一方面可以在日常工作中優先保證工作的完成,提升工作效率;

另一方面就像打怪升級一樣,從易到難去學習提升自己,並不斷優化自動化測試在工作中的實踐。

從一到難落地實踐接口自動化測試,大概可以遵循如下幾個步驟:

  • 學會用工具進行接口測試(如jmeter/postman);
  • 學會用持續集成工具(如jenkins)將接口測試腳本批量執行;
  • 學會諸如git/gitlab等版本和源代碼管理的工具,便於團隊多人協作;
  • 學習一門編程語言,利用自動化測試框架將工具腳本轉化爲代碼腳本;
  • 學習將公共部分封裝,優化代碼結構,提高寫代碼腳本的效率,降低維護成本;
  • 學習數據參數化管理的方法,可以從Excel——配置文件——數據庫——造數工廠這個方向迭代;
  • 嘗試按照業務線和測試場景區分腳本集合,然後引入mock,降低服務間的調用依賴,提高執行效率;
  • 開始畫大餅,造輪子,搞KPI,開發自動化測試平臺;

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章