目錄
一、Postman背景介紹
二、Postman的操作環境
三、Postman重要提示:
四、什么是介面測驗
五、介面測驗工具
六、介面測驗流程
七、介面測驗執行
八、全域變數和環境變數
九、postman介面關聯
十、postman動態引數
十一、postman斷言
十二、postman用例的批量執行
十三、必須帶請求頭的介面的測驗方式
十四、介面MOCK
十五、Postman介面測驗之Cookie鑒權,
十六、介面加密解密
十七、newman(新男人,非GUI的方式運行)
Postman是一款功能強大的網頁除錯與發送網頁HTTP請求的Chrome插件
一、Postman背景介紹
用戶在開發或者除錯網路程式或者是網頁B/S模式的程式的時候是需要一些方法來跟蹤網頁請求的,用戶可以使用一些網路的監視工具比如著名的Firebug等網頁除錯工具,今天給大家介紹的這款網頁除錯工具不僅可以除錯簡單的css、html、腳本等簡單的網頁基本資訊,它還可以發送幾乎所有型別的HTTP請求!Postman在發送網路HTTP請求方面可以說是Chrome插件類產品中的代表產品之一,
二、Postman的操作環境
postman適用于不同的作業系統,Postman Mac、Windows X32、Windows X64、Linux系統,還支持postman 瀏覽器擴展程式、postman chrome應用程式等,
三、Postman重要提示:
由于2018年初chrome停止對chrome應用程式的支持,你的postman插件可能無法正常使用了,目前chrome應用商店能使用的就是chrome擴展程式和主題背景,
四、什么是介面測驗
介面測驗是測驗系統組件間介面的一種測驗,介面測驗主要用于檢測外部系統與系統之間以及內部各個子系統之間的互動點,測驗的重點是要檢查資料的交換,傳遞和控制管理程序,以及系統間的相互邏輯依賴關系等,
由于如今的系統復雜度不斷上升,傳統的測驗方法成本急劇增加且測驗效率大幅下降,所以就要做介面測驗,同時,介面測驗相對容易實作自動化持續集成,且相對UI自動化也比較穩定,可以減少人工回歸測驗人力成本與時間,縮短測驗周期,支持后端快速發版需求,介面持續集成是為什么能低成本高收益的根源,現在很多系統前后端架構是分離的,從安全層面來說,只依賴前端進行限制已經完全不能滿足系統的安全要求(繞過前面實在太容易), 需要后端同樣進行控制,在這種情況下就需要從介面層面進行驗證,前后端傳輸、日志列印等資訊是否加密傳輸也是需要驗證的,特別是涉及到用戶的隱私資訊,如身份證,銀行卡等,
五、介面測驗工具
postman+newman+jenkins+git/svn
jmeter+ant+jenkins+git/svn
postman簡介:
postman一個款功能強大的介面測驗工具,專為介面而生,
安裝:
兩個版本:
Postman Chome app(chorme瀏覽器,翻墻) 不推薦
Postman native app 客戶端的安裝方式:
下載地址: https://www.getpostman.com/apps
注冊,登錄,只有登錄后才可以使用Postman的云服務的功能,
六、介面測驗流程
1.拿到介面檔案,(抓包:F12,fiddler,charles),熟悉介面業務,介面地址,請求引數,請求頭資訊,請求方式,鑒權方式,
2.撰寫介面用例撰寫以及評審,
3.使用介面測驗工具執行介面測驗,
4.輸出介面測驗報告,
七、介面測驗執行
鑒權碼:鑒權你是否有訪問此介面的權限的一個字串碼,
獲取鑒權碼的方式:
1.有一個專門的獲取token鑒權碼的介面,
2.登錄之后自動生成token鑒權碼,
get請求以?方式傳參,多個引數之間用@分隔,
請求的功能頁簽:
Params:get請求傳參 Authorization:是驗證是否擁有從服務器訪問所需資料的權限,
Headers:請求頭,
Body:(post請求傳參)
1.form-data:表單:鍵值對,還有檔案上傳,
2.x-www-form-urlenconded 表單:鍵值對,
3.raw:傳各種其他型別的引數,比如:Text,Javascript,json,html,xml
4.binary:用于上傳二進制檔案,
pre-erquest script:介面請求之前的js腳本,
Tests:介面請求之后的斷言(斷言介面是否請求成功)
Settings:對請求的設定,
-------------
Cookie:是Postman用于自動管理iCookie關聯,
回應的功能頁簽:
Body:回應內容,
Pretty:json格式,raw:文本格式,proview:網頁格式,
Cookie:回應的Cookie資訊,
Headers:回應頭
TestResults:斷言結果
回應狀態碼:200
回應資訊:OK
回應時間和回應位元組數
--------------------------------------------------------------------------------------------
Console:控制臺,用于介面測驗除錯,
面試題:
介面測驗中get請求和post請求的區別是什么?
1.get請求一般是獲取資源,psot請求一般是提交資源,
2.get是通過在地址欄中以?方式傳參,多個引數用&分隔,post請求是通過表單傳參,
3.post比get安全
八、全域變數和環境變數
全域變數:能夠在所有的介面請求里面使用的變數的叫全域變數,
環境變數:環境變數讓代碼能夠在不同的環境下去執行,環境變數其實也是全域變數,
http協議默認埠:80
https協議默認埠:443
Postman環境變數設定及使用
為什么要創建環境變數?什么是環境變數?
做為測驗人員,我們經常會碰到正式環境和測驗環境,我們介面也有測驗和正式環境之分,為了更好的使用postman這個介面工具,所以我們就需要用到環境變數
?
添加環境組

組下添加環境變數,并給變數賦值
添加后的環境

參考時必須先選擇環境組,再應用環境變數,語法:{{變數名}}

選擇右邊紅框,修改環境變數的值(不建議在界面中直接修改)

九、postman介面關聯
介面關聯的第一種方式:json提取器
//1.獲取回應的主體正文
var resbody= responseBody;
console.log(resbody);
//2.如果回傳的是json字串,可以轉換成json物件然后決議
var jsonobj = JSON.parse(responseBody);
console.log(jsonobj.access_token);
//3.把提取到的token放到全域變數
pm.globals.set("access_token",jsonobj.access_token);
介面關聯的第二種方式:正則運算式
//1.獲取回應的主體正文
var resbody = responseBody;
console.log(resbody);
// //2.如果回傳的是json字串,可以轉換成json物件然后決議
// var jsonobj = JSON.parse(responseBody);
// console.log(jsonobj.access_token);
//2.使用正則運算式提取
var value = responseBody.match(new RegExp('"access_token":"(.*?)"'));
console.log(value[1]);
//3.把提取到的token放到全域變數
pm.globals.set("access_token",value[1]);
十、postman動態引數
postman內置動態引數
企業當中做介面測驗的時候不能把引數寫死
介面測驗包含三個動態引數,如下:
時間戳:{{KaTeX parse error: Expected 'EOF', got '}' at position 10: randomint}?} 生成一個GUID的字串:…guid}}很長的一個字串
Postman環境變數和全域變數
開發環境,測驗環境,預發布環境,線上環境
不管是環境變數也好還是Gobal也好全都是全域變數
十一、postman斷言
Setting an environment variable (設定一個環境變數)
|
|
Setting a nested object as an environment variable (將嵌套物件設定為環境變數)
| 1 2 3 4 5 |
|
Getting an environment variable (獲取環境變數)
| 1 |
|
Getting an environment variable (whose value is a stringified object) 獲取一個環境變數(其值是一個字串化的物件)
| 1 2 3 4 |
|
Clear an environment variable (清除一個環境變數)
| 1 |
|
Set a global variable (設定一個全域變數)
| 1 |
|
Get a global variable (獲取一個全域變數)
| 1 |
|
Clear a global variable (清除全域變數)
| 1 |
|
Get a variable (獲取一個變數)
該函式在全域變數和活動環境中搜索變數,
| 1 |
|
Check if response body contains a string (檢查回應主體是否包含字串)
| 1 2 3 |
|
Check if response body is equal to a string (檢查回應主體是否等于一個字串)???????
| 1 2 3 |
|
Check for a JSON value (檢查JSON值)
| 1 2 3 4 |
|
Content-Type is present (內容型別存在)
| 1 2 3 |
|
Response time is less than 200ms (回應時間小于200ms)
| 1 2 3 |
|
Status code is 200 (狀態碼是200)
| 1 2 3 |
|
Code name contains a string (代碼名稱包含一個字串)
| 1 2 3 |
|
Successful POST request status code (成功的POST請求狀態碼)
| 1 2 3 |
|
Use TinyValidator for JSON data (對于JSON資料使用TinyValidator)
| 1 2 3 4 5 6 7 8 9 10 11 12 |
|
Decode base64 encoded data (解碼base64編碼的資料)
| 1 2 3 4 5 6 7 8 |
|
Send an asynchronous request (發送異步請求)
該功能既可以作為預先請求,也可以作為測驗腳本使用,
| 1 2 3 |
|
Convert XML body to a JSON object (將XML正文轉換為JSON物件)
| 1 |
|
十二、postman用例的批量執行
資料驅動:csv,json
特別注意: 在引數里面取資料檔案的值和取全域變數一致,在斷言里面取資料檔案的值使
用:data["名稱"]
csv檔案編碼格式必須為:UTF-8
十三、必須帶請求頭的介面的測驗方式
Host: www.baidu.com 請求的主機地址
Connection: keep-alive 連接方式:保持活躍
User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36
(KHTML, like Gecko) Chrome/89.0.4389.114 Safari/537.36 請求的客戶端的型別 (模擬
瀏覽器的請求)
X-Requested-With: XMLHttpRequest 異步請求:長沙到北京,高鐵,飛機,走路,局
部重繪
Referer: 來源
Accept-Encoding: gzip, deflate, br 客戶端接收的資料壓縮方式
Accept-Language: zh-CN,zh;q=0.9 客戶端接收的資料編碼格式
Cookie: 請求的Cookie資訊
Content-Type 請求的資料型別
form-data: Content-Type :multipart/form-data 表單檔案上傳
x-www-from-urlencoded: Content-Type x-www-from-urlencoded: 表單 提交
raw: Content-Type:applicaton/json 根據你選擇的資料型別 來決定
binary: Content-Type:binary 二進制檔案
十四、介面MOCK
使用場景:前后端分離,后端的介面資料沒有出來,前端需要呼叫后的介面實作業務,為了
保證我們前端能夠正常的開發以及測驗,那么就需要使用MOCK,模擬樁,模擬一個接
十五、Postman介面測驗之Cookie鑒權,
介面鑒權,介面加密,介面簽名(金融專案,銀行專案,信貸專案,特大型專案)
1.什么是cookie?
cookie本質就是一段文本資訊,客戶端第一次訪問服務器時,那么服務器不知道客戶端的
身份,所有就需要創建一個身份標識,這個身份標識就是cookie,以鍵值對的方式保存,
cookie鑒權的原理:
當客戶端 第一次 訪問服務器時,那么服務器就會生成cookie,并且把生成的cookie資訊放
到回應頭的set-cookie欄位里面,然后發送給客戶端,客戶端接收到cookie之后就會保存
起來,然后在 第2-N次 請求服務器的時候自動化的帶上cookie資訊實作鑒權,
2.cookie分類
回話cookie:保存在記憶體中,瀏覽器關閉之后自動化消失,
持久cookie:保存在硬碟中,瀏覽器關閉之后不會消失,只有當持久化的時間到期了才會
消失,
3.資料格式
name:cookie的名稱
value:cookie的值
domain:cookie作為的ip地址,
path:cookie所在的服務器上面的專案的路徑,
exprise in:失效時間
size:大小
凡是網頁端的專案,95%以上都是存在cookie鑒權,
說明:postman能夠自動的保存第一次訪問服務器的cookie資訊,并且能夠在第2-N次的
時候自動的帶上cookie的資訊,
十六、介面加密解密
1.對稱式的加密方式(私鑰加密):不常用DES和AES,已經別淘汰了,
Base64加密:
//base64加密方式:
var username = CryptoJS.enc.Utf8.parse("admin");//轉為utf‐8
var base64_username = CryptoJS.enc.Base64.stringify(username);//轉為Base64 加密
console.log(base64_username);
Base64解密:
//base64解密方式:
var username = CryptoJS.enc.Base64.parse("YWRtaW4=");//解密
var new_username = username.toString(CryptoJS.enc.Utf8);//轉為utf‐8
console.log(new_username)
2.非對稱的加密方式(雙鑰《公鑰和私鑰》加密):RSA加密方式
由一個密碼生成的雙鑰,公鑰加密,私鑰解密,私鑰加密,公鑰解密、
3.只加密不解密
1.MD5加密,
//MD5加密
var new_username2 = CryptoJS.MD5("admin").toString().toUpperCase();
console.log(new_username2)
十七、newman(新男人,非GUI的方式運行)
postman為介面而生,newman為postman而生,
運行命令:newman run
常用引數:
-e 使用環境變數
-g 使用全域變數
-d 使用CSV、json資料驅動
-n 回圈次數
-r cli,html,json,junit --reporter-html-export 生成html報告,
應用步驟:
1.匯出用例,環境變數,全域變數,資料檔案,json格式,
2.運行并生成html報告,
newman run "e:\\testcase.json" -e "e:\\huanjing.json" -g "e:\\globals.json" -r
cli,html,json,junit --reporter-html-export "e:\\newmanreport.html"
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/394226.html
標籤:其他
上一篇:SASS------CSS的編程式開發工具相關概念及操作命令
下一篇:【pytest】概述pytest——setup、teardown方法和conftest中的fixture用法,來執行測驗用例的前置/后置條件陳述句操作
