1、基礎應用
1.1 介面測驗的簡介和分類
?介面測驗就是測驗系統組件介面之間的一種測驗
分類:
?測驗外部介面:測驗被測系統和外部系統之間的介面(只需要測驗正例即可)
?測驗內部介面:
??①內部介面只提供給內部系統使用(預算系統,承保系統)(只需要測驗正例即可)
??②內部介面提供給外部系統使用(測驗必須非常全面,正例,各種例外場景,權限控制)
1.2 介面測驗的流程以及用例的設計
?①拿到介面api檔案(通過抓包工具獲取),熟悉介面業務,介面地址,鑒權方式,入參,出參,錯誤碼
?②撰寫介面用例以及評審
思路:
?正例:輸入正常入參,介面能夠成功回傳資料
?反例:
??鑒權反例:
???鑒權碼為空,鑒權碼錯誤,鑒權碼過期…
??引數反例:
???引數為空,引數型別例外,引數長度例外
??錯誤碼覆寫:
???根據業務而定的
??其他錯誤場景:
???介面黑名單,介面呼叫次數限制,分頁場景

?③使用介面測驗工具postman執行介面測驗
?④postman+newman+jenkins實作持續集成,并且輸出測驗報告,且發送郵件
1.3 實戰-微信公眾平臺介面
獲取權限:
?appid
?secret(秘鑰)
1.4 postman界面功能介紹
?Home-主頁
?Workspaces-作業空間
??Collections:集合,專案集合
??APIS:api檔案
??Environments:環境變數,全域變數
??Mock Server:虛擬服務器
??Monitors:監聽器
??History:歷史記錄
1.5 postman執行介面測驗
請求頁簽:
?Params:get請求傳參
?Authorizition:鑒權
?Headers:請求頭
?Body:post請求傳參
??none(不常用):沒有引數
??form-data:既可以傳鍵值對引數,也可以傳檔案
??x-www-form-urlencoded:只能傳鍵值對引數
??raw:json,text,xml,html,javaScript
??binary:把檔案以二進制的方式傳參
?Pre-request-script:請求之前的腳本
?Tests:請求之后的斷言
?Settings:設定
?Cookies:用于管理cookie資訊
回應頁簽:
?Body:介面回傳的資料
??Pretty:以json,html,xml…不同的格式查看回傳的資料
??Raw:以文本的方式查看回傳的資料
??PreView:以網頁的方式查看回傳的資料
?Cookies:回應的Cookie資訊
?Headers:回應頭
?Test Results:斷言的結果
?200-狀態碼
?OK-狀態資訊
?681ms:回應時間
?343B:回應的位元組數
Get請求和Post請求的區別:
?①get請求一般是獲取資料,post請求一般是提交資料
?②post請求比get請求安全
?③本質區別是傳參方式不同:
??get請求在地址欄后面以?的方式傳參,多個引數用&分隔
??post請求是在body以表單的方式傳參
問題:
?多種環境:開發環境,測驗環境,生產環境
?介面關聯:需要手動關聯
?引數需要手動修改
1.6 postman的環境變數及全域變數
環境變數:環境變數就是全域變數
全域變數:能夠在任何介面中訪問的變數
獲取環境變數和全域變數的值是通過:{{變數名}}
1.7 介面關聯
1.7.1 json提取器實作介面關聯
第一個介面:
console.log(responseBody);
//使用json提取器提取access_token值
//把回傳的字串格式的資料轉換成物件的形式
var result = JSON.parse(responseBody);
console.log(result.access_token);
//把access_token設定為全域變數
pm.globals.set("access_token", result.access_token);
第二個介面:
{{access_token}}
1.7.2 使用正則運算式提取器實作介面關聯
第一個介面:
//使用正則運算式提取器實作介面關聯,match匹配
var result = responseBody.match(new RegExp('"access_token":"(.*?)"'));
console.log(result[1]);
//設定為全域變數
pm.globals.set("access_token", result[1]);

第二個介面:
{{access_token}}
1.8 postman內置動態引數以及自定義的動態引數
1.8.1 內置動態引數
?{{$timestamp}}:生成當前時間的時間戳
?{{$randomint}}:生成0-1000之間的亂數
?{{$guid}}:生成速記GUID字串
1.8.2 自定義動態引數

使用時:{{times}}
1.9 測驗其他介面
get請求:在Params中撰寫內容
post請求:在Body中撰寫
增刪改查:需要形成一個倍訓
檔案上傳:在Body中的form-data中選擇file
1.10 postman斷言
常規斷言:
?Status code:Code is 200 檢查回傳的狀態碼是否為200(常用)
?Response body:Contains string 檢查回應中包含指定字串(常用)
?Response body:Json value check 檢查回應中其中json的值(常用)
?Response body:is equal to a string 檢查回應等于一個字串(常用)
?Response headers:Content-Type… 檢查是否包含回應頭Content-Type
?Responsetime is less than 200ms:檢查請求耗時小于200ms

自定義動態斷言:
在斷言中獲取自定義動態引數(全域變數)的方式:
①pm.globals.get("times")
②globals["times"]
③globals.times
全域斷言:

1.11 postman批量運行測驗用例

1.12 postman資料驅動之CSV檔案和JSON檔案的處理
1.13 測驗必須帶請求頭的介面
常見的請求頭:
?Host:請求的主機地址
?Collection:連接方式
?Accept:客戶端收到的資料格式【常用】
?X-Requested-With:異步請求【常用】
?User-Agent:客戶端的用戶型別【常用】
?Referer:來源
?Cookie:Cookie資訊【常用】
?Content-Type:請求內容的格式【常用】
1.14 postman介面Mock Server服務器
mock:模擬
后端的介面還沒有開發完成,前端的業務需要呼叫后端的介面
{“error_code”:0,msg:“回傳成功”,data:[]}
1.15 postman的Cookie鑒權
什么是cookie?
?cookie是一小段文本,格式:key = value
cookie鑒權的原理:【重要】
?①當客戶端第一次訪問服務器時,服務器就會生成cookie資訊,且在回應頭的set-cookie中把生成的cookie資訊發送給客戶端
?②當客戶端第2-N次訪問服務器時,客戶端會在請求頭的cookie帶上cookie資訊,從而實作鑒權
cookie的分類:
?①會話cookie:保存在記憶體,當瀏覽器關閉后會自動化消除cookie
?②持久cookie:保存在硬碟,瀏覽器關閉后不會清除,只有當失效時間到了才會自動清除
1.16 Newman
postman專門為介面測驗而生,newman轉為postman而生,newman可以讓postman的腳本通過非GUI(命令列)的方式去運行
?運行命令:newman run
常用引數:
?-e:參考環境變數
?-g:參考全域變數
?-d:參考資料檔案
?-n:指定測驗用例迭代次數
?-r cli,html,json,junit --reporter-html-export:指定生成HTML的報告

1.17 postman+newman+Jenkins實作介面測驗持續集成
?①新建一個專案
?②設定自定義作業空間
?③執行windows的批處理命令

?④執行系統的Groovy腳本

?⑤生成的HTML的報告集成到Jenkins

轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/356791.html
標籤:其他
