API Testing, Kiến thức chung

JSON là gì? Tester cần biết gì về JSON khi kiểm thử API?

🍀 Nếu bạn là một tester và đang tham gia phát triển phần mềm, đặc biệt là kiểm thử API (API testing), thì JSON là một định dạng dữ liệu rất thường gặp.

Khi gửi request hoặc nhận response từ API, bạn có thể bắt gặp những dữ liệu như:

{
  "id": 101,
  "name": "Nguyen Van A",
  "active": true
}

Vậy JSON là gì? JSON được sử dụng như thế nào trong API? Và Tester cần biết những gì về JSON?

JSON là gì?

JSON là viết tắt của JavaScript Object Notation, là một định dạng văn bản dùng để biểu diễn và trao đổi dữ liệu giữa các hệ thống.

JSON được thiết kế để con người có thể đọc tương đối dễ dàng, đồng thời máy tính có thể phân tích và xử lý. Mặc dù có tên liên quan đến JavaScript, JSON không chỉ được sử dụng với JavaScript. JSON hiện được sử dụng rộng rãi trong nhiều ngôn ngữ lập trình và các hệ thống phần mềm khác nhau.

Trong lập trình liên quan đến API, JSON thường được sử dụng để truyền dữ liệu giữa client và server.

JSON được sử dụng như thế nào trong API?

Ví dụ, một ứng dụng gửi request để tạo tài khoản:

{
  "username": "tester01",
  "email": "tester@example.com",
  "age": 25
}

Phía server có thể trả về kết quả như:

{
  "id": 123,
  "username": "tester01",
  "created": true
}

Trong trường hợp này, JSON là định dạng được sử dụng để biểu diễn dữ liệu trong request và response.

Vì vậy, khi thực hiện kiểm thử API, tester thường xuyên phải đọc, phân tích, và kiểm tra JSON để đánh giá một test case đạt hay không (pass/fail).

Cấu trúc cơ bản của JSON

JSON sử dụng một số thành phần cơ bản để biểu diễn dữ liệu.

Object – Đối tượng

Object được đặt trong dấu {}. Ví dụ:

{
  "name": "Nguyen Van A",
  "age": 25
}

Đối tượng trên bao gồm các cặp key-value.

  • key   → name
  • value → Nguyen Van A

Ví dụ: “name”: “Nguyen Van A”, trong đó: 

  • name là key (khoá)
  • “Nguyen Van A” là value (giá trị)

Array – Mảng

Array được đặt trong dấu [].

Ví dụ:

{
  "products": [
    "Laptop",
    "Mouse",
    "Keyboard"
  ]
}

Trong ví dụ trên, bạn có thể thấy products chứa một danh sách các giá trị. Và array cũng có thể chứa các object khác. Đây là cấu trúc rất thường gặp khi API trả về danh sách dữ liệu.

Ví dụ array chứa các object khác:

{
  "users": [
    {
      "id": 1,
      "name": "An"
    },
    {
      "id": 2,
      "name": "Binh"
    }
  ]
}

JSON có những kiểu dữ liệu nào?

JSON hỗ trợ một số kiểu dữ liệu cơ bản:

  • String
  • Number
  • Boolean
  • Object
  • Array
  • null

Ví dụ:

{
  "name": "An",
  "age": 25,
  "active": true,
  "address": {
    "city": "Ho Chi Minh City"
  },
  "roles": [
    "tester",
    "admin"
  ],
  "phone": null
}

Tester không nhất thiết phải trở thành lập trình viên JSON. Tuy nhiên, Tester cần hiểu các kiểu dữ liệu này để có thể phát hiện những vấn đề trong API response.

Ví dụ:

{
  "age": 25
}

khác với:
{
  "age": "25"
}

Giá trị đầu tiên là number, trong khi giá trị thứ hai là string. Nếu API specification yêu cầu age là number nhưng API trả về string, đây có thể là một vấn đề mà Tester cần phát hiện.

JSON phân biệt chữ hoa và chữ thường

Nội dung bên trong JSON phân biệt chữ hoa và chữ thường.

Ví dụ bên dưới có hai key khác nhau là username và Username:

{ 
  "username": "tester01"
}

và:

{
  "Username": "tester01"
}

Điều này rất quan trọng khi kiểm tra API response.

Nếu specification yêu cầu:

{
  "userId": 123
}

nhưng API trả về:

{
  "userid": 123
}

thì Tester cần xem xét liệu đây có phải là vấn đề hay không.

Tester cần kiểm tra gì trong JSON response?

Khi kiểm thử API, Tester không nên chỉ kiểm tra HTTP Status Code = 200, mà còn cần xem xét nội dung của response.

Ví dụ API trả về:

{
  "id": 101,
  "name": "Laptop",
  "price": 1500,
  "available": true
}

Tester có thể kiểm tra:

1. JSON có đúng cấu trúc không?

Có đầy đủ các field cần thiết không?

Ví dụ:

  • id
  • name
  • price
  • available

2. Kiểu dữ liệu có đúng không?

Ví dụ:

  • id        → number
  • name      → string
  • price     → number
  • available → boolean

3. Giá trị có đúng không?

API có trả về đúng dữ liệu theo yêu cầu không?

Ví dụ:

  • Expected price = 1500
  • Actual price   = 1500

4. Các field có quan hệ đúng với nhau không?

Ví dụ:

{
  "quantity": 2,
  "unitPrice": 100,
  "totalPrice": 200
}

Tester không chỉ kiểm tra từng field dữ liệu mà còn có thể kiểm tra mối quan hệ và kết quả của chúng, ví dụ như totalPrice = quantity × unitPrice.

5. API có trả về dữ liệu không nên xuất hiện không?

Đây cũng là một khía cạnh quan trọng. Nếu password hoặc thông tin nhạy cảm không được phép xuất hiện trong response, đây có thể là một vấn đề cần được phát hiện và báo cáo.

Ví dụ API dành cho người dùng thông thường trả về, trong đó mật khẩu đã được lược bỏ:

{
  "id": 101,
  "name": "An",
  "email": "an@example.com",
  "password": "..."
}

JSON hợp lệ và JSON không hợp lệ

Tester cũng nên biết cách nhận biết JSON hợp lệ.

Ví dụ JSON hợp lệ:

{
  "name": "An",
  "age": 25
}

Ví dụ JSON không hợp lệ:

{
  "name": "An",
  "age": 25,
}

Trong ví dụ thứ hai, dấu , sau 25 khiến JSON không hợp lệ.

Khi API nhận dữ liệu JSON từ client, Tester cũng có thể kiểm thử các trường hợp dữ liệu không hợp lệ để xem hệ thống xử lý như thế nào.

Ví dụ:

  • Thiếu field bắt buộc
  • Sai kiểu dữ liệu
  • Giá trị null
  • Empty string
  • Array rỗng
  • Object rỗng
  • JSON malformed

Đây là một phần “negative testing” khi kiểm thử API.

JSON có liên quan gì đến API Testing?

JSON và API Testing thường xuất hiện cùng nhau nhưng chúng không phải là cùng một khái niệm. Trong đó:

  • API Testing là hoạt động kiểm thử API
  • JSON là một định dạng biểu diễn dữ liệu

Có thể hình dung đơn giản:

API

 ↓

Request

 ↓

JSON data

 ↓

Server

 ↓

Response

 ↓

JSON data

 ↓

Tester kiểm tra

Do đó, hiểu JSON giúp Tester đọc và phân tích API request/response hiệu quả hơn.

Tuy nhiên, API Testing không chỉ kiểm tra JSON.

Tester còn có thể kiểm tra:

  • HTTP Method
  • URL
  • HTTP Headers
  • Authentication
  • Authorization
  • HTTP Status Code
  • Response time
  • Business rules
  • Database/data consistency
  • Error handling

Vì vậy, JSON là một phần kiến thức mà Tester cần biết khi làm API Testing, chứ không phải toàn bộ quá trình kiểm thử API

Tester có cần biết lập trình để đọc JSON không?

Không cần biết lập trình vẫn có thể đọc hiểu JSON.

JSON khá đơn giản và Tester có thể học cách đọc cấu trúc JSON mà không cần phải biết lập trình chuyên sâu.

Tuy nhiên, nếu Tester làm API Automation, việc hiểu JSON sẽ trở nên quan trọng hơn.

Ví dụ automation test có thể cần kiểm tra:

  • response.id == expectedId
  • response.status == “success”
  • response.items.length > 0

Hoặc kiểm tra một JSON response có đúng schema hay không.

Vì vậy:

  • Manual Tester nên biết đọc và phân tích JSON.
  • Automation Tester nên hiểu JSON đủ sâu để có thể thao tác và kiểm tra dữ liệu bằng code.

JSON và XML khác nhau như thế nào?

JSON và XML đều có thể được sử dụng để trao đổi dữ liệu giữa các hệ thống.

Ví dụ cùng một dữ liệu.

JSON:

{
  "name": "An",
  "age": 25
}

XML:

<user>
  <name>An</name>
  <age>25</age>
</user>

JSON thường có cấu trúc ngắn gọn và được sử dụng rất phổ biến trong các API hiện đại.

Tuy nhiên, XML vẫn được sử dụng trong nhiều hệ thống và công nghệ, vì vậy Tester không nên xem JSON là định dạng duy nhất cần biết.

JSON có quan trọng với Tester không?

CÓ, đặc biệt nếu bạn thường xuyên kiểm thử API.

Tester nên có khả năng:

  • Đọc JSON
  • Hiểu object và array
  • Phân biệt các kiểu dữ liệu
  • Kiểm tra cấu trúc JSON
  • Kiểm tra giá trị
  • Kiểm tra dữ liệu thiếu hoặc thừa
  • Phát hiện sai kiểu dữ liệu
  • Kiểm tra dữ liệu không hợp lệ
  • Phân tích JSON request và response

Bạn không nhất thiết phải trở thành chuyên gia về JSON.

Điều quan trọng là có thể đọc JSON và hiểu dữ liệu mà API đang gửi hoặc nhận.

Kết luận

JSON là một định dạng phổ biến để biểu diễn và trao đổi dữ liệu giữa các hệ thống.

Trong API Testing, Tester thường xuyên phải làm việc với JSON trong request và response.

Vì vậy, hiểu JSON là một kiến thức nền hữu ích đối với Tester, đặc biệt khi làm việc với REST API, API Testing và API Automation.

Nếu bạn đang bắt đầu học API Testing, có thể tìm hiểu theo thứ tự:

REST API là gì? → HTTP Status Code → JSON → API Test Case → API Automation

Các kiến thức này bổ sung cho nhau và giúp Tester hiểu rõ hơn cách một API hoạt động cũng như cách kiểm thử API.

You Might Also Like

Leave a Reply

Your email address will not be published. Required fields are marked *