若有任何學習問題,能夠添加做者微信:lockingfreehtml
Python接口測試實戰1(上)- 接口測試理論
Python接口測試實戰1(下)- 接口測試工具的使用
Python接口測試實戰2 - 使用Python發送請求
Python接口測試實戰3(上)- Python操做數據庫
Python接口測試實戰3(下)- unittest測試框架
Python接口測試實戰4(上) - 接口測試框架實戰
Python接口測試實戰4(下) - 框架完善:用例基類,用例標籤,從新運行上次失敗用例
Python接口測試實戰5(上) - Git及Jenkins持續集成
Python接口測試實戰5(下) - RESTful、Web Service及Mock Servergit
更多學習資料請加QQ羣: 822601020獲取程序員
這裏插播一個段子
上圖中,程序員口中提到的接口是什麼意思呢?
手機殼有沒有顏色這個屬性(功能)? --- 有
手機殼有沒有提供讓程序獲取它顏色的途徑? --- 沒有,這個途徑就是接口web
接口又稱API(Application Programming Interface,應用程序編程接口),是一些預先定義的函數,目的是提供應用程序與開發人員基於某軟件或硬件得以訪問一組例程的能力,而又無需訪問源碼,或理解內部工做機制的細節。算法
簡單歸納爲如下3點:數據庫
接口自述(通俗的來講):編程
舉個栗子
西虹市公考報名處 --- 接口名稱
報名地址: 西虹市街口區帶莫路3號 --- 接口地址
現場需填寫資料: 姓名,身份證證號碼,專業,報考崗位等等 --- 接口參數
驗證規則: --- 參數驗證規則json
軟件中的接口
api
軟件項目中,接口是系統與系統之間,模塊與模塊之間或者服務於服務之間相互調用的入口。
從開發者角度,接口是分工協做的產物,不一樣開發者實現本身的功能以後,封裝成接口,供其餘開發者調用。其餘開發者只要按規定格式發送一些必要參數,就能使用該功能
瀏覽器
常見接口類型
接口測試是測試系統組件間接口的一種測試。接口測試主要用於檢測外部系統與系統之間以及內部各個
子系統之間的交互點。測試的重點是要檢查數據的交換、傳遞和控制管理過程,以及系統間的相互邏輯依賴關係等。
爲何要作接口測試?
接口測試都測什麼?
接口測試通常有如下崗位實施:
接口測試點參考:
怎樣掌握接口測試?
接口測試重難點
就像每一個人都有一個身份證號碼
IP地址是IP協議提供的一種統一的地址格式,它爲互聯網上的每個網絡和每一臺主機分配一個邏輯地址
查看IP命令
Python練習:檢查字符串是否ip
def is_ip(ip): num_list = ip.split(".") for num in num_list: if not num.isdigit() or not 0 <= int(num) <=255: return False return True print(is_ip("101.1.0.201"))
使用map函數實現方法(參考)
def check_ipv4(str): ip = str.strip().split(".") return False if len(ip) != 4 or False in map(lambda x:True if x.isdigit() and 0<= int(x) <= 255 else False, ip) else True
"端口"是英文port的意譯,能夠認爲是設備與外界通信交流的出口。
若是把IP地址比做一間房子,端口就是出入這間房子的門。一個IP地址的端口能夠有65536(即:2^16)個
端口類型
常見軟件默認端口
查看端口命令
解決端口占用問題
因爲IP地址不容易記憶,爲IP地址賦予了一個利於記憶的別名,稱爲域名
如,百度的ip爲: 61.135.169.125,對應的域名爲 www.baidu.com
如何查看域名所對於的ip?
DNS
DNS即域名解析系統,域名和IP地址相互映射的一個分佈式數據庫,提供域名轉到對應ip的服務
OSI即開放系統互連參考模型,一種網絡架構,分爲7層。
OSI七層模型及各層協議
TCP和UDP都是傳輸層的協議
TCP和UDP的區別
參考:TCP和UDP協議的對比
HTTP:超文本傳輸協議,是用於從WWW服務器傳輸超文本到本地瀏覽器的傳輸協議。
HTTP協議是一種無狀態協議,主要包含請求和相應兩大部分:
請求是咱們發送給接口的數據對象,包含接口地址(URL),請求方法,參數,請求頭(Headers), Cookies, 數據等
真實抓包一個請求:
請求原始格式-GET(Raw格式:Fiddler抓包獲得)
GET https://www.sojson.com/open/api/weather/json.shtml?city=%E5%8C%97%E4%BA%AC HTTP/1.1 Host: www.sojson.com Connection: keep-alive Upgrade-Insecure-Requests: 1 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/68.0.3440.106 Safari/537.36 Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8 Accept-Encoding: gzip, deflate Accept-Language: zh-CN,zh;q=0.9,en-US;q=0.8,en;q=0.7 Cookie: __cfduid=dccd65c484a7657b468327b66023fefc41534934250; yjs_id=59d1c42afa817b578b4b562d1f72651f; ctrl_time=1
請求原始格式-POST請求(Raw格式:Fiddler抓包獲得)
POST http://openapi.tuling123.com/openapi/api/v2 HTTP/1.1 Content-Type: application/json cache-control: no-cache Postman-Token: 1a39439e-61c8-4e59-82a1-736a362c5962 User-Agent: PostmanRuntime/7.2.0 Accept: */* Host: openapi.tuling123.com accept-encoding: gzip, deflate content-length: 468 Connection: keep-alive { "reqType":0, "perception": { "inputText": { "text": "附近的酒店" }, "inputImage": { "url": "imageUrl" }, "selfInfo": { "location": { "city": "北京", "province": "北京", "street": "信息路" } } }, "userInfo": { "apiKey": "ec961279f453459b9248f0aeb6600bbe", "userId": "206379" } }
URL:統一資源定位符,接口的訪問地址(包含服務器地址+接口地址)
URL組成格式
協議\\: 服務器地址:端口號\資源路徑?參數1=值1&參數2=值2
如:https://www.sojson.com/open/api/weather/json.shtml?city=北京
注意:?號要使用英文?,不能使用中文?
URL編碼
URL編碼是一種瀏覽器用來打包請求參數及表單參數的格式, 參數和參數之間使用&分割,非ASCII碼使用%加16進制編碼替換
如:https://www.sojson.com/open/api/weather/json.shtml?city=北京
編碼後爲:https://www.sojson.com/open/api/weather/json.shtml?city=%E5%8C%97%E4%BA%AC
連接:URL編碼/解碼工具(http://tool.chinaz.com/Tools/urlencode.aspx)
序號 | 方法 | 描述 |
---|---|---|
1 | GET | 請求指定的頁面信息,並返回實體主體 |
2 | POST | 向指定資源提交數據進行處理請求(例如提交表單或者上傳文件)數據被包含在請求體中 |
3 | HEAD | 相似於get請求,只不過返回的響應中沒有具體的內容,用於獲取報頭 |
4 | PUT | 從客戶端向服務器傳送的數據取代指定的文檔的內容 |
5 | DELETE | 請求服務器刪除指定的頁面 |
6 | CONNECT | 預留給可以將鏈接改成管道方式的代理服務器 |
7 | OPTIONS | 容許客戶端查看服務器的性能 |
8 | TRACE | 回顯服務器收到的請求,主要用於測試或診斷 |
GET請求和POST請求的區別
如:https://www.sojson.com/open/api/weather/json.shtml?city=北京
city=北京
,向接口傳遞一個參數「city」,參數值爲「北京」常見Headers
請求數據類型(Content-Type)(重點)
數據編碼
指定請求數據編碼(解決中文亂碼):
請求Headers設置Content-Type: application/json; charset=utf-8
參考:Base64編碼及其做用
接口返回的信息,包含HTTP狀態碼,響應頭和相應信息
原始相應數據(Raw格式,Fiddler抓包)
HTTP/1.1 200 OK Date: Thu, 23 Aug 2018 06:32:26 GMT Transfer-Encoding: chunked Connection: keep-alive {"intent":{"actionName":"","code":10005,"intentName":"","parameters":{"lon":"","checkout_date":"2018-08-25","star":"0","city":"北京","days":"1","order":"","price_range":"","nearby_place":"酒店","brand":"","checkin_date":"2018-08-24","place":"信息路","lat":"","needgeo":"0"}},"results":[{"groupType":1,"resultType":"url","values":{"url":"http://m.elong.com/hotel/0101/nlist/#indate=2018-08-24&outdate=2018-08-25&keywords=%E4%BF%A1%E6%81%AF%E8%B7%AF"}},{"groupType":1,"resultType":"text","values":{"text":"親,已幫你找到相關酒店信息"}}]}
常見的響應格式
響應編碼:有時須要根據不一樣的編碼來正確解析響應內容
常見HTTP響應碼
HTTP協議傳輸的數據都是未加密的,HTTPS協議是由HTTP+SSL協議構建的可進行加密傳輸、身份認證的網絡協議,要比HTTP協議安全。
HTTPS和HTTP的區別
Cookie和Session的區別
常見的接口安全策略:
常見的加密算法
在接口數據傳輸過程當中常對一些敏感數據(如密碼)進行Base64編碼或MD5加密,以增長安全性。
加密算法分爲對稱式加密算法和非對稱式加密算法,對稱式加解密使用同一個祕鑰,非對稱式使用不一樣的祕鑰。
HTTP 緩存機制做是 web 性能優化的重要手段,當用戶第一次請求服務器資源時,服務器將資源緩存到客戶端本地,在必定時間內(緩存有效期內)當用戶再次向服務器請求一樣的資源時,能夠直接從緩存中讀取,而不用從服務器下載。
接口測試中緩存相關注意點
此爲北京龍騰育才 Python高級自動化(接口測試部分)授課筆記
課程介紹
想要參加現場(北京)/網絡課程的能夠聯繫做者微信:lockingfree
- 高效學習,快速掌握Python自動化全部領域技能
- 同步快速解決各類問題
- 配套實戰項目練習