HTTP協議4.14
API自動化測試
介面測試又稱API測試,是軟體的一種測試模式,它包含兩個維度,在俠義的角度上指的是對對應用程式介面的功能進行測試,在廣義的維度上是指整合測試中,通過呼叫API測試整體的功能來完成度,可靠性,安全性和效能
金字塔模型
測試工作可以分為兩個維度:
1、質量管理
2、測試效率
質量管理:指的是能夠積極的尋求推動問題解決方案和持續改進質量提升,
測試效率:可以說通過技術手段來提升研發效率從而進一步來提升測試效率
進入工作中 ,一天上班 首先就需要開早會,早會中我們需要對做以下問題:
1、昨天干了什麼
2、今天準備幹什麼
3、存在什麼問題(昨天工作中存在的問題,今天工作需要哪些人員配合下)
ui層:功能測試-- ui自動化
service 層:介面測試 2個服務之間整合後的測試 又稱API
unit層:單元測試 經常用於白盒測試 這個對技術的要去度非常的高
金子塔的理解:
越底層的應該投入大量的精力去做,越上層的投入少量的精力去做
有很多主流的測試⼯具都可以做接⼝測試,如PostMan,JMeter,SoupUi等,除了⼯具還有在Python語⾔中很多 的第三⽅的庫都是可以來做接⼝測試的,如:urllib,requests,aiohttp等
方法論:
1、類比---在不同的事務中找到共同點
2、科學方法論
這個裡面有一個很大問題的解決思路:
a、把它拆分成小的問題
b、逐步解決每個小問題
介面測試
1、協議---介面測試本質
2、主流工具---通過工具怎麼做這個事情
3、程式碼框架
4、MockServer
HTTP協議;
HTTP協議,也可以稱呼為超文字傳輸協議 它的預設埠是8.0,目前使用的版本是HTTP/1.1,最新的版本是HTTP/2.0,
HTTP/2.0版本使用:在分散式架構以及微服務架構中,基於新一代的架構設計有了gRPC的協議,它就是基於HTTP/2.0的版 本來進⾏設計的。
gRPC的協議:應用在網際網路金融的領域
TCP/IP協議按層次主要為:應用層,傳輸層,網路層,資料鏈路層。
協議---雙方共同遵循的一套標準
應⽤層決定了向⽤戶提供應⽤服務時通訊的活動。⽽HTTP的協議和gRPC的協議就是屬於應⽤層的協議
傳輸層 應⽤層的下層是⽹絡傳輸層,提供處於⽹絡連線中的兩臺計算機之間的資料傳輸。
⽹絡層 主要是⽤來處理⽹絡上流動的資料包,所謂資料包就是⽹絡傳輸中的最⼩單位,在該層協議中,規範了通過怎樣的 路徑到達⽬標計算機,並且把資料包傳送給對⽅
網路層的目的:
1、保障資料傳輸
2、知道資料傳輸的目的地
鏈路層 主要是處理連線⽹絡的硬體部分,如作業系統,硬體裝置的驅動等
三次握⼿
為了確保把資料能夠送到⽬標的伺服器,TCP協議內部使⽤了三次握⼿的策略機制,也就是說在TCP協議中,TCP 把資料包送去後,TCP會進⾏確認對⽅是否收到,或者是確認是否成功送達,那麼三次握⼿主要使⽤了TCP的標 志,具體為:SYN和ACK。⾸先Client端傳送連線請求報⽂,Server段接受連線後回覆ACK報⽂,併為這次連線分配 資源。Client端接收到ACK報⽂後也向Server段傳送ACK報⽂,並分配資源,這樣TCP連線就建⽴了。總結三次握⼿ 具體為:
第⼀次握⼿:起初兩端都處於CLOSED關閉狀態,Client將標誌位SYN置為1,隨機產⽣⼀個值seq=x,並將該 資料包傳送給Server,Client進⼊SYN-SENT狀態,等待Server確認;
第⼆次握⼿:Server收到資料包後由標誌位SYN=1得知Client請求建⽴連線,Server將標誌位SYN和ACK都置 為1,ack=x+1,隨機產⽣⼀個值seq=y,並將該資料包傳送給Client以確認連線請求,Server進⼊SYN-RCVD 狀態,此時作業系統為該TCP連線分配TCP快取和變數;
第三次握⼿:Client收到確認後,檢查ack是否為x+1,ACK是否為1,如果正確則將標誌位ACK置為1, ack=y+1,並且此時作業系統為該TCP連線分配TCP快取和變數,並將該資料包傳送給Server,Server檢查ack 是否為y+1,ACK是否為1,如果正確則連線建⽴成功,Client和Server進⼊ESTABLISHED狀態,完成三次握 ⼿,隨後Client和Server就可以開始傳輸資料
3次握手的目的:
保障資料傳輸的安全性和可用性
URI可以稱為統⼀資源識別符號
在微服務的架構模式下,使⽤的也是輕量級的 通訊模式(REST API),在微服務的架構模式中,需要清楚的是它的通訊可以分為同步通訊模式和非同步通訊模式
http請求流程
1、客戶端與服務端之間建立TCP的連線請求
2、客戶端傳送Request請求到服務端
3、服務端Response響應回覆客戶端的請求
4、客戶端與服務端之間關閉TCP的連線請求
持久連線:connection:keep-alive