+1

API testing - Validate json schema - Phân biệt và sử dụng các loại variables

Validate json schema

I. Json Schema là gì? Dùng làm gì?

1.ĐỊNH NGHĨA

  • Schema nghĩa tiếng anh là khung, giống như outline hoặc model.

"JSON Schema is a vocabulary that allows you to annotate and validate JSON documents."

Tham khảo: HTTPS://JSON-SCHEMA.ORG/

  • Từ bản Mô tả data format của json –> Chúng ta áp dụng kiểm tra cấu trúc dữ liệu json khi làm API test. Nói đơn giản, chúng ta chỉ kiểm tra cái khung của response thôi, chứ không kiểm tra data của response.
  1. VẬY KHI NÀO THÌ DÙNG CÁI NÀY?

Khi mình muốn verify nhanh, không muốn mất quá nhiều thời gian vào việc viết test check từng data trong response. Khi mình không biết phải test data trong response như thế nào?

Ví dụ: có 1 API trả về 1 list các quyển sách, bạn không biết được số lượng chính xác là bao nhiêu quyển và có những quyển sách nào, chỉ biết cấu trúc response –> chỉ verify được cấu trúc của response.

II. Cách thực hiện

  1. RESPONSE LÀ OBJECT Test sẽ là:
const schema = {
  "type": "object",
  "properties": {
    "id": {"type": "number"},
    "firstName": {"type": "string"},
    "lastName": {"type": "string"},
    "email": {"type": "string"},
    "programme": {"type": "string"},
    "courses": {"type": "array"}
  },
// Field nào là bắt buộc thì liệt kê ở phần require
  "require": ["id", "courses"]
};

pm.test("Validate schema", () => {
    pm.response.to.have.jsonSchema(schema);
});

URL cho bạn muốn thử: https://run.mocky.io/v3/a7b67072-41b3-4a4b-89b8-a540bc17b08b

Type dữ liệu là những loại sau đây:

  • String
  • Number
  • Boolean
  • Null
  • Object
  • Array

Run trên postman:

  1. KHI CÓ NESTED OBJECT

Test sẽ là:

const schema = {
    "type": "object",
    "properties": {
        "code": { "type": "string" },
        "error": {
            "type": "object",
            "properties": {
                "message": { type: "string" }
            },
            "required": ["message"]
        }
    },
    "required": ["code", "error"]
};

pm.test("Validate schema", () => {
    pm.response.to.have.jsonSchema(schema);
});

URL cho bạn muốn thử: https://run.mocky.io/v3/79fd4165-de48-41d9-bfab-822ce724a5e0

III. Tổng kết

Thực ra thì schema còn khá nhiều thứ phức tạp và loằng ngoằng, thiết nghĩ mình cũng không cần thiết đến mức đó, dừng lại ở mức cơ bản, kiểm tra type và required fields chắc cũng đủ rồi. Nếu bạn thấy hứng thú, muốn tìm hiểu thêm thì vào đây.

Phân biệt và sử dụng các loại variables

I. Cách sử dụng các loại biến trong postman script

Trong postman có nhiều loại biến với các mục đích khác nhau, bạn nên biết những function cơ bản với những loại biến này để viết script được nhanh và pro hơn.

  1. BIẾN GLOBAL
#	GLOBAL
Goals	Nhiều mục đích, chủ yếu để quick test, và tất cả các request đều có thể sử dụng.
Set	    pm.globals.set(‘myVariable’, MY_VALUE);
Get	    pm.globals.get(‘myVariable’);
Remove	pm.globals.unset(‘myVariable’);
Clear	pm.globals.clear();
  1. BIẾN COLLECTION
#	COLLECTION
Goals	Dùng lúc nào thì dùng. Haizz nói chung mình không nghĩ ra tác dụng. T_T.           Chỉ có sử dụng với các request nằm trong 1 collection
Set	    pm.collectionVariables.set(‘myVariable’, MY_VALUE);
Get	    pm.collectionVariables.get(‘myVariable’);
Remove	pm.collectionVariables.unset(‘myVariable’);
Clear	pm.collectionVariables.clear();
  1. BIẾN ENVIRONMENT
#	ENVIRONMENT
Goals	Dùng riêng cho các môi trường khác nhau của app, có thể lưu các biến mà           khác nhau ở mỗi môi trường như URL, username/password, hoặc các data mà           dùng cho các request tiếp theo.
Set	    pm.environment.set(‘myVariable’, MY_VALUE);
Get	    pm.environment.get(‘myVariable’);
Remove	pm.environment.unset(‘myVariable’);
Clear	pm.environment.clear();
Show    pm.environment.name
name	
  1. BIẾN LOCAL

Biến này chỉ khởi tạo khi ấn request bắt đầu và clear toàn bộ khi finish khi request kết thúc.

#	LOCAL
Goals	Chỉ dùng trong vòng đời của 1 request
Set	    pm.variables.set(‘myVariable’, MY_VALUE);
Get	    pm.variables.get(‘myVariable’);
Remove	pm.variables.unset(‘myVariable’);
Clear	pm.variables.clear();
  1. BIẾN ITERATION

Đọc thông tin từ file data dạng csv hoặc json.

#	DATA
Goals	Chỉ work khi dùng với chức năng đọc file data từ CSV hoặc JSON file từ             Runner hoặc Newman
Get	    pm.iterationData.get(‘myVariable’);

II. Cách lấy giá trị các biến Dynamic

Một thời gian dài trước đây, team postman nhận rất nhiều phản hồi của người dùng về việc thêm thư viện để fake data vào trong postman. Và cuối cùng, team postman đã thỏa mãn người dùng bằng việc cho thêm vào postman rất nhiều biến dynamic, có nghĩa là dummy data mỗi lần run. Ví dụ mỗi lần run, mình lại có 1 random ip.

  1. CÁCH GỌI BIẾN BÊN NGOÀI SCRIPT

Sử dụng cú pháp:

{{$ten_bien}}   // Ví dụ: {{$randomIP}}

Ví dụ: III. Tổng kết

Trong postman, có rất nhiều loại biến với scope khác nhau, các bạn có thể thử và tìm cho mình những cách sử dụng thích hợp để có thể sử dụng postman một cách linh hoạt.


All Rights Reserved

Viblo
Let's register a Viblo Account to get more interesting posts.