API testing với postman (Bài 1)

Testing Sep 03, 2020

1. Cách sử dụng Environments trong postman

- Chức năng chính của Environment là 1 chỗ lưu “biến” giống như “biến” trong code để mình có thể tái sử dụng ở nhiều nơi

- Ứng dụng:

+ Nhanh chóng chuyển qua lại giữa các môi trường Dev và Product mà không cần tạo lại các request mới vì phải thay đổi lại URL

+ Giúp lưu lại giá trị của response API trước để điền vào API sau.

+  Không phải sửa giá trị của các tham số quá nhiều lần.

- Cách tạo environment và cách sử dụng để test API

VD: Cần test api login trên 2 MT test và stg

API: /api/v1/auth/login

Method: post

login_id: 00001

password: 123456

URL MT test: http:/xxxxxxxxx

URL MT stg: https://yyyyyyyyyyyy

Tạo environment:

B1: Vào manage environment

B2: Add thêm Enviroment mới

B3: Điền tên của Enviroment, tên và giá trị của biến.

Dấu checkbox thể hiện rằng: có active cái biến đó hay không

Lấy giá trị của các biến trong request: Chỉ cần viết theo cú pháp {{tên_biến}}: ví dụ: {{url}}

Như hình trên:

1. Chỗ chuyển đổi qua lại giữa các Environment

2. Cách lấy giá trị biến. Lấy đúng sẽ có màu da cam, đưa chuột hover vào thì hiển thị giá trị của biến.

3. Nếu tên biến có màu đỏ có nghĩa là không có biến này trong Environment, chuyện này thường xảy ra khi chuyển đổi qua lại giữa các môi trường của các dự án khác nhau, hoặc đã inactive cái biến đó.

2. Test Response

Phần này cung cấp 2 tính năng cực hay giúp người test đẩy nhanh được tốc độ test API:

-  Check tự động kết quả trả về của từng field với 1, 2 dòng code, rất dễ, không cần biết code cũng làm được.

- Lưu giá trị của Response thành biến trong Environment để tiếp tục truyền vào param của API tiếp theo.

- Postman cung cấp một khung làm việc để ta có thể làm việc, chỉ hỗ trợ ngôn ngữ Javascript thuần

- Ở phần số 2 là tập hợp những cú pháp Postman cung cấp sẵn cho người dùng

+ Sau đây sẽ lấy ví dụ về 2 tính năng trên:

VD1: Vẫn sử dụng API login ở trên, kiểm tra các giá trị trả về có đúng hay không, sử dụng cấu trúc postman cung cấp sẵn Response body: JSON value check để kiểm tra các giá trị response trả về có bằng với giá trị cần so sánh không

Code:

pm.test("Your test name", function () {  // funtion trả về các kết quả thực thi
var jsonData = pm.response.json(); // parse chuyển data trả về từ response
pm.expect(jsonData.value).to.eql(100); // kiểm tra xem thuộc tính value trong response có trả về có 100 hay không
});

Trong đó: Your test name (tên ta đặt cho function), value (vị trí của biến ta cần kiểm tra), ta có thể thay tham số 100 bằng số khác để so sánh

Thực hành cụ thể :

B1: chạy thử api 1 lần để xem cấu trúc của response

Kiểm tra vị trí của biến cần test

Ví dụ “role” nằm ở vị trí root>user>id

B2: Viết test

Ví dụ muốn kiểm tra role của user có bằng 2 hay không ta viết test trên postman như sau:

pm.test("Check role", function () {
var jsonData = pm.response.json();
pm.expect(jsonData.user.role).to.eql(2);
});

B3: Sau khi viết test xong thì ấn send lại request và kiểm tra kết quả test ở phần test result

VD2 : So sánh kết quả trong response trả về với 1 biến trong env

Trước tiên ta thêm 1 biến key vào env

B2: Viết Test dựa vào các cấu trúc postman cung cấp sẵn:

Get an environment variable

Response body: JSON value

Check kết quả trả về:

Ví dụ 3: Tôi có 1 API login, sau khi login tôi muốn lưu lại giá trị của token để làm data cho những API tiếp theo

T sẽ viết test sử dụng cấu trúc Set an environment variable

pm.test("Ta da set gia tri token vao env", function () {
var jsonData = pm.response.json();
pm.environment.set("token", jsonData.token_type + " " + jsonData.access_token );
})

Kiểm tra kết quả test

Kiểm tra xem đã thêm token vào env chưa

Tiếp đó chạy API để lấy danh sách các sp recommend

/api/v1/products/recommend

Có thể tham khảo thêm cách viết Test ở đây: https://learning.postman.com/docs/writing-scripts/script-references/test-examples/

3.Collection runner

-  Một dự án thì có quá nhiều API và quá nhiều task khác nhau, mỗi task là 1 tập hợp của 1 vài API thì phải giải quyết như thế nào.Không thể dùng mãi cách test API theo cách “thủ công”, ấn SEND check từng API.

Có một giải pháp: Postman cung cấp tính năng run List API theo Folder bằng tính năng Runner.

Bước 1) Kích trên nút Runner ở góc trên bên cạch nút Import

Bước 2) Trang Collection Runner sẽ xuất hiện như bên dưới

Mô tả các trường:

1. Chọn các collection ở đây. Nếu có sub-folders bạn sẽ cần phải chọn subfolder đó

2. Đừng quên chọn environment nếu bạn có một environment đặt biệt

3. Chọn số lần bạn muốn lặp lại

4. Chọn khoản thời gian chờ để tránh lỗi xảy ra

5. Nếu bạn sử dụng data file, hãy chọn ở đây

Bước 3) Chạy Postman Test Collection bằng cách thiết lập sau:

● Chọn Postman test collection- Thiết lập Iterations là 3

● Thiết lập Delay là 2500 ms

Kích nút Run Postman Test…

Bước 4) Chạy và Results page sẽ hiển thị sau khi bạn click Run button. Lệ thuộc vào thời gian chờ, bạn sẽ thấy các test case chạy

1. Mỗi test case hoàn thành, bạn sẽ thấy test status là Passed hay Failed và kết quả của mỗi lần lặp lại

2. Bạn thấy Pass status cho Get Requests

3. Vì chúng ta chưa viết test case cho Post Request, nên sẽ có messege rằng "This request does not have any tests"

Ở đây, bạn có thể thấy được test trong request của bạn, có thể check xem HTTP request có thành công hay không và data đã được tạo hay trả về chưa.

Bài 1 về API testing với postman đã xong. Hy vọng kinh nghiệm trên sẽ có ích cho các bạn trong quá trình thực hiện kiểm thử.

Hãy like và comment để mình tiếp tục viết bài nữa nhé ^^

Đồng tác giả: --LoanPTH & NgaNTT--

Tags

Great! You've successfully subscribed.
Great! Next, complete checkout for full access.
Welcome back! You've successfully signed in.
Success! Your account is fully activated, you now have access to all content.