前言
最近好多小伙伴都在說接口自動化測試,那么究竟什么是接口自動化測試呢?讓我們一起往下看就知道了,首先我們得先弄清楚下面這個問題。
為什么要做(自動化)接口測試?
1、由于現在各個系統的復雜度不斷上升,導致傳統的測試方法成本上升且測試效率大幅下降,而接口測試相對于UI測試更加穩定,且相對容易實現自動化持續集成,可以減少人工回歸測試的時間成本,縮短測試周期。
2、接口測試可以更早的介入到項目開發中,一般只要接口定義好了,就可以寫代碼了。而功能測試必須要等系統提供可測的界面后才能進行。
3、相對于UI測試(某些測試環境搞起來賊麻煩)來說,接口測試可以更簡單全面地覆蓋到底層的代碼邏輯,從而發現一些隱藏bug。
4、從安全層面來說,現在大部分系統前后端框架是分離的,只依賴前端進行限制已經不能滿足系統的安全要求,需要后端同步進行控制,所以測試也需要從接口層面進行驗證。
5.越來越多的團隊開始接收DevOps所倡導的高度協同,研發、測試、運維及交付一體化的思維,對測試效能提出了更高的要求。
接口測試原理
模擬客戶端向服務器發送請求,服務器接收后進行處理并向客戶端返回應答,客戶端再接收應答的過程。
測試范圍
- 業務功能(包括正常、異常場景是否實現)
- 業務規則(覆蓋度是否全面)
- 參數驗證(邊界、業務規則是否達到要求)
- 異常場景(重復提交、并發提交、事務中斷、多機環境、大數據量測試)
- 性能測試(響應時間、吞吐量、并發數、資源要求)
- 安全測試(權限驗證、SQL注入等)
一、自動化測試框架規劃思路
1.選擇語言
- python
- java
自己擅長哪個選哪個,推薦python
2.編程工具選型
- pycharm
- vscode
自己擅長哪個選哪個
3.測試框架選型
- unittest ---python自帶的測試框架
- pytest ---unittest升級版,推薦
- httprunner
- rf框架 ---關鍵字
4.報告可視化方案選型
- htmltestrunner
- beautifulreport
- allure
5.持續集成方案
- jenkins
6.倉庫服務器選型
- github ---服務器在國外
- gitlab
- gitee
7.測試管理工具選型
- 禪道
- jira
接口自動化測試框架的搭建一般有兩種思路:
1.基于工具的
例如:Postman+Newman+Jenkins+Git/svn Jmeter+Ant+Jenkins+Git/svn
2.基于代碼的
例如:Python+Requests+Pytest+Allure
個人建議:如果是學習階段,選擇基于代碼的模式,通過自己一步一步的規劃項目、編寫代碼,可以更好的理解接口自動化的實現原理,之后再學習一些工具會更得心應手。
我這里選擇的是: Python+pycharm+pytest+allure+gitlab+jira
規劃好方案后就可以創建我們的項目代碼工程了(可以與編寫測試用例并行,需要提前約定好測試用例的格式,方便后續代碼設計)。
二、項目代碼工程構建思路
設計框架的原則:
- 封裝基類方法
對于一些較通用的方法,可以封裝,比如發送請求、增、刪、改、查。
- 高內聚低耦合
每個模塊盡可能獨立完成自己的功能,不依賴于模塊外部的代碼。
模塊與模塊之間接口的復雜程度盡量低,比如在類內部盡可能減少方法之間的調用,否則一個方法的變動會影響調用它的另一個方法。
- 腳本分離
業務代碼、測試數據應該相互剝離、靈活調用。理念類似初識PO模式并在Selenium中簡單實踐中的PO設計模式。代碼中應該不出現具體的數據、配置。而是調用對應的數據文件。
三、一個比較完善的項目代碼工程結構:
- common #包文件,公共模塊,存放一些通用方法- baseapi.py- class BaseApi()#基類- 方法1:發送請求- 方法2:增- 方法3:刪- 方法4:改- 方法5:查
- libs #包文件,存放業務層代碼- login.py #登陸模塊- class Login(BaseApi) #繼承基類里的BaseApi- 方法1:發送登陸請求- 方法2:發送登出請求- logout.py #登出模塊- class Logout(BaseApi)
- configs #包文件,存放配置- config.py- HOST='xxx'#用于切換測試環境- url='xxx'
- datas #文件夾,存放數據/測試用例- xxx.xls- xxx.yaml
- testCase #包文件,存放測試用例代碼,注意符合pytest命名規范- test_login.py- class Test_login- 方法1:test_login01- 方法2:test_login02- test_logout.py- - class Test_logout- 方法1:test_logout01- 方法2:test_logout02
- outFiles #文件夾,輸出文件- logs #存放log文件- report #存放報告- screenShot #存放截圖
- tools #包文件,工具類- handle_data.py - handle_excel.py- handle_path.py- handle_yaml.py
- docs #文件夾,存放說明類文檔- 代碼規范.doc- 需求文檔.doc
框架搭建:
四、后續代碼編寫思路:
框架寫好后的代碼編寫思路,大體上為
1.基類封裝,把一些常用的方法比如發送請求、增、刪、改、查放到我們的基類里。
2.編寫業務層的接口代碼
3.編寫測試用例代碼,過程中發現缺什么就去寫什么方法,思考這個方法應該放在具體業務內還是基類還是tools內,這個過程是對代碼不斷優化的過程。直到我們的用例代碼寫完。
- 比如,寫測試用例代碼過程中需要讀取yaml文件,就在tools內加一個get_yml_data的方法
- 再比如,兩個業務模塊之間需要關聯,需要A方法返回對象給B方法用,則去優化A方法,給出返回值。
- 再再比如,一些關鍵節點需要截圖,則去補充截圖的方法。
最后感謝每一個認真閱讀我文章的人,看著粉絲一路的上漲和關注,禮尚往來總是要有的,雖然不是什么很值錢的東西,如果你用得到的話可以直接拿走!?
軟件測試面試文檔
我們學習必然是為了找到高薪的工作,下面這些面試題是來自阿里、騰訊、字節等一線互聯網大廠最新的面試資料,并且有字節大佬給出了權威的解答,刷完這一套面試資料相信大家都能找到滿意的工作。