一、接口測試
1、關(guān)注點(diǎn)
功能:功能實(shí)現(xiàn),實(shí)現(xiàn)與設(shè)計(jì)一致, 接口通過性測試(數(shù)據(jù)交換,邏輯間的控制)
健壯性: 邊界值,容錯(cuò)性
性能: 并發(fā)及壓測
穩(wěn)定性: 長期運(yùn)行的穩(wěn)定性
安全性: SQL注入, session依賴, 數(shù)字簽名, http接口的安全性
2、常見接口種類
Http/Https接口: 通過http/https協(xié)議傳送接口數(shù)據(jù)(通常按字符串/二進(jìn)制傳輸), 如常見的網(wǎng)頁表單, https安全性更好
RESTful Api: REST表述性狀態(tài)傳遞. 一種設(shè)計(jì)風(fēng)格,基于http/https協(xié)議, 把一切接口視為資源, 接口要分版本,在統(tǒng)一的域名下管理, 不同的方法(get/post..)做不同的事,通常請求及響應(yīng)使用json格式
Web Service: SOAP簡單面向?qū)ο髤f(xié)議, 基于http實(shí)現(xiàn)的一種RPC方案.接口返回一些對象,可以直接通過操作對象,實(shí)現(xiàn)我們需要的業(yè)務(wù)處理.使用xml格式傳輸數(shù)據(jù)
RPC接口: RPC為遠(yuǎn)程方法調(diào)用, 主要應(yīng)用于分布式系統(tǒng)的不同服務(wù)器的方法,有不同的實(shí)現(xiàn)方案,基于TCP/Http協(xié)議的都有. RPC可以想 我們本地導(dǎo)入和調(diào)用對象一樣使用. Dubbo接口也是一種RPC接口.?
3、常見接口數(shù)據(jù)類型?
請求數(shù)據(jù)類型(Content-Type):
application/x-www-form-urlencoded: 常規(guī)只有文本的網(wǎng)頁表單
application/json: RESTful Api常用格式, 結(jié)構(gòu)清晰, 含有多層嵌套
multipart/form-data: 既有文本,又有上傳文件或富文本框的混合數(shù)據(jù)表單
text/xml: xml格式, RPC接口常用格式,Dubbo接口常用格式
test/html: html格式
響應(yīng)數(shù)據(jù)類型
string/html: 返回字符串或網(wǎng)頁源碼
json: RESTful Api常用響應(yīng)格式, 結(jié)構(gòu)清晰
xml: RPC接口常用格式
4、常見接口安全驗(yàn)證方式
Auth_1.0/Auth_2.0: 通用接口授權(quán)方式
Session依賴: 需要登錄之后才能進(jìn)行接口操作
Token驗(yàn)證: 先要使用自己的appid/appsecret通過獲取token接口驗(yàn)證身份獲取一個(gè)token(令牌,有一定有效期), 然后帶著token訪問接口
數(shù)字簽名: 將原本的參數(shù)按一定規(guī)則進(jìn)行組合,配合時(shí)間戳或appsecret, 通過加密算法生成一個(gè)簽名sign, 攜帶簽名進(jìn)行接口請求
5、常見接口請求方法
GET: 獲取資源
POST: 修改資源
PUT: 上傳資源
DELETE: 刪除資源
6、常見狀態(tài)碼(RESTful規(guī)范)
1** 信息,服務(wù)器收到請求,需要請求者繼續(xù)執(zhí)行操作
2** 成功,操作被成功接收并處理
3** 重定向,需要進(jìn)一步的操作以完成請求
4** 客戶端錯(cuò)誤,請求包含語法錯(cuò)誤或無法完成請求
5** 服務(wù)器錯(cuò)誤,服務(wù)器在處理請求的過程中發(fā)生了錯(cuò)誤
200 OK - [GET]:獲取資源成功
201 CREATED - [POST/PUT/PATCH]:創(chuàng)建/修改成功
202 Accepted - [*]:任務(wù)接受
204 NO CONTENT - [DELETE]:刪除成功
301 Moved Permanently: 永久重定向
302 Found: 臨時(shí)重定向
400 INVALID REQUEST - [POST/PUT/PATCH]:用戶請求錯(cuò)誤
401 Unauthorized - [*]:沒有權(quán)限(鑒權(quán)失敗, 接口層)
403 Forbidden - [*] 資源禁止訪問(服務(wù)器層,沒有訪問權(quán)限)
404 NOT FOUND - [*]:資源不存在(有可能是請求url錯(cuò)誤或參數(shù)不正確)
405 Method Not Allowd: 訪問的方法不允許, 如用POST訪問只支持GET請求的接口
406 Not Acceptable - [GET]:用戶請求的格式不可得(比如用戶請求JSON格式,但是只有XML格式)
410 Gone -[GET]:資源被永久刪除
422 Unprocesable entity - [POST/PUT/PATCH] 當(dāng)創(chuàng)建對象時(shí),發(fā)生驗(yàn)證錯(cuò)誤
500 INTERNAL SERVER ERROR - [*]:服務(wù)器發(fā)生錯(cuò)誤
502: 網(wǎng)關(guān)失效
504: 網(wǎng)關(guān)請求超時(shí)
7、接口業(yè)務(wù)類型
返回?cái)?shù)據(jù)型接口: 只從數(shù)據(jù)庫讀取數(shù)據(jù)
業(yè)務(wù)操作型接口: 需要寫數(shù)據(jù)庫(接口測試需要要涉及參數(shù)化或環(huán)境清理)
8、根據(jù)接口文檔設(shè)計(jì)測試點(diǎn)
功能分析: 是否能滿足業(yè)務(wù)(是否缺少某個(gè)前端需要的參數(shù)), 是否能滿足所有業(yè)務(wù)場景(是否有漏開發(fā)接口, 比如只開發(fā)了單品接口,沒開發(fā)套餐接口)
設(shè)計(jì)分析: 是否有不規(guī)范字段(如,nickname, passwd);不規(guī)范格式(如sex,用男,女而不是1,2);是否有易混淆字段(如amount和total);是否有單詞拼錯(cuò);是否有和數(shù)據(jù)庫字段對應(yīng)但名稱不一樣的(易錯(cuò))
接口分析: 協(xié)議類型(http要考慮安全);請求方法(是否規(guī)范);請求編碼格式(表單/Json/xml, 很多接口文檔不聲明,導(dǎo)致測試調(diào)試不通);接口授權(quán)方式;接口業(yè)務(wù)類型(關(guān)系到是否需要做參數(shù)化或環(huán)境清理); 返回值類型及結(jié)構(gòu)(關(guān)系到怎么斷言)
接口依賴: 需要什么環(huán)境準(zhǔn)備和業(yè)務(wù)場景, 依賴那些接口, 有那些動(dòng)態(tài)數(shù)據(jù), 預(yù)備環(huán)境怎么保障
參數(shù)分析: 各個(gè)參數(shù)的參數(shù)類型,組成規(guī)則,是否允許不傳,是否可以為空, 是否允許多傳參
業(yè)務(wù)分析: 如price字段必須和數(shù)據(jù)庫中的商品的price字段一致,才能校驗(yàn)通過
非功能性: 接口的技術(shù)實(shí)現(xiàn)方案是否合理, 能否滿足高并發(fā)的性能要求, 邊界值/極限值的處理是否合適, 是否前后端都有數(shù)據(jù)格式校驗(yàn)等(如精確度為秒級的訂單號生成器,在高并發(fā)下會(huì)導(dǎo)致生成同一訂單號的問題)
其他: 如反爬,對headers的一些限制和校驗(yàn), ip等限制
9、編寫接口測試用例
單接口用例: 正常數(shù)據(jù)/邊界數(shù)據(jù)/異常數(shù)據(jù)(健壯性)/并發(fā)(一致性)/性能/安全性(抓包截取偽造/SQL注入/跨域請求)
場景用例: 列出常見的用戶場景, 用接口進(jìn)行覆蓋, 業(yè)務(wù)場景壓測(尋找某個(gè)環(huán)節(jié)的性能瓶頸)
10、接口測試點(diǎn)
業(yè)務(wù)功能測試:正常場景、異常場景
邊界測試:業(yè)務(wù)規(guī)則邊界測試
? ? ? ? ? ? ? ? ?輸入輸出邊界值測試:必選參數(shù);可選參數(shù);參數(shù)有無null;參數(shù)順序,個(gè)數(shù),類? ? ? ? ? ? ? ? ? ? ? ?型;參數(shù)類型數(shù)值大小,輸入數(shù)值的范圍;參數(shù)字符串長短;參數(shù)特殊字符
參數(shù)組合測試
異常情況測試:冪等(重復(fù)提交),并發(fā)測試,事務(wù)測試,分布式測試,環(huán)境異常,大數(shù)量測? ?????????????????????????試(同時(shí)處理大批量數(shù)據(jù),DB數(shù)量很大時(shí),處理----并發(fā)和并行)
性能測試:響應(yīng)時(shí)間,吞吐量,并發(fā)數(shù),服務(wù)器資源使用率(cpu,內(nèi)存,IO,network)
安全測試:敏感信息是否加密(前后端數(shù)據(jù)加密,日志加密),sql注入
11、接口測試掌握點(diǎn)
了解OSI網(wǎng)絡(luò)模型,TCP/UDP協(xié)議,掌握HTTP/HTTPS協(xié)議,了解RPC, Web Service及REST,理解Session和Cookie
掌握常用的接口測試工具如curl命令,Postman,Jmeter,LR,SoupUI,AB等
掌握基本的抓包工具如Chrome開發(fā)者工具,Fiddler,Charles,Wireshark,tcpdumps等
掌握一門編程語言Python或Java
了解Nginx, Apache, Tomcat等服務(wù)器中間件
掌握數(shù)據(jù)庫基本查詢命令,及一些NoSQL(如Redis)操作,用于檢查響應(yīng)結(jié)果
掌握基本的Linux日子查詢和篩選命令
12、接口測試重點(diǎn)
動(dòng)態(tài)變量參數(shù)化
接口依賴及中間變量問題
異步接口結(jié)果驗(yàn)證問題
相應(yīng)參數(shù)及嵌套很多的驗(yàn)證問題
接口測試框架的穩(wěn)定性問題
資源清理問題
多接口場景測試
二、python接口測試
1、接口調(diào)用庫,使用第三方包requests
請求方法
requests.get():無參數(shù),有參數(shù)使用params = {"key":"ec961279f453459b9248f0aeb6600bbe","info":"你好"}
requests.post()
參數(shù)形式1? ? data = {"name": "hanzhichao", "age": 18} # Post請求發(fā)送的數(shù)據(jù),字典格式
res = requests.post(url=url, data=data) # 這里使用post方法,參數(shù)和get方法一樣
參數(shù)形式2? ?data = '''{
? ? ? ? "name": "hanzhichao",
? ? ? ? "age": 18
? ? ? ? }''' # 多行文本, 字符串格式,也可以單行(注意外層有引號,為字符串) data = '{"name": "hanzhichao", "age": 18}'res = requests.post(url=url, data=data) #? data支持字典或字符串
data參數(shù)支持字典格式也支持字符串格式,如果是字典格式,requests方法會(huì)將其按照默認(rèn)表單urlencoded格式轉(zhuǎn)換為字符串,如果是字符串則不轉(zhuǎn)化
如果data以字符串格式傳輸需要遵循以下幾點(diǎn):
必須是嚴(yán)格的JSON格式字符串,里面必須用雙引號,k-v之間必須有逗號,布爾值必須是小寫的true/false等等
不能有中文,直接傳字符串不會(huì)自動(dòng)編碼
一般來說,建議將data聲明為字典格式(方便數(shù)據(jù)添加修改),然后再用json.dumps()方法把data轉(zhuǎn)換為合法的JSON字符串格式
requests.delete()
requests.session() # 用來保持session會(huì)話,如登錄狀態(tài)
請求參數(shù)
url: 接口地址, strurl="http://127.0.0.1:5000/add/"
headers: 請求頭, dict headers={"Content-Type": "application/json"}
params: url參數(shù), dict params={"a":"1":"b":"2"}
data: 請求數(shù)據(jù), dict data={"a":"1":"b":"2"}
files: 文件句柄, dict files={"file": open("1.jpg")}
timeout: 超時(shí)時(shí)間,單位s, str, 超過時(shí)間會(huì)報(bào)超時(shí)錯(cuò)誤```requests.get(url=url,params=params,timeout=10)
響應(yīng)解析
resp: 響應(yīng)對象
resp.status_code: 響應(yīng)狀態(tài)碼
resp.text # 響應(yīng)文本
resp.json() # 響應(yīng)轉(zhuǎn)化為json對象(字典)-慎用:如果接口出錯(cuò)或返回格式不是json格式,使用這個(gè)方法會(huì)報(bào)錯(cuò)
resp.content # 響應(yīng)內(nèi)容, 二進(jìn)制類型
2、序列化和反序列化
內(nèi)存對象---文本、文件? -----序列化
文本---內(nèi)存對象-------反序列化
3、json格式和字典的區(qū)別
json對象,有屬性和方法
json文本,是字符串
字典中的引號支持單引號和雙引號,JSON格式只支持雙引號
字典中的True/False首字母大寫,JSON格式為true/false
字典中的空值為None, JSON格式為null
4、json格式序列化
序列化(字典 -> 文本/文件句柄): json.dumps()/json.dump()
反序列化(文本/文件句柄 -> 字典) : json.loads()/json.load()
5、文件使用
f = open("文件",r,模式)
f.close()?
with open file()
打開文件,with不需要關(guān)閉,直接打開需要關(guān)閉
三、網(wǎng)絡(luò)基礎(chǔ)知識
1、IP地址
查看ip地址命令? ?window? ?ipconfig? ? ?Linux? ifconfig
2、端口:設(shè)備與外界通訊交流的窗口
常見軟件默認(rèn)端口
Apache/Nginx(HTTP服務(wù)): 80
Tomcat: 8080
Oracle: 1521
MySQL: 3306
SQL Server: 1433
PostgreSQL: 5432
MongoDB: 27017
Redis: 6379
Memcached: 11211
查看端口命令
Windows: netstat -ano
Linux: netstat -ntlp
3、域名與DNS
DNS:域名解析系統(tǒng),域名和IP地址相互映射的一個(gè)分布式數(shù)據(jù)庫,提供域名轉(zhuǎn)到對應(yīng)ip的服務(wù)
4、OSI七層模型
上三層---應(yīng)用層,控制軟件方面
應(yīng)用層:文件傳輸,電子郵件,文件服務(wù),虛擬終端 TFTP,HTTP,SNMP,F(xiàn)TP,SMTP,DNS,Telnet
表示層:數(shù)據(jù)格式化,代碼轉(zhuǎn)換,數(shù)據(jù)加密
會(huì)話層:解除或建立與別的接點(diǎn)的聯(lián)系(會(huì)話)
下四層---數(shù)據(jù)流層,用來管理硬件
傳輸層:提供端對端的接口 TCP,UDP
網(wǎng)絡(luò)層:為數(shù)據(jù)包選擇路由 IP,ICMP,RIP,OSPF,BGP,IGMP
數(shù)據(jù)鏈路層 傳輸有地址的幀以及錯(cuò)誤檢測功能 SLIP,CSLIP,PPP,ARP,RARP,MTU
物理層 以二進(jìn)制數(shù)據(jù)形式在物理媒體上傳輸數(shù)據(jù) ISO2110,IEEE802,IEEE802.2
5、TCP及UDP協(xié)議
TCP和UDP都是傳輸層的協(xié)議
TCP:傳輸控制協(xié)議
UDP: 數(shù)據(jù)報(bào)文協(xié)議
TCP和UDP的區(qū)別
UDP的特點(diǎn)如下:
無鏈接
UDP使用盡最大努力交付,不保證可靠性
UDP是面向報(bào)文的,UDP對應(yīng)用層交付下來的報(bào)文,既不合并,也不拆分,而是保留這些報(bào)文的邊界。應(yīng)用層交給UDP多長的報(bào)文,UDP就照樣發(fā)送,即一次發(fā)送一個(gè)報(bào)文
UDP沒有擁塞控制
UDP支持一對一、一對多、多對一和多對多的交互通信
UDP的首部開銷小,只有8字節(jié)
TCP的特點(diǎn):
TCP是面向連接的
每條TCP連接只能用于兩個(gè)斷點(diǎn),一對一
TCP提供可靠交付的服務(wù):連接傳輸數(shù)據(jù)、無差錯(cuò)、不丟失、不重復(fù)、并且按序到達(dá)
TCP提供全雙工通信
面向字節(jié)流。TCP根據(jù)對方給出的窗口和當(dāng)前網(wǎng)絡(luò)擁塞的程度來決定一個(gè)報(bào)文應(yīng)該包含多少個(gè)字節(jié)
6、HTTP協(xié)議
HTTP:超文本傳輸協(xié)議,是用于從WWW服務(wù)器傳輸超文本到本地瀏覽器的傳輸協(xié)議。
HTTP協(xié)議是一種無狀態(tài)協(xié)議,主要包含請求和相應(yīng)兩大部分:
HTTP協(xié)議傳輸?shù)臄?shù)據(jù)都是未加密的,HTTPS協(xié)議是由HTTP+SSL協(xié)議構(gòu)建的可進(jìn)行加密傳輸、身份認(rèn)證的網(wǎng)絡(luò)協(xié)議,要比HTTP協(xié)議安全。
HTTPS和HTTP的區(qū)別
HTTPS協(xié)議需要到ca申請證書,一般免費(fèi)證書較少,因而需要一定費(fèi)用。
HTTP是超文本傳輸協(xié)議,信息是明文傳輸,HTTPS則是具有安全性的SSL加密傳輸協(xié)議。
HTTP和HTTPS使用的是完全不同的連接方式,用的端口也不一樣,前者是80,后者是443。
HTTP的連接很簡單,是無狀態(tài)的;HTTPS協(xié)議是由HTTP+SSL協(xié)議構(gòu)建的可進(jìn)行加密傳輸、身份認(rèn)證的網(wǎng)絡(luò)協(xié)議,比HTTP協(xié)議安全。
7、請求(Request)
請求是我們發(fā)送給接口的數(shù)據(jù)對象,包含接口地址(URL),請求方法,參數(shù),請求頭(Headers), Cookies, 數(shù)據(jù)等
8、URL編碼
URL編碼是一種瀏覽器用來打包請求參數(shù)及表單參數(shù)的格式, 參數(shù)和參數(shù)之間使用&分割,非ASCII碼使用%加16進(jìn)制編碼替換
數(shù)據(jù)編碼
ASCII碼: 單字節(jié),美國信息交換標(biāo)準(zhǔn)碼, 包含數(shù)字,字母,英文標(biāo)點(diǎn)及一些控制字符
ISO-8859-1:又稱Latin1,單字節(jié),向下兼容ASCII,用于支持部分于歐洲使用的語言
ANSI編碼:單字節(jié)表示英文,雙字節(jié)表示漢字,對ASCII的擴(kuò)展,不同的國家和地區(qū)制定了不同的標(biāo)準(zhǔn),中文中的GBK,GB2312屬于ANSI編碼
Unicode編碼: 采用二個(gè)字節(jié)編碼(英文和中文的字符都以雙字節(jié)存放),與ANSI碼不兼容
UTF-8:是目前互聯(lián)網(wǎng)上使用最廣泛的一種Unicode 編碼方式,又稱萬國碼
指定請求數(shù)據(jù)編碼(解決中文亂碼):
請求Headers設(shè)置Content-Type: application/json; charset=utf-8
Base64: 一種用64個(gè)字符來表示任意二進(jìn)制數(shù)據(jù)的方法。
Base64編碼的作用:由于某些系統(tǒng)中只能使用ASCII字符。Base64就是用來將非ASCII字符的數(shù)據(jù)轉(zhuǎn)換成ASCII字符的一種方法。
而且base64特別適合在http,mime協(xié)議下快速傳輸數(shù)據(jù)。
9、GET請求和POST請求的區(qū)別
GET請求:
GET請求可被緩存
GET請求保留在瀏覽器歷史記錄中
GET請求可被收藏為書簽
GET請求不應(yīng)在處理敏感數(shù)據(jù)時(shí)使用
GET請求有長度限制
GET請求只應(yīng)當(dāng)用于取回?cái)?shù)據(jù)
POST請求:
POST請求不會(huì)被緩存
POST請求 不會(huì)保留在瀏覽器歷史記錄中
POST不能被收藏為書簽
POST請求對數(shù)據(jù)長度沒有要求
10、常見Headers

12、Cookie和Session
**Cookie/Cookies: **是指某些網(wǎng)站為了辨別用戶身份、進(jìn)行session跟蹤而儲(chǔ)存在用戶本地終端上的數(shù)據(jù)(通常經(jīng)過加密)。
Session:服務(wù)端為客戶端訪問所建立和維持的會(huì)話,通常會(huì)生成一個(gè)唯一的id,會(huì)話有一定的有效期。
由于HTTP是無狀態(tài)的,即服務(wù)器不知道用戶上一次做了什么,默認(rèn)也無法識別用戶身份。
比較流行的做法是:
用戶訪問時(shí)服務(wù)端建立會(huì)話(Session)
將會(huì)話id(Session ID)隨響應(yīng)返回,并保存在客戶端的Cookies里
后續(xù)的訪問中,服務(wù)器通過辨識,客戶端請求時(shí)攜帶的Cookies內(nèi)容來識別用戶
Cookie和Session的區(qū)別
cookie是存在客戶端(瀏覽器)的進(jìn)程內(nèi)存中和客戶端所在的機(jī)器硬盤上
cookie只能能夠存儲(chǔ)少量文本,大概4K大小
cookie是不能在不同瀏覽器之間共享
Session存在服務(wù)器端,存在網(wǎng)站進(jìn)程的內(nèi)存中
Session在初次設(shè)置session的時(shí)候,會(huì)在session池中實(shí)例化一個(gè)session對象,以sessionid 的值作為key,同時(shí)會(huì)將key以cookie的形式保存到客戶端的內(nèi)存中
Session的作用域只存在當(dāng)前瀏覽器的會(huì)話中,當(dāng)瀏覽器關(guān)閉以后就會(huì)將sessionid丟失,但是服務(wù)器的Session對象要20分鐘以后才會(huì)回收
13、授權(quán)與加密
常見的接口安全策略:
Session/Cookie機(jī)制: 即需要登錄,登錄后可訪問各個(gè)接口,最常用的一種策略,適用于內(nèi)部接口。
固定appid模式: 用戶注冊時(shí)會(huì)生成一個(gè)唯一的appid,用戶調(diào)用接口時(shí)需要攜帶appid,適用于公開接口,安全性較差。
動(dòng)態(tài)token模式: token即身份令牌,用戶訪問接口需要使用個(gè)人appid臨時(shí)申請一個(gè)token,token有一定有效期,適用于公開接口,安全性較appid模式好。
開放協(xié)議: Basic Auth/ Oauth1.0 / Oauth2.0: 適用于開放接口。
數(shù)字簽名: 將所有請求參數(shù)及參數(shù)值進(jìn)行排列拼接,加上用戶私鑰,再進(jìn)行Md5或其他加密生成一個(gè)請求的簽名(sign),請求是需要攜帶簽名,服務(wù)器收到請求后,會(huì)對請求重新計(jì)算簽名并核實(shí)與請求所攜帶簽名是否一致。安全性較高,可以有效防止請求被篡改。適用于內(nèi)部接口及微服務(wù)接口。
常見的加密算法
在接口數(shù)據(jù)傳輸過程中常對一些敏感數(shù)據(jù)(如密碼)進(jìn)行Base64編碼或MD5加密,以增加安全性。
加密算法分為對稱式加密算法和非對稱式加密算法,對稱式加解密使用同一個(gè)秘鑰,非對稱式使用不同的秘鑰。
對稱式加密
DES: 數(shù)據(jù)加密標(biāo)準(zhǔn),速度較快,適用于加密大量數(shù)據(jù)的場合
AES: 高級加密標(biāo)準(zhǔn),速度快,安全級別高
非對稱式加密
RSA: 是一個(gè)支持變長密鑰的公共密鑰算法, 分公鑰和私鑰,SSH協(xié)議使用該算法
MD5: 最常用的一種加密方法,是一種摘要算法。
14、緩存
HTTP 緩存機(jī)制作是 web 性能優(yōu)化的重要手段,當(dāng)用戶第一次請求服務(wù)器資源時(shí),服務(wù)器將資源緩存到客戶端本地,在一定時(shí)間內(nèi)(緩存有效期內(nèi))當(dāng)用戶再次向服務(wù)器請求同樣的資源時(shí),可以直接從緩存中讀取,而不用從服務(wù)器下載。
接口測試中緩存相關(guān)注意點(diǎn)
在更新或調(diào)試接口是,注意是否需要清理緩存(或臨時(shí)禁用緩存)
緩存有一定的有效期
接口性能測試中會(huì)關(guān)注緩存的命中率
15、代理
正向代理中, 代理和客戶端在一個(gè)局域網(wǎng)內(nèi),對服務(wù)器透明
反向代理中,代理和服務(wù)器在一個(gè)局域網(wǎng)內(nèi),對客戶端透明
例如:使用代理訪問Google屬于正向代理,通過不同的域名通過Nginx向同一臺服務(wù)器請求不同的網(wǎng)站屬于反向代理
反向代理可以做負(fù)載均衡
反向代理接口測試一般要先綁定本地hosts
16、Chrome開發(fā)者工具
Elements: HTML元素面板,用于定位查看元素源代碼
Console: js控制臺面板,js命令行,查看前端日志
Group by frame:按框架分組
Preserve log:頁面重載時(shí)保留請求
Disable cache:禁用緩存
Offline:斷網(wǎng)及弱網(wǎng)模擬
Sources: 資源面板,用于斷點(diǎn)調(diào)試js
Network: 請求信息面板,查看請求及響應(yīng)信息
Timeline: 時(shí)間線面板,記錄網(wǎng)站生命周期內(nèi)所發(fā)生的各類事件
Profiles: 事件詳情面板
Application: 本地存儲(chǔ),Session存儲(chǔ)等資源信息
Secuity: 判斷當(dāng)前網(wǎng)頁是否安全
Audits: 網(wǎng)絡(luò)性能診斷
Filters: 請求過濾器
Overview: 資源時(shí)間軸
Requests Table: 請求列表
Name: 資源名稱
Status: HTTP狀態(tài)碼
Initiator: 請求源
Size: 從服務(wù)器下載的文件和請求的資源大小。如果是從緩存中取得的資源則該列會(huì)顯示(from cache)
Timeline: 顯示所有網(wǎng)絡(luò)請求時(shí)間狀態(tài)軸
Summary: 請求總數(shù),數(shù)據(jù)傳輸量,加載時(shí)間信息
DOMContentLoaded:頁面上DOM完全加載并解析完畢
load:頁面上所有DOM、CSS、JS、圖片完全加載完畢
四、Fiddler使用
1、作用
抓到請求數(shù)據(jù),查看Raw格式/表單格式/Json/XML格式
可以攔截和修改請求
更強(qiáng)大的過濾器
可以抓取Postman/接口腳本發(fā)送的請求,方便調(diào)試
可以抓包手機(jī)請求 ...
2、Fiddler主界面
Fiddler的主界面分為 工具面板、會(huì)話面板、監(jiān)控面板、狀態(tài)面板
Inspectors: 檢查員
Raw:請求的原始格式
WebForm: 請求的表單格式
Json:請求的Json格式請求
XML:請求的XML格式
AutoResponsder: 自動(dòng)回復(fù),可用于構(gòu)造響應(yīng),Mock,不修改服務(wù)器文件調(diào)試接口
Composer: 設(shè)計(jì)者, 發(fā)送和調(diào)試請求
FidderScript:
Filters: 過濾器
Hosts: 按服務(wù)器過濾
Clients Process: 按客戶端程序過濾
Request Headers: 按請求頭過濾
Breakpoints: 設(shè)置斷點(diǎn)
Response Status Code: 按狀態(tài)碼過濾
Response Type and Size: 按響應(yīng)類型及大學(xué)過濾
Response Headers: 按響應(yīng)頭過濾
3、自動(dòng)斷點(diǎn)設(shè)置
菜單Rules -> Automatic Breakpoints -> Before Requests/After Requests
五、postman使用
1、環(huán)境變量使用方法:
選擇環(huán)境,在 請求URL或者請求Body里使用{{變量名}}來使用環(huán)境變量,變量可以在請求Body的各種格式中使用,但不能直接在請求前腳本(Pre-request Script)和請求后腳本(Tests)中使用
環(huán)境管理中還可以點(diǎn)擊“Global”添加全局變量,環(huán)境變量只有當(dāng)選擇了該環(huán)境時(shí)生效,全局變量在任何環(huán)境中生效,測試集中的變量只在當(dāng)前測試集生效,當(dāng)測試集變量,環(huán)境變量,全局變量有重復(fù)的變量名時(shí),優(yōu)先級為:環(huán)境變量>全局變量>測試集變量
2、Params使用
當(dāng)請求URL中參數(shù)很多時(shí),不方便進(jìn)行添加和查看,可以點(diǎn)擊URL輸入框后的Params按鈕,以表格的方式添加變量及值,從表格添加后,變量和值會(huì)自動(dòng)添加到URL中
請求設(shè)計(jì)
授權(quán):如果接口需要授權(quán),可以在該頁面設(shè)置授權(quán)方式(type)和授權(quán)信息
Header: 請求頭,可以設(shè)置請求類型(Content-Type)和Cookie
Body: 請求數(shù)據(jù)
form-data:混合表單,支持上傳文件
x-www-form-urlencoded:文本表單
raw:原始格式,支持JSON/XML格式(后面可選擇)
binary: 二進(jìn)制格式,用于發(fā)送二進(jìn)制數(shù)據(jù)流
Pre-request Script: 請求前腳本,Javascript語法,用于在發(fā)送請求前生成一些動(dòng)態(tài)數(shù)據(jù)或做一些處理
Tests:請求后腳本,Javascript語法,用于請求返回后做一些處理或斷言結(jié)果
Tests斷言
HTTP狀態(tài)碼斷言:
tests["HTTP狀態(tài)碼200"]=responseCode.code==200;
響應(yīng)包含內(nèi)容斷言:
tests["狀態(tài)碼200"] = responseBody.has("登錄成功");
JSON響應(yīng)斷言
varjsonData =JSON.parse(responseBody);tests["code為200"] =jsonData.code==200tests["msg為success"] =jsonData.msg =="success"
Runner: 測試集批量執(zhí)行
支持設(shè)置迭代次數(shù)
支持加載csv或json類測試數(shù)據(jù)
在電腦上新建一個(gè)data.csv文件,第一行為變量名,下面是數(shù)據(jù)