python+pytest介面自動化(1)-介面測試基礎
- 2022 年 3 月 2 日
- 筆記
- Python+Pytest介面自動化, 介面自動化
介面定義
一般我們所說的介面即API,那什麼又是API呢,百度給的定義如下:
API(Application Programming Interface,應用程式介面)是一些預先定義的介面(如函數、HTTP介面),或指軟體系統不同組成部分銜接的約定。用來提供應用程式與開發人員基於某軟體或硬體得以訪問的一組常式,而又無需訪問源碼,或理解內部工作機制的細節。
有點繞口,但我們看下定義裡面這些關鍵字:預先定義的介面 (如函數、HTTP介面)、基於軟體或硬體得以訪問、無需訪問源碼、無需理解內部工作機制,大概就明白了。
舉例說明:
-
電腦或手機上提供了各種物理硬體介面,如:USB介面、充電介面、耳機介面、麥克風介面等。這些不同的介面有不同的功能,比如通過USB介面插入U盤就可以拷貝數據,插入耳機介面可以聽音樂,我們無需關心這些介面的工作原理,只需通過這些介面滿足我們的使用需求即可。
-
在中國天氣網網上查詢某個城市天氣,輸入城市名稱,即可獲取對應城市的天氣。查詢背後的本質也是調用了網站後台介面來獲取數據,這裡的介面是Web服務軟體介面。用戶不需要關注數據在網站後台是怎麼查詢的,只需要得到返回結果即可。
介面分類
軟體介面分類的維度有很多,類型比較難以界定,也可能經常會被搞混淆。
以介面所使用的協議不同可做如下分類:
-
HTTP 介面,使用 HTTP 協議
-
Web Service 介面,使用 soap
-
WebSocket 介面,使用 TCP、UDP 協議
-
Dubbo 介面,使用 Dubbo 協議
當然,以使用協議不同進行分類其實也是不嚴謹的,例如 soap 協議也是基於 HTTP 協議的封裝,Dubbo 協議基於 TCP 協議,所以這個分類也僅供參考。
以介面設計風格不同可做如下分類:
-
RPC 類型介面,RPC 面向過程調用(Remote Procedure Call Protocol),主要是基於 TCP/IP 協議
-
REST 類型介面,REST 面向資源調用(Representational State Transfer),主要是基於 HTTP 協議
至於這兩種風格的具體內容,這裡不做過多說明,有興趣的同學可以自行查找資料。
常見介面
介面測試即對介面進行校驗性測試,測試工作過程中常遇到的介面有HTTP、Dubbo兩種,兩者對比如下 (理解有誤的話歡迎評論指正):
HTTP介面 | Dubbo介面 | |
---|---|---|
設計風格 | REST | RPC |
協議層區別 | 應用層協議 | 傳輸層協議 |
socket連接區別 | http1.1協議默認使用短連接,每次請求均需要進行三次握手(http2.0協議開始將默認socket連接改為了長連接) | 默認使用長連接,即首次訪問建立連接以後,後續網路請求使用相同的網路通道 |
應用區別 | 廣泛運用於客戶/伺服器模式中 | 阿里分散式服務框架Dubbo |
目前絕大部分公司的介面測試都是針對HTTP介面。
以登錄TesterHome網站為例,我們在網頁上輸入用戶名、密碼,點擊【登錄】按鈕後,網頁就會請求登錄介面 (該介面為HTTP介面) 向服務端發起登錄請求。
輸入錯誤的用戶名或錯誤,登錄介面(sign_in)就會返回錯誤,如下:
輸入正確的用戶名和密碼,登錄介面校驗通過,登錄成功且跳轉至首頁,如下:
通過示例,我們對客戶端跟服務端之間怎樣通過介面的形式進行數據的交互有個大致的印象。
測試分層
通常把軟體測試分為三層金字塔模型,由上至下依次為:UI測試、介面測試、單元測試。
就項目品質而言,金字塔的每一層都無法被替代,我們平常測試可能更多的是關注UI測試,但對於滿足滿足被測系統的品質而言這往往是不能夠的,除此之外還需要對介面進行測試 (單元測試一般由開發完成)。
介面測試的必要性及優勢如下:
-
比UI測試更接近底層,越早發現底層的問題,解決成本越低。
-
相對於UI測試而言,介面測試更容易發現後端隱藏的bug。
-
在前後端分離的設計模式下,容易繞過前端篡改或偽造數據進行介面請求,因此需要對介面的異常處理能力及安全性方面進行測試。
-
在並發的情況下,需要對介面的穩定性進行性能測試,否則容易造成系統問題。
-
相對於單元測試而言,介面測試更接近用戶使用場景,且投入成本更低。
-
相對於UI測試,介面測試可以進行維護成本更低、效率更高的自動化測試。
測試左移和右移
近些年測試行業越來越多地提及測試的左移與右移,它們的定義如下。
測試左移
測試左移 ,即讓測試介入開發提測之前的部分測試工作。比如,在架構設計階段或開發階段,測試人員就介入開始考慮產品的可測試性,並管理開發自測等。此外,測試可以更進一步擴展到需求評審階段,讓測試人員不僅僅是了解需求,還要評估需求的品質。
測試右移
測試右移,即讓測試介入應用上線後的部分工作。比如,產品上線過程中後上線後,測試人員可進行線上巡檢。此外,產品上線後,測試人員仍需要關注線上情況,發現問題需及時跟進,將影響降到最低。
測試的左移與右移是為了更好的把控項目的品質,而不管是左移還是右移,在實踐的過程中,對介面的品質關注仍然是重點。
總結
就當前軟體測試招聘的市場需求以及趨勢而言,介面測試是測試人員必須掌握的技能,而介面自動化測試則是加薪利器。
工作過程中更多的是對HTTP協議的介面做介面測試,後續部落格針對的也是HTTP類型的介面。