1. 程式人生 > >軟體介面測試工具篇_Kubernetes中文社群

軟體介面測試工具篇_Kubernetes中文社群

軟體介面測試工具篇

 – Python requests – 

在軟體測試領域中,如果按照軟體研發週期維度給測試分類的話,整合測試是一種重要的測試手段,它在單元測試和系統測試之間能夠起到橋樑的作用,而介面測試又恰恰是整合測試能夠抽象而且可執行的一個分支,介面測試是驗證系統元件間的介面耦合互動,檢測外部系統與系統之間以及內部各個子系統之間的互動點。測試的重點是要檢查資料間的交換,傳遞和控制管理過 程,以及系統間的相互邏輯依關係等CBA時代軟體的複雜度更是呈幾何級增長和聚合,由此給BUG的滋生提供了肥沃的土壤,這也是介面測試的意義所在。

關於軟體測試更多理論知識我們在另一個篇幅中分享介紹,今天主要和大家分享Python語言中requests庫在介面測試中的使用。

介面測試工具眾多,比如大名鼎鼎的SoapUI,Apache旗下效能與介面集一身的Jmeter、Chrome瀏覽器Postman外掛等等,都可以完成介面型別測試,各有優點,孰輕孰重可以根據專案需求和軟體整合介面協議來適配選擇。本篇主要給大家推薦的是基於Python語言的requests庫,requests採用Apache2 Licensed開源協議的HTTP庫,requests不僅簡潔易用,而且維護文件詳實,社群版本支援力度活躍,用Python做介面測試requests是推薦的選擇,同時requests可以和python下的單元測試框架unittest整合,完美實現介面測試自動化,測試結束後,通過HTMLTestRunner生成測試報告,smtplib郵件傳送結果。

下面以優雲數智PaaS產品線Solar元件的介面自動化測試框架SRAT為例分享requests的使用:

一、測試環境的準備如下:

          軟體                      版本
作業系統 Windows7
Eclipse Oxygen.1a Release (4.7.1a)
Pydev 6.4.0
Python 3.6.3
requests 2.18.4
unittest 2.1
HTMLTestRunner 0.8.2
備註:

1、Python目前分兩個版本Python2x和Python3x,requests完全支援Python3x。

2、requests、unittest安裝通過pip3 install  xxx 安裝即可。

3、HTMLTestRunner直接放到Python的Lib目錄下就可以了。

二、SRAT介面自動化

  • Public.py將Solar元件的每個大功能封裝成為一個類,同時在類下面每一個介面定義為一個方法,然後通過requests實現介面協議封裝的好的部分,在Case*.py測試用例時直接使用該公共類抽象出的物件就可以了,這樣做到全域性複用。
  • Case *.py是將每個大類下面的具體介面編寫測試用例,在測試用例裡面來實現每一個測試介面所要的測試內容,每一條測試Case最後用到unitest來斷言測試結果和預期結果,作為在測試報告中標註測試是否通過。
  • Report.py是執行自動化測試的入口,裡面HTMLTestRunner定義了測試報告生成、smtplib郵件傳送兩大塊內容。
  • report資料夾用來存放每次執行介面自動化測試生成的報告。
  • config.ini配置檔案可以用來配置郵件的相關資訊,例如傳送接收人,郵件伺服器資訊等。

三、SRAT介面自動化測試公共類Public.py實現(以User API為例):

User業務功能中總共包括8個介面,分別實現不同的和使用者相關功能,將User封裝為類Class UserAPI,然後在UserAPI Class中分別對每一個介面功能定義一個方法例項,準備給對應的介面測試用例來呼叫,這樣比較邏輯清晰,易於修改和複用,下面是實現程式碼。

四、SRAT介面自動化測試用例類Case*.py實現(以CaseUser為例):

在User API裡面定義好公共類後,在CaseUser就需要使用公共類定義好的方法了,CaseUser裡面繼承了Python單元測試框架unittest的方法(關於unittest實現原理類似於java裡面的junit,大家可以自行查詢資料,比較好理解),測試結果和預期結果通過斷言assert來比較,SRAT主要是判斷介面請求後response返回的狀態碼和返回狀態資訊來斷言。然後將所有的測試用例組織到測試套件unittest.TestSuite()自動化完成測試用例的執行,執行完所有的測試用例後用HTMLTestRunner.HTMLTestRunner()生成測試報告,程式碼如下。

五、SRAT介面自動化Report測試執行及報告發送:

測試公共類Public和測試用例Case*編寫完成後,就可以進入測試執行環節,分兩部分:一部分是測試執行環節,unittest.defaultTestLoader.discover()用來執行測試用例部分,自動呼叫Case*.py,Case*.py繼續再呼叫Public對應實現方法,測試用例執行完畢後,呼叫send_mail()方法傳送測試測試報告,整個介面測試過程就完畢了,實現程式碼如下。

測試執行完畢後在Eclipse控制檯顯示的測試。

六、SRAT介面自動化郵件報告檢視:

下面是SRAT介面自動化測試完成HTMLTestRunner生成報告後傳送給相關人員,開啟可以檢視本次介面測試執行情況,包括測試用例的通過率、通過、錯誤、失敗、所有,對每一個用例集下的測試用例有詳細的統計,失敗或錯誤了的原因,如下測試報告展示。

總結上面SRAT實現介面自動化測試分享了Python requests使用,從測試角度講,關鍵部分是測試框架搭建和測試用例的編寫,本次SRAT是首先將介面公共部分封裝類後,然後再在測試用例呼叫實現公共的方法去測試對應介面,其實,這個測試還需要有一定的Python程式碼基礎,如果從黑盒子角度可以將測試框架和測試用例完全解耦分離,測試用例用excel或YAML檔案來實現測試用例就更好了,期待後面改進一版。

上面有不妥之前敬請和我聯絡,一起交流溝通,謝謝!後面有機會和大家一起分享測試基礎理論、測試工具集合、儲存測試入門、大資料效能測試等內容。

requests官方參考文件:

http://docs.python-requests.org/zh_CN/latest/user/quickstart.html

http://www.python-requests.org/en/master/

https://pypi.org/project/requests/

優雲數智介紹

優雲數智(上海優銘雲端計算有限公司)是一家專注於提供企業級私有云產品與解決方案的雲端計算廠商,提供PaaS+IaaS的一站式解決方案。優雲數智的母公司是中國中立的公有云服務商UCloud。私有云技術來源於全球頂尖的OpenStack、Ceph、Kubernetes雲端計算開發團隊。

掃描關注,瞭解更多