軟體介面測試工具篇_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雲端計算開發團隊。
掃描關注,瞭解更多