Postman Advanced

Postman là một ứng dụng của Google Chrome, giúp bạn tạo, lưu, gửi request HTTP và kiểm tra độ chính xác của dữ liệu trả về. Nó hỗ trợ quy trình tạo API request và testing API response một cách tự động, hỗ trợ các tester tạo ra những luồng test hiệu quả.

Hầu hết các developers và testers đều đã quen thuộc với Postman. Tuy nhiên, nhiều người sử dụng Postman chỉ để kiểm tra các dữ liệu trả về từ các project mà họ đang làm việc. Có lẽ họ chưa nhận ra những tính năng mạnh mẽ mà Postman cung cấp như: Collections, Tests and Pre-request scripts. Bài viết này muốn đưa ra một cái nhìn tổng quát về các xử lý response mà Postman cung cấp.

Nội dung bài viết:

  1. Convert thành kiểu JSON
  2. Làm việc với dữ liệu trả về
  3. Làm việc với biến môi trường
Trước khi bắt đầu, các bạn xem sơ qua khu vực làm việc với test và Postman cung cấp nhé:

 1  Convert thành kiểu JSON

Postman hỗ trợ hai phương thức để chuyển đổi dữ liệu trả về thành dạng json.
var jsonObject = xml2Json(responseBody); // convert xml thành json
var jsonData = JSON.parse(responseBody); // convert to json  

 2  Làm việc với dữ liệu trả về

Postman cung cấp nhiều cho bạn nhiều cách thức kiểm tra dữ liệu trả về có như mong muốn hay không.
  • tests["Successful POST request"] = responseCode.code === 201 || responseCode.code === 202;  
    Đầu tiên, bạn có thể kiểm tra response code trả về có phải mã code success hay không. Bạn cũng có thể kiểm tra response trả về với mã code error là 400.
     
  • tests["Status code name has string"] = responseCode.name.has("OK");  
    Hay kiểm tra bằng response code name, xem có success hay không.
     
  •   tests["Response time is less than 200ms"] = responseTime < 200;  
    Bên cạnh đó, bạn có thể kiểm tra ràng buộc thời gian từ lúc gửi request đến lúc nhận được response.
Ngoài ra, Postman còn cung cấp nhiều cách để bạn thao tác trực tiếp với dữ liệu trả về:
RESPONSE
{  
  "status": "OK",
  "data": {
     "site_id": 999,
     "expired": 3600,
     "token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1"
  }
}
TEST
var jsonData = JSON.parse(responseBody);

tests["Your test name"] = jsonData.status === 'OK';​

RESULT  PASS
GIẢI THÍCH  Trong dữ liệu response, có một key là status và value của nó là "OK", bạn dùng câu lệnh đó để check xem key status có dữ liệu đúng là "OK" không, nếu đúng thì trả về true, sai thì false
  •   tests["Body matches string"] = responseBody.has("tokens"); 
    Check đoạn text "tokens" có xuất hiện trong dữ liệu response hay không.
  •   tests["Body is correct"] = responseBody === "response_body_string";
    Kiểm tra dữ liệu trả về có bằng với đoạn text mong muốn hay không.
  •   tests["Content-Type is present"] = postman.getResponseHeader("Content-Type") === 'application/json; charset=UTF-8';  
    Kiểm tra trong dữ liệu header được trả về, dữ liệu "Content-Type" có bằng với "application/json; charset=UTF-8" hay không.
Postman còn cung cấp phương thức hỗ trợ kiểm tra kiểu dữ liệu trả về bằng câu lệnh:

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

RESPONSE
{  
  "status": "OK",
  "data": {
     "site_id": 999,
     "expired": 3600,
     "token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1"
  }
}
TEST
var schema = {  
  "status": "string",
  "data": {
    "site_id": "number",
    "expired": "number",
    "token": "string"
  }
};

var jsonData = JSON.parse(responseBody);
tests["Valid Data1"] = tv4.validate(jsonData, schema);​

RESULT  PASS
GIẢI THÍCH  Trong ví dụ này, tạo ra một object có cấu trúc giống cấu trúc của dữ liệu response, rồi thiết lập kiểu giá trị trả về mong muốn cho mỗi key.

 3  Làm việc với biến môi trường

Environment Variables
Environments cung cấp cho các tester khả năng tùy chỉnh giá trị của biến tùy vào yêu cầu sử dụng. Bằng cách này, bạn có thể dễ dàng thay đổi request qua các máy chủ khác nhau mà không cần thay đổi link request.
  • Để thêm biến môi trường, click vào icon Settings
  • Chọn Manage Environment
  • Chọn nút Add
  • Thêm các cặp biến
Postman cho phép tạo nhiều môi trường và ở mỗi môi trường có thể có nhiều biến.

Ví dụ, tạo một môi trường "My Env 01", có biến "main_url" với giá trị là "https://frontend.local".  Tạo thêm một môi trường khác là "My Env 02", cũng có biến "main_url" nhưng với giá trị là "https://frontend.dev". Để sử dụng biến, bạn dùng cặp dấu ngoặc nhọn {{main_url}}.

Lưu ý là trong 1 thời điểm test, thỉ chỉ có 1 môi trường có thể được kích hoạt.

Vài phương thức làm việc với biến Environment:

  •  postman.clearEnvironmentVariable("variable_key");
    Xóa giá trị của biến
  •  postman.setEnvironmentVariable("variable_key", "variable_value");
    Phương thức trên dùng để thay đổi value của biến.
REQUEST
{{main_url}}/api/token
RESPONSE
{  
   "status": "OK",
   "data": {
      "site_id": 999,
      "expired": 3600,
      "token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1"
   }
}
TEST  
var jsonData = JSON.parse(responseBody);
postman.setEnvironmentVariable("token", jsonData.data.token);​
GIẢI THÍCH Trong dữ liệu response, có một key là status và value của nó là "OK", bạn dùng câu lệnh đó để check xem key status có dữ liệu đúng là "OK" không, nếu đúng thì trả về true, sai thì false.
 
REQUEST
{{main_url}}/api/active?token={{token}}
RESPONSE
{  
   "status": "OK",
   "data": {
      "member_id": 888888
   }
}​
TEST  
GIẢI THÍCH  
Global Variables
Global Variables cung cấp một tập các biến sử dụng trong một phạm vi nhất định. Bạn sử dụng biến global giống với cách sử dụng biến môi trường.

Postman cũng cung cấp cho bạn các phương thức để thao tác với biến global:

  •   postman.clearGlobalVariable("variable_key");
    Xóa giá trị của biến global.
  •   postman.setGlobalVariable("variable_key", "variable_value");
    Gán giá trị cho biến global

Kết luận

Nhờ các phương thức nâng cao mà Postman cung cấp, các nhà phát triển và thử nghiệm API dễ dàng tạo ra một quy trình kiểm thử API một cách tự động, giảm thiểu thời gian kiểm tra và đáp ứng thông tin phản hồi nhanh chóng.