一、使用postman進行接口測試


接口測試

(一)接口測試

(1)服務器端(server):在使用別人的服務器上,例如微信APP客戶端,服務端在騰訊的服務端上,微信上的賬號信息,聊天記錄均存儲在服務端上;用戶A發送1條信息到服務端上,服務端再把這條信息轉發到用戶B上。

服務器使用的語言分別為:Java、Python、PHP、Go、C、C++等等

(2)客戶端(client):手機上的APP,網站

客戶端使用的語言分別為:object-c(IOS)、Android、HTML、CSS、JS等等

(3)接口:通過客戶端與服務端進行交互的

(4)這么多種類的語言,造成無法識別,需要通用的數據類型進行解析:json{},沒有json之前用的XML格式

  • XML:通用的數據類型

<title>接口測試</title>

<content>服務器與客戶端需要接口進行交互</content>

  • JSON:通用的數據類型,以一種鍵值對來展示:

{

  "title" : "接口測試",

  "content" : "服務器與客戶端需要接口進行交互"

}

 

(二)如何測試接口

1、接口:是由客戶端和服務器來進行交互的,以及接口返回的數據一般都是json格式的數據類型。

2、接口測試基本步驟如下:

(1)在接口文檔中或者其它地方,拿到接口的URL地址

(2)查看接口是用什么方式發生請求(例如:get和post請求)

(3)添加請求頭,請求體

(4)發送查看返回結果,校驗返回結果是否正確

3、打開接口文檔(參考:doc.nnzhp.cn)

(1)URL

(2)請求方式

(3)請求參數

(4)get請求

  • 在瀏覽器上,直接輸入接口文檔中的請求URL:http://api.nnzhp.cn/api/user/stu_info,頁面報錯提示“必填參數未填寫!請查看接口文檔!”(如圖所示)

 

 

 

 

(5)post請求

  • 復制URL在瀏覽器打開,報錯“請求方式錯誤!請查看接口文檔”,例如如圖顯示

 

  • 這時候需要借助postman接口工具進行測試,前提條件:需要本地安裝postman應用軟件(注意:如果是POST請求,選擇Params填寫參數,這時URL中會自動帶上該參數信息,這種請求方式應該是GET請求方式而不是POST請求,如圖:)

 

 

  • POST請求,應該選擇Body選項,勾選“form-data”或者“x-www-form-urlencoded”填寫必填參數,如圖所示:

 

 

  • POST請求,用戶注冊,如圖:

 

  •  POST請求,入參為json類型,如圖:

 

  •  查詢是否存在該學生信息:

 

  •  POST請求,Body選擇form-data,Key由Text切換File格式,進行文件上傳,(注意:x-www-form-urlencoded沒有File格式,只有Text選項,不能上傳多媒體文件)如圖:

 

 4、瀏覽器進行抓包

(1)瀏覽器打開檢查或者開發者工具,再或者檢查元素等控制台

(2)一般查看調用接口Network(網絡)下面的XHR調用了哪些接口

(3)請求url:https://qun.qq.com/cgi-bin/qunwelcome/myinfo?callback=?&bkn=682554596

 

 

 (4)利用Postman接口工具進行調用接口:get_group_list

(5)接口search_group_members,多個參數進行接口測試:

 

 

 

 (6)cookie和session

  • cookie:在瀏覽器存放自己本地信息數據的一個鍵值對(key-value)的地方
    • 保存時間:根據需要設定
    • 保存位置:客戶端
  • session:存放在服務端的一個鍵值對
    • 保存時間:用戶活動時間+一段延遲時間(登錄時提示用戶保存時間7天時間)
    • 保存位置:服務器端

5、GET請求方式和POST請求方式的區別:

(1)GET請求沒有請求體,只要請求頭和URL:host/api/xxx?name=xxx

(2)POST請求是有請求頭、請求體

(3)GET請求沒有POST請求安全

(4)GET請求有參數長度限制,POST沒有

 

(三)postman接口自動化

1、測試銀行項目、金融項目會遇到加密參數,需要:
(1)參數去掉加密

(2)提供一個工具,產生加密后的參數

(3)自己了解加密算法,然后自己加密

2、Postman中手動配置環境變量:

(1)在Postman中,有Environment和Environment,用於實現不同環境的管理,不同服務器環境分別為:

  • Production 生產環境
  • Development 開發環境
  • Local 本地局域網環境

(2)環境快速查看,如圖1所示  :

 

 圖1

(3)使用Environment實現多服務版本管理,點擊右上角的設置,點擊【Manage Environments】,和圖2所示:

 圖2

 

(4)在彈窗【MANAGE ENVIRONMENTS】界面中,右下角點擊“Add”,如圖:

 

(5)在“Add Environment”中,填寫變量名和變量值 ,如圖:

(6)配置好變量名稱和變量值后,可以在請求URL中進行參數化:

 

 

 

 

 

(6)編寫腳本,腳本參數化,如同

 

 

 

 (7)點擊runner,配置運行參數,如同:

 

 

(8)查看最后的運行結果,狀態碼為200 ok,表示運行成功,如圖:

 圖中有個字段是:“This requests does not have any tests.”

需要檢查:

第一步:檢查是否變量名稱是否對應;

第二步:是否點擊了保存,再點擊Runner

第三步:是否添加了校驗

 (9)添加校驗,設置檢查

 

(10) postman斷言:

 

(11) 點擊【Tests】按鈕,右邊欄有個snippets欄,里面是postman內置的測試腳本,輔助接口測試:

A:判斷狀態碼

  Status code : Code is 200

  對應的腳本:

  pm.test("Status code is 200", function () {

       pm.response.to.have.status(200);

        });

B:返回的response包含內容

   Response body : Containing string

     對應的腳本:

     pm.test("Body matches string", function () {
     pm.expect(pm.response.text()).to.include("string_you_want_to_search");
     });

C:返回的json數據中的值

   Response body : JSON value check

      對應的腳本為: 

  pm.test("Your test name", function () {
       var jsonData = pm.response.json();
       pm.expect(jsonData.value).to.eql(100);
       });

D:響應的內容等於一個字符串

  Response body : is equal to a string

  對應的腳本:

       pm.test("Body is correct", function () {

       pm.response.to.have.body("response_body_string");

       });

E:檢查響應頭中是否有Content-Type字段

  Response headers : Content-Type header check

  對應的腳本:

       pm.test("Content-Type is present", function () {

       pm.response.to.have.header("Content-Type");

        });

F:判斷響應的時間少於200MS

  Response time is less than 200ms

       對應的腳本:

       pm.test("Response time is less than 200ms", function () {

       pm.expect(pm.response.responseTime).to.be.below(200);

        });

(12)新建集合便於將個別請求進行分組,如圖:

 

 

(四)HTTP

1、http和https的不同之處:

(1)安全性不同:

http:普通的http請求,,信息明文傳輸信息,不安全;

https:具有安全性的ssl加密傳輸協議,為瀏覽器和服務器之間的通信加密,確保數據傳輸的安全;

(2)連接方式不同:

http的連接很簡單,是無狀態的;

https是由SSL+HTTP協議構建的可進行加密傳輸、身份認證的網絡協議;

(3)端口不同:

http協議:使用的端口是80;

https協議:使用的端口是443;

(4)證書申請方式不同:

http協議:免費申請;

https協議:需要到ca申請證書,一般免費證書很少,需要交費。

2、一般完整的URL為:http://192.168.13.3:80 host/ip:port/api/user/add_stu uri

3、接口HTTP參數

  • http請求方式:
    • get      --- 通過請求URL得到資源
    • POST --- 用於添加新的內容
    • PUT    ---用於修改某個內容
    • DELETE---刪除某個內容
    • CONNECT---用於代理進行傳輸,如使用SSL
    • OPTIONS---詢問可以執行哪些方法
    • PATCH---部分文檔更改
    • PROPFIND(WebDAV)---查看屬性
    • PROPPATCH(WebDAV)---設置屬性
    • MKCOL(WebDAV)---創建集合(文件夾)
    • COPY(WebDAV)---拷貝
    • MOVE(WebDAV)---移動
    • LOCK(WebDAV)---加鎖
    • UNLOCK(WebDAV)---解鎖
    • TRACE ---用於遠程診斷服務器
    • HEAD --- 類似於GET,但是不返回body信息,用於檢查對象是否存在,以及得到對象的元數據
  • http請求頭(headers)
    • 請求頭包含許多有關客戶端環境和請求正文的又用信息。如圖所示:例如語言種類和狀態碼
  • http請求體(body):請求體即為請求等正文。
    • json 格式 
    • xml  格式
    • html 格式
    • 二進制格式(多用於圖片)
    • 字符串格式

 4、用戶接口可以通過以下4種不同方式的請求來做不同的事情:

(1)獲取數據,用“GET”方式,成功了返回HTTP狀態碼:200

(2)創建數據,用“POST”方式,成功了返回HTTP狀態碼:201

(3)修改數據,用“PUT”方式,成功了返回HTTP狀態碼:203

(4)刪除數據,用“DELETE”方式,成功了返回HTTP狀態碼:204

5、HTTP狀態嗎:

 (1)請求消息(1字頭)例如:100 Continue(請繼續)

(2)請求成功 (2字頭)例如:200 OK(請求已成功)

(3) 重定向 (3字頭)例如:300 Multiple Choice(多項選擇,會返回一個選項列表)

(4) 客戶端請求錯誤 (4字頭)例如:400 Bad Request (錯誤請求)  403 Forbidden(禁止)  404 Not Found(沒有找到)

(5)服務器錯誤(5、6字開頭)例如:500 Internal Server(內部錯誤) 502 Bad Gateway(代理或者網關下一鏈路收到未響應) 

詳細查看HTTP狀態碼、HTTP Status Code、HTTP常見狀態碼查詢:https://tool.oschina.net/commons?type=5

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM