1. 程式人生 > >Postman介面&效能測試

Postman介面&效能測試

Postman介面測試例項

 Postman是一款功能強大的網頁除錯與傳送網頁HTTP請求的Chrome外掛。它提供功能強大的 Web API & HTTP 請求除錯。

1、環境變數和全域性變數設定

環境變數可以使用在以下地方:

  • URL
  • URL params
  • Header values
  • form-data/url-encoded values
  • Raw body content
  • Helper fields

先設定好變數名及數值後,接下來就可以呼叫環境變數名,例如:

key對應的values,填寫{{address}},注意需要用雙花括號引用。

全域性變數設定方法跟環境變數一樣,點選"Globals" 後就會出現新增環境變數類似的頁面,進行變數和值的設定。

 

全域性變數設定應用於整個(Collection)中的請求

GET 和POST 的區別:

  • GET 使用URL 或Cookie 傳參,而POST將資料放在Body 中。
  • GET的URL 在長度上會有限制,而POST沒有。
  • POST比GET相對安全,因為在位址列不可見。
  • 一般POST請求用來獲取資料,POST請求用來發送資料。

2、Get請求:

 

參考開發提供的介面設計文件,提供傳引數據錄入。

3、post請求:

如常見基本認證的登入用的較多,使用者名稱和密碼也可以通過設定的環境變數獲取。Postman支援不同的認證機制如: Basic、Digest、OAuth等),支援收到響應語法高亮(HTML\JSON\XML等)。

 

下面舉一個添加發佈會介面例子開展:

選擇form-data方式傳參傳送。

一、Body:

1. form-data
  就是http請求中的multipart/form-data,它會將表單的資料處理為一條訊息,以標籤為單元,用分隔符分開。既可以上傳鍵值對,也可以上傳檔案。當上傳的欄位是檔案時,會有Content-Type來說明檔案型別;content-disposition,用來說明欄位的一些資訊;由於有boundary隔離,所以multipart/form-data既可以上傳檔案,也可以上傳鍵值對,它採用了鍵值對的方式,所以可以上傳多個檔案。
2.x-www-form-urlencoded
  就是application/x-www-from-urlencoded,會將表單內的資料轉換為鍵值對
3.raw
  可以上傳任意格式的文字, 可以上傳text、 json、 xml、 html等
 4.binary
   相當於Content-Type:application/octet-stream 只可以上傳二進位制資料,通常用來上傳檔案,由於沒有鍵值,所以, 一次只能上傳一個檔案。

  二、Pre-requestScript 的使用

 對於環境變數和全域性變數的使用,除了上面所講的方法外,也可以用Pre-requestScript 方法。

以login介面為例,在"Pre-requestScript"中設定環境變數 "username", "password",在Body 中選取"form-data" 格式,輸入所需的key-value, value即為變數{{username}}, {{password}}。
  三、Tests使用(斷言) 所謂斷言,主要用於測試返回的資料結果進行匹配判斷,匹配成功返回PASS,失敗返回FAIL。 下圖方法一,直接點選右側例子函式,會自動生成出現在左側視窗指令碼,只需修改資料即可。 方法二:直接自己寫指令碼,如下圖所示:
 常用tests用法如下:

1.檢查response body中是否包含某個string
tests["Body matches string"] = responseBody.has("string_you_want_to_search");

注意:"Body matches string" 需唯一。

2.檢測JSON中的某個值是否等於預期的值
var data = JSON.parse(responseBody);
tests["Your test name"] = data.value === 100;

JSON.parse()方法,把json字串轉化為物件。parse()會進行json格式的檢查是一個安全的函式。 

如:檢查json中某個陣列元素的個數(這裡檢測programs的長度)
var data = JSON.parse(responseBody);
tests["program's lenght"] = data.programs.length === 5;

3.檢查response body是否與某個string相等
4.轉換XML body為JSON物件
var jsonObject = xml2Json(responseBody);

tests["Body is correct"] = responseBody === "response_body_string";

5.測試response Headers中的某個元素是否存在(如:Content-Type)
tests["Content-Type is present"] = postman.getResponseHeader("Content-Type"); 
//getResponseHeader()方法會返回header的值,如果該值存在

或者: 

tests["Content-Type is present"] = responseHeaders.hasOwnProperty("Content-Type");
上面的方法,不區分大小寫。下面的方法,要區分大小寫。

6.驗證Status code的值

tests["Status code is 200"] = responseCode.code === 200;

7.驗證Response time是否小於某個值
tests["Response time is less than 200ms"] = responseTime < 200;

8.name是否包含某個值
tests["Status code name has string"] = responseCode.name.has("Created");

9.POST 請求的狀態響應碼是否是某個值
tests["Successful POST request"] = responseCode.code === 201 || responseCode.code === 202;

10.很小的JSON資料驗證器

var schema = {

"items": {

"type": "boolean"

}

};

var data1 = [true, false];

var data2 = [true, 123];

console.log(tv4.error);

tests["Valid Data1"] = tv4.validate(data1, schema);

tests["Valid Data2"] = tv4.validate(data2, schema);

4、傳參場景(比如測試登入介面需要不的賬號,密碼)

在介面測試過程中,有的時候需要構建多組同類型資料測試(正常資料,異常資料),當然沒必要寫多條測試用例,可使用CSV格式傳參
舉個例子,在測試使用者登入介面的時候,需要使用者輸入相應的手機號和密碼
那麼,需要構建的測試資料有:手機號&密碼正確,手機號正確&密碼錯誤,手機號錯誤&密碼正確,手機號為空&密碼不為空,手機號正確&密碼為空,手機&密碼均為空。
如post請求:/api/login?phone={{phone}}&password={{password}}
a、可本地建立一個txt文件,並編輯資料,資料的頭部必須引數名稱保持一致,也就是phone和password,資料如下:

b、然後選擇批量執行,即collection runner,操作如下:

資料預覽圖,如下:

c、最後點選執行就OK,可以在collection runner->Run Results檢視執行結果。

5、壓力測試

壓力測試只能以資料夾的方式執行多個介面,不能單獨執行。

 

設定併發10次。執行後結果:

 以上是postman基本操作總結。具體詳細可參考官方樣例:https://learning.getpostman.com/docs/postman/scripts/test_examples/