學習之淺談python如何做介面自動化
Pycharm功能:www.jetbrains.com/pycharm
Project檢視、程式碼結構檢視、圖形介面的除錯功能
程式碼導航、語法高亮、自動補齊、錯誤提示、自動修復、程式碼重構
主流開發框架的支援(Django)、整合版本控制(git,svn)、單元測試
python操作Mysql
mysqlclient庫
第三方開發的,Django推薦
文件:http://mysqlclient.readthedocs.io/
安裝:Pip install mysqlclient==1.3.12
獲取資料記錄:Fetchone, fetchmany, fetchall
如何實現python介面自動化測試
一、介面
抓包工具 fiddler charles
介面工具 postman jmeter
介面加密解密、介面鑑權
介面簽名、Dubbo Ws等
二、API自動化測試(介面測試):
一、什麼是介面:
介面:系統提供服務的一種形式、兩個事物互動點,基於某個協議,實現資料互動
1.一定是基於網路協議來傳輸的
2.下發請求,基於網路協議的傳輸,獲取到響應結果,形成最終的介面的互動
3.url相當於指定了需求訪問的介面
比如:
微信支付 內部介面(兩個不同的賬戶實現資料互動)
銀聯支付 第三方介面(微信系統與銀行系統實現資料互動)
介面測試意義:
1、儘早介入測試
2、前端進行驗證,後端還需要兩次測試
3、前端無法正常測試的介面測試才能更好的進行覆蓋測試
二、網路協議:
1.HTTP網路協議是目前業內最為主流的網路協議
http網路協議目前主流是1.1版本,是無狀態協議,意味著每一次的請求都是獨立的。通過鑑權機制來實現到資料的互動。鑑權包含:cookie/Session/Token
https就是http+SSL協議(獨立的安全證書)
2.tcp網路協議:通訊軟體。比如微信、QQ、線上客服等。
3.微服務RPC(remote procedure call),本質上外部的閘道器還是基於HTTP網路協議為主。內部的通訊結合各類實際業務,而設定不同的網路協議 進行互動
4.restful
大部分都還是基於HTTP網路協議進行通訊,而生成對應的restful的規範化格式
三、基於Python+Requests庫實現介面測試:
1.requests庫是適用於HTTP網路協議下的介面的測試通訊。
2.所有的介面測試,都是基於介面文件來實現的
3.業務是介面測試的核心。在所有介面開發測試之前,一定要懂業務。
4.所有的引數,應該如何傳遞都是基於設計來定義的。
很多時候在系統中,介面彼此之間是有互相互動和聯絡的。
三、requests框架
Requests是自動化測試框架之一,是python實現的最簡單易用的HTTP請求和傳送,屬 於python的第三方庫
python內庫 unittest logging os.... 不需要安裝
python第三方庫 jsonpath 需要安裝
本地安裝:pip install requests
四、自動化測試框架-------》自動化測試核心技能
1、熟悉掌握一門程式語言python java
2、常用自動化測試框架應用:三大平臺 Web + 介面 + app、原理+應用、設計理念
3、搭建落地自動化測試框架 web + 介面 + app 效率最大化
常用框架第二次開發、公共資料全域性配置、日誌收集、資料依賴、用例管理
4、落地自動化框架:(類似於工具postman jmeter):
易用性:不懂程式碼的人可以進行維護 填用例資料 配置資料 維護成本低
高效性:分散式整合 框架核心封裝設計
通用性:通用所有的專案
一、結合介面文件實現請求程式碼構建
1、專案介面文件解讀
2、規劃介面自動化測試流程
專案業務--介面文件--介面用例--python指令碼--pytest框架--除錯&執行--Allure報告--結果分析
excel用例
Yaml用例
json用例
介面的架構
- 業務層
- 用例層
- 資料層
- 執行層
- 裝置層 ---app自動化測試
- 配置層
- 日誌層
- 報告
3、構建介面請求python程式碼
===============================================================================
一、介面測試
介面測試是測試系統元件間介面的一種測試。介面測試主要用於檢測外部系統與系統之間以及內部各個子系統之間的互動點。測試的重點是要檢查資料的交換,傳遞和控制管理過程,以及系統間的相互邏輯依賴關係等
通俗一點就是輸入資料,返回資料,不同種類的介面應用層協議可能不一樣,傳輸的資料格式也可能不一樣。檢查業務邏輯是否滿足業務需求,校驗欄位是否正常你實際結果是否滿足預期。
介面就是前段和後端的一個橋樑,那前端的介面要如何展示出來呢,它需要通過介面從服務端去獲取。目前很多的專案都是前端和後端分離開發的,前端,後端開發完成,只需要做一個聯調就好了,前端沒有資料也能夠進行開發,我們只需要通過Mock就可以完成了。
1. 1 介面測試型別
主要包含三種測試:
Web介面測試
應用程式介面(API, application programming interface)測試
資料庫測試
測試API在不同條件下返回正確的響應或輸出。此輸出通常是以下三種之一:
通過或失敗狀態
資料或資訊
呼叫另一個API
1.2 如何開展介面測試
一般來說,我們開展介面測試的流程如下:
1.需求確定後,開發出API文件
2.拿到API文件,編寫介面測試用例
3.開發交付
4.實施介面測試
介面測試用例跟常規的功能測試用例基本一樣,可以從介面功能測試、介面業務測試、介面效能測試、介面安全測試等角度考慮
介面功能的關注點是:
1.介面每個引數輸入正確與錯誤
2.介面引數卻是
3.介面引數邊界值
4.介面引數型別
專案後端介面測試內容:
【介面測試】:業務功能測試、邊界分析測試、引數組合測試、異常情況測試、效能測試、安全測試
業務功能測試:正常場景、異常場景
邊界分析測試:業務規則邊界分析、輸入輸出引數邊界分析:【覆蓋所有的必選引數、組合可選引數、引數有|無|null、引數的順序|個數|型別、引數型別數值大小|輸入的數值的範圍、引數字串長短|Null-max-max+1、引數包含特殊字元】
異常情況測試:冪等(重複提交)、併發測試、事務測試、分散式測試、環境異常、大數量測試:【同時處理大批量資料的測試、DB資料量很大時,測試DB操作】
效能測試:響應時間、吞吐量、併發數、伺服器資源使用率:【CPU、記憶體、IO、Network】
安全測試:批量抽獎、SQL注入、敏感資訊是否加密:【前後端資料傳輸是否加密、日誌資訊是否加密】
【APP測試】:基本功能測試、邊界分析測試、儲存測試(儲存空間的讀寫)、效能測試、穩定性測試、相容性測試、中斷測試、互動測試、UI測試
存儲測試:螢幕旋轉、連貫載入頁面、開多個視窗、應用互相呼叫、多執行緒下載
效能測試:響應時間:【安裝、啟動、跳轉】、記憶體、cpu、gpu、fps、電量、流量、溫度
相容性測試:網路:(2G、3G、4G、wifi、斷網、弱網)解析度、機型、平臺
1.3 Python做介面自動化測試
使用python做介面自動化測試是非常簡單的,python入門非常簡單,通過短時間的學習後,就可以開展自動化測試了,但需要掌握如下知識:
理解HTTP
學會使用Fiddler
熟悉python基礎,python資料型別、函式、模組、類
Mock服務
熟悉常用的python模組,如requests、json、configobj、pyyaml等
熟悉python單元測試框架,如unittest、pytest、nose等
熟悉python操作資料庫的方法
二、持續整合
每天開啟專案跑測試,那將會非常的麻煩,解決的辦法就是持續整合Jenkins,點一下構建,自動完成測試,每天都能看到自己專案的質量情況、質量報告
對介面測試而言,持續整合自動化是核心內容,通過持自動化的手段我們才能做到低成本高收益。目前我們已經實現了介面自動化,主要應用於迴歸階段,後續還需要加強自動化的程度,包括但不限於下面的內容:
a) 流程方面:在迴歸階段加強介面異常場景的覆蓋度,並逐步向系統測試,冒煙測試階段延伸,最終達到全流程自動化。
b) 結果展示:更加豐富的結果展示、趨勢分析,質量統計和分析等
c) 問題定位:報錯資訊、日誌更精準,方便問題復現與定位。
d) 結果校驗:加強自動化校驗能力,如資料庫資訊校驗。
e) 程式碼覆蓋率:不斷嘗試由目前的黑盒向白盒下探,提高程式碼覆蓋率。
f) 效能需求:完善效能測試體系,通過自動化的手段監控介面效能指標是否正常。
三、介面測試質量評估標準
a) 業務功能覆蓋是否完整
b) 業務規則覆蓋是否完整
c) 引數驗證是否達到要求(邊界、業務規則)
d) 介面異常場景覆蓋是否完整
e) 介面覆蓋率是否達到要求
f) 程式碼覆蓋率是否達到要求
g) 效能指標是否滿足要求
h) 安全指標是否滿足要求