《王者榮耀》新賽季爆料:風暴先鋒上線,還有全新玲瓏奪寶
ip地址
IP協議提供的一種統一的地址格式,ip地址是標識網路中唯一的一臺裝置
ip地址的表現形式
IPV4:以點分隔十進位制資料
IPV6:以冒號分隔十六進位制資料
檢視電腦的網絡卡資訊
windows使用:ipconfig
mac / linux使用:ifconfig、ip addr
本機ip地址
127.0.0.1本機域名: localhost
IP地址的作用
通過ip地址能夠在網路中找到對應的網路裝置。
埠
埠是傳輸資料的通道,好比教室的門,是資料傳輸的必經之路。
每一個埠都會有一個對應的埠號,好比每個教室的門都有一個門牌號,想要找到埠通過埠號即可。
埠號
就是對埠進行了編號,用來區分和管理不同埠的,通過埠號能找到唯的一個埠。好比門牌號,其實就是一個數字。
資料通訊的流程:通過ip地址找到對應的裝置,通過埠號找到對應的埠,然後通過埠把資料傳輸給應用程式。
埠號總共有65536個。
埠和埠號的關係
埠號可以標識唯一的一個埠。
ip+埠號通訊流程
1、通過ip地址能夠找到網路中對應的裝置
2、通過埠號能夠找到對應的埠,通過該埠給對應的程式傳送資料。
說明:通過埠號就是用來查詢對應執行的應用程式的。
埠號的分類
知名埠(Well-Known Ports)
知名埠即眾所周知的埠號,範圍從0到1023,這些埠號一般固定分配給一些服務。比如21埠分配給FTP服務,25埠分配給SMTP(簡單郵件傳輸協議)服務,80埠分配給HTTP服務,135埠分配給RPC(遠端過程呼叫)服務等等。
動態埠(Dynamic Ports)
動態埠的範圍從1024到65535,一般程式設計師開發應用程式使用的埠號。比如1024埠就是分配給第一個向系統發出申請的程式。在關閉程式程序後,就會釋放所佔用的埠號。
說明:程式執行結束埠號就會被釋放掉
tcp傳輸協議
tcp是傳輸控制協議,它是面向連線、可靠、基於位元組流的傳輸協議,能夠保證資料是可靠的,不會導致資料錯亂和丟失。
提示:想要保證資料按照指定規則進行傳輸,必須要選擇某種傳輸協議,比如: tcp、udp
tcp的通訊流程
1.建立連線
2.資料通訊
3.關閉連線
tcp的特點
面向連線:在資料通訊之間先建立好連線,當資料通訊完畢,則斷開連線
可靠的:
1.錯誤校驗
2.應答機制
3.超時重傳
4.流量控制和阻塞管理
tcp的使用場景
要求的是資料必須可靠,比如:下載檔案,瀏覽網頁等都是基於tcp傳輸協議的。
udp傳輸協議
它是一種不面向連線,不能保證資料可靠性的傳輸協議,但是傳輸速度比tcp要快。
udp的使用場景
比如:傳送廣播、收音機、視訊傳輸等都是基於udp來完成的。
http協議
是一個超文字傳輸協議,它是基於tcp協議來進行資料傳輸的,目前http協議可以傳送和接收任意型別的資料,原來主要用於網頁資料的傳輸
http協議作用
規定了瀏覽器和web伺服器傳輸資料的格式
劉覽器必須要傳送http請求報文資料
web伺服器必須要傳送http響應報文資料。
https協議
https是對http協議進行資料加密的,也就是說http協議是明文傳輸的,https協議是加密傳輸的,能夠保證資料的安全性。
https進行資料加密是通過SSL(安全套接字層)進行加密的。
http和https的對比
1.安全性不同
http是明文傳輸的
https是基於http進行加密傳輸的,https的安全性更高
2.埠號不同
http預設使用埠號:80
https預設使用埠號:443
3.https這個協議需要購買CA證書
4.傳輸速度不同
http由於在傳輸資料的時候不需要加密,則傳輸速度比https要快。
https由於在傳輸資料的時候需要加密,則傳輸速度沒有http快,但是資料更加安全。
使用谷歌瀏覽器的開發者工具檢視http協議的通訊過程
1、開啟谷歌瀏覽器
2、在空白地方右擊選擇檢查
3、選擇Network頁籤
4、輸入想要訪問網址
network裡面的每一條記錄都是請求+響應的一次過程
主要的頁籤:
request headers:請求頭資訊
response headers:響應頭資訊
response:響應體資訊, web伺服器給瀏覽器的資料。
開發者工具的標籤選項說明:
元素(Elements) :用於檢視或修改HTML標籤;
網路(Network) :檢視http協議的通訊過程
http請求報文
get請求報文
post請求報文
get請求報文
1、請求行
get請求方法 請求的資源路徑 協議版本,比如: GET /HTTP/1.1
2、請求頭
host:請求主機地址
accept:告訴web伺服器客戶端接受資料的型別
user-agent:告訴伺服器客戶端的名稱
cookie: pgv_pvi=1246921728; 登入使用者的身份標識
3、空行
get原始報文
-- 請求行
GET / HTTP/1.1\r\n
-- 請求頭
Host: www.baidu.com\r\n
Connection: keep-alive\r\n
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36\r\n
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9\r\n
Cookie: BIDUPSID=8004359AF4B9299670C277F85B3786E3; \r\n
-- 自定義請求頭
token:xxx\r\n
-- 空行
\r\n (請求頭資訊後面還有一個單獨的‘\r\n’不能省略)
如果不使用瀏覽器傳送請求資料,則必須把全部請求報文資料傳送給後臺程式,比如:使用Python程式傳送請求資料,如果使用瀏覽器的話則不需要自己傳送請求報文資料,瀏覽器已經幫你封裝完畢了。
提示:每項資料之間使用\r\n進行分割,http協議中規定的。
post請求
1、請求行
post請求方法 請求資源路徑 協議版本,比如: post N2/api/?login HTTP/1.1
2、請求頭
host
user-agent
content-type:表示請求引數的型別(form表單, json資料),主要是是請求體的引數
3、空行
4、請求體
post原始報文
-- 請求行
POST /v2/api/?login HTTP/1.1\r\n
-- 請求頭
Host: passport.baidu.com\r\n
Connection: keep-alive\r\n
Origin: https://www.baidu.com\r\n
Content-Type: application/x-www-form-urlencoded\r\n
User-Agent: Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.198 Safari/537.36\r\n
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9\r\n
Cookie: BIDUPSID=8004359AF4B9299670C277F85B3786E3; \r\n
-- 空行
\r\n (請求頭資訊後面還有一個單獨的‘\r\n’不能省略)
-- 請求體
username=lyang&pass=123456\r\n
get和post報文格式的對比
get請求:請求行、請求頭、空行
post請求:請求行、請求頭、空行、請求體
http響應報文組成
1、響應行
http協議版本 狀態碼 狀態描述,比如: HTTP/1.1 200 OK
2、響應頭
Server:伺服器名字
Data:伺服器處理時間
Content-Type:伺服器告訴客戶端內容的型別,比如:Content-Type: text/html;charset=utf-8
3、空行
4、響應體
客戶端使用的資料在響應體裡面,比如:返回的html資料或者json資料
http響應報文
-- 響應行/狀態行
HTTP/1.1 200 OK # HTTP協議版本 狀態碼 狀態描述
-- 響應頭
Connection: keep-alive # 和客戶端保持長連線
Content-Type: text/html;charset=utf-8 # 內容型別
Date: Sun, 27 Jun 2021 10:52:40 GMT # 伺服器的響應時間
Transfer-Encoding: chunked # 傳送給客戶端內容不確定內容長度,傳送結束的標記是\r\n,Content-Length表示服務端確定傳送給客戶端的內容大小,但二者只能用其一
Server: BWS # 伺服器名稱
-- 空行
\r\n
-- 響應體
<!DOCTYPE html><html lang=“en”> … </html> # 響應給客戶端的資料
http常見的狀態碼
- 200 表示請求成功
- 307 表示重定向
- 400 表示請求引數有問題
- 404 表示請求資源伺服器不存在
- 500 表示伺服器內部程式碼問題
http狀態碼的分類
- 1xx: 表示請求已經收到,可以繼續再發送請求
- 2xx: 表示操作成功
- 3xx: 表示重定向
- 4xx: 表示客戶端錯誤
- 5xx: 表示服務端程式錯誤
響應報文中的Content-Type
Content-Type 表示告訴客戶端內容型別
- 表現形式
- text/html 表示伺服器給客戶端是網頁或者文字資料, 完整格式: Content-Type: text/html
- application/json 表示伺服器給客戶端是json資料,完整格式: Content-Type: application/json
請求報文中的Content-Type
在post請求報文中,會有Content-Type,Content-Type 表示告訴服務端內容型別
- 表現形式
- application/x-www-form-urlencoded 表示以表單形式提交資料給web伺服器端, 具體格式:Content-Type: application/x-www-form-urlencoded
- application/json 表示以json格式的資料提交給web伺服器端, 具體格式: Content-Type: application/json
Content-Type 最常見的資料格式
web伺服器給客戶端資料的時候使用的Content-Type
- text/html 一般伺服器響應給客戶端網頁資料的時候會使用該格式
- image/jpeg 一般伺服器響應給客戶端是jpeg格式圖片的時候會使用該格式
- image/png 一般伺服器響應給客戶端是png格式圖片的時候會使用該格式
- application/json 一般伺服器響應給客戶端是json資料的時候會使用該格式
客戶端web伺服器資料的時候使用的Content-Type
- application/json 表示客戶端以json形式提交資料給web伺服器
- application/x-www-form-urlencoded : 表示客戶端以form表單形式提交資料給web伺服器
- multipart/form-data 表示客戶端上傳檔案資料給web伺服器使用該格式
http的請求方法
- get 獲取伺服器資料
- post 向伺服器提交資料
- head 獲取響應頭資訊
- put 修改資料
- delete 刪除資料
get請求方法
-
get請求表示獲取伺服器的資料,本質是 “得” 資料
-
請求引數的表現形式
-
http://www.baidu.com?引數名1=值1&引數名2=值2, 比如: http://www.baidu.com?username=zhangsan&password=zhang
- 提示: url中不能出現中文或者空格,如果有中文或者空格需要進行url的編碼
- 提示: get引數需要放到請求地址的後面,使用 ? 進行追加, 多個引數之間使用 & 拼接
-
post請求方法
- post方法表示給伺服器提交資料的,本質是 “給” 資料
- 請求引數的表現形式
- 引數都會以請求體的方式進行提交,在url地址裡面看不到提交的引數
- 如果請求體裡面有多個引數,以表單形式提交的話,多個引數使用 & 拼接, 比如: username=hello&pw=abc
- 如果請求體裡面有多個引數,以json形式提交的話,多個引數使用 ,分割,比如: {"username":"hello","pw":"abc"}
- 特殊說明: 請求引數的型別需要根據介面文件指定
- 比如:如果後臺程式需要的是json資料格式,那麼我們需要指定請求頭裡面Content-Type: application/json
- 提示:如果在請求頭裡面沒有指定Content-Type,預設是以表單形式提交,格式:Content-Type: application/x-www-form-urlencoded
- 引數都會以請求體的方式進行提交,在url地址裡面看不到提交的引數
get和post請求的區別
- get本質是從伺服器獲取資料
- post本質是給伺服器提交資料
- get沒有請求體
- post有請求體
- get請求的引數都會暴露在url中,相對來說不安全
- post請求的引數都會在請求體裡面,相對來說更安全
- get請求預設會對頁面資料進行快取
- post請求預設不會對頁面資料進行快取
- get請求回退無害,不需要再次提交
- post請求回退會重新發起請求,需要再次提交資料
- get請求有長度限制,但是http協議中沒有要求長度限制,但是get請求一般都受瀏覽器本身的限制。
- post請求沒有長度限制。
- get請求的執行速度比post請求要快。
介面介紹
介面就是客戶端和服務端進行資料互動的通道,客戶端通過介面可以把資料提交給服務端,服務端把處理好的資料通過介面發給客戶端。通俗理解介面就是一個url,比如: http://127.0.0.1:8080/product
介面測試介紹
介面測試不關注介面功能,關注的是url介面是否能夠滿足指定功能,比如: http://127.0.0.1:8080/product 這個介面是一個新增商品的介面,則測試該介面是否能夠完成新增商品的操作。
介面測試的原理
模擬客戶端向web伺服器端傳送http請求報文資料以及獲取http響應報文,並驗證響應報文的資料和預期結果是否一致。
介面測試的測試點(關注點):
- 關注url的地址和請求方法是否正確
- 驗證請求回來的資料和預期結果是否一致
- 隱私引數是否能夠保證安全,比如:密碼不能在url地址中出現,密碼是否進行加密
- 介面是否能夠支援n多個使用者同時訪問,並能正常提供響應資料的能力。
RESTful風格
只是介面地址的一種表現形式,RESTful風格介面設計更加簡潔。
提示:不管是傳統介面還是RESTful風格介面,對應我們測試而言都是一樣的,正常根據介面文件進行測試即可。
json的介紹
json是JavaScript物件的字串,它其實就是一個資料格式,目前主要使用web前端和後臺程式之間的資料通訊上。
json的格式
-
物件格式 表示一個數據,比如一個學生資訊,一個老師資訊。
- 物件格式: 使用
{}
, 比如:{"name":"李四","age":20}
- 物件格式: 使用
-
陣列格式 表示一個集合,這個集合裡面可以包含多個數據。
- 陣列格式: 使用
[]
, 比如:[{"name":"張三","age":20},{"name":"李四","age":30}]
提示:json資料中的引號必須使用雙引號。
- 陣列格式: 使用
json資料的使用場景
json資料主要使用在前端程式和後臺程式的資料互動上。
例如: 前端程式一般需要把資料準備成json格式傳送給後臺程式,後臺程式接收到資料後進行相關的處理,再把處理好的資料以json格式方式返回給前端程式。
提示:前臺和後臺json資料都是需要包裝成http協議的資料進行傳輸, 請求的json資料會放到請求體裡面,響應的json資料會放到響應體裡面。
介面測試流程
- 需求分析
- 介面文件分析
-
請求資料
請求的url是否正確
請求的方法是否正確
請求的引數是否正確 -
響應資料
響應的內容是否和預期結果一致
響應頭資訊是否明確
響應的狀態碼是否正確
響應的引數是否有說明
響應體的引數要有說明
響應頭的引數也要有說明
-
- 設計和編寫測試用例
- 執行用例
- 跟蹤和管理缺陷(禪道)
- 測試完成以後,需要編寫測試報告