API Testing: JSON và cách làm việc với nó

⏱︎

Read time:

2–3 minutes
Minh họa cấu trúc dữ liệu JSON trong API

Khi test API, phần request body và response body thường được viết dưới dạng JSON. Tester không cần biết lập trình sâu, nhưng cần đọc được cấu trúc JSON, nhận ra kiểu dữ liệu và phân biệt các giá trị dễ gây nhầm lẫn.

JSON là gì?

JSON (JavaScript Object Notation) là định dạng văn bản thường dùng để trao đổi dữ liệu qua API. JSON dễ đọc, nhẹ và hỗ trợ cấu trúc lồng nhau.

{
  "id": 125,
  "name": "Bàn phím",
  "price": 790000,
  "inStock": true,
  "discount": null,
  "tags": ["office", "wireless"],
  "seller": {
    "id": 8,
    "name": "Elite Store"
  }
}

Các thành phần trong JSON

Thành phầnGiải thíchVí dụ
ObjectTập hợp các cặp key–value, đặt trong { }seller là một object
ArrayDanh sách có thứ tự, đặt trong [ ]tags là một array
Key–valueKey là tên thuộc tính; value là giá trị tương ứng"id": 125
StringChuỗi ký tự đặt trong dấu ngoặc kép"Bàn phím"
NumberSố nguyên hoặc số thập phân790000
BooleanGiá trị logictrue hoặc false
nullChủ động biểu diễn không có giá trị"discount": null

Giá trị của một key có thể là string, number, boolean, null, object hoặc array. JSON không có kiểu ngày tháng riêng; ngày giờ thường được truyền dưới dạng string theo format mà API quy định.

Tester làm việc với JSON như thế nào?

  • Kiểm tra đủ field: response có trả đúng các key theo tài liệu API không?
  • Kiểm tra kiểu dữ liệu: price phải là number hay lại trả về string "790000"?
  • Kiểm tra giá trị: tên, giá, trạng thái và dữ liệu lồng nhau có đúng không?
  • Kiểm tra cấu trúc: một field phải là object nhưng server lại trả array, hoặc ngược lại.
  • Kiểm tra trường hợp đặc biệt: field bị thiếu, trả null, chuỗi rỗng hoặc mảng rỗng.
Ví dụ
Requirement quy định inStock là boolean. Nếu API trả "true" trong dấu ngoặc kép, giá trị trông có vẻ đúng nhưng kiểu dữ liệu lại là string. Đây vẫn là lỗi.

Cách lấy một giá trị từ cấu trúc JSON

Trong thực tế, tester thường cần lấy một giá trị cụ thể để kiểm tra. Ví dụ: lấy tên người bán, phần tử đầu tiên trong danh sách tags hoặc tiêu đề bài viết đầu tiên trong response.

JSONPath đơn giản

JSONPath là cách mô tả đường dẫn tới một giá trị trong JSON. Ký hiệu $ đại diện cho phần gốc (root); dấu chấm đi vào một thuộc tính; chỉ số trong ngoặc vuông chọn phần tử của array và bắt đầu từ 0.

Muốn lấyJSONPathKết quả
Tên sản phẩm$.name"Bàn phím"
Tên người bán trong object seller$.seller.name"Elite Store"
Tag đầu tiên$.tags[0]"office"
Tất cả tags$.tags[*]["office", "wireless"]
Mẹo nhớ
$.seller.name có thể đọc từ trái sang phải: bắt đầu từ root → vào object seller → lấy thuộc tính name.

Xem thêm: API Testing (P1): API, Client–Server và REST API và API Testing: Cấu trúc của 1 API.