Cách test API như thế nào?

Sau khi đọc xong series “test API với Postman” của mình, các bạn có thể nắm được cái kiến thức cơ bản của API và các chức năng của Postman đem lại. Nhưng cách sắp xếp test và viết Testcase cho API như thế nào thì vẫn có vẻ chưa thông lắm, nên hôm nay mình sẽ viết 1 bài về cách test API như thế nào cho hợp lý.

Nhắc lại kiến thức 1 chút: API chỉ là cầu nối nói chuyện giữa Client và Server. API không thực hiện 1 business logic nào cả, đơn thuần chỉ là thằng đi giao thư, chuyển thông tin thôi. Thế test API là test thằng giao thư ah? Hay là test cái gì? Xin được phép trả lời luôn: mình dùng API để test business logic ở phía server. Hãy xem ví dụ dưới đây để hiểu rõ hơn.

Ví dụ:
Tôi muốn check API update_profile gồm 2 trường Name và Birthday. Trong đó trường Name là bắt buộc và phải lớn hơn 4 ký tự. Trường Birthday thì không bắt buộc nhập.

Cách xử lý của Server và Client (có thể không giống với cty bạn):

  1. User vào màn hình Profile, sửa lại 2 trường Name và Birthday.
  2. User ấn vào nút Update Profile (Code ở client sẽ check điều kiện của trường Name, nếu đúng thì submit gửi API, gọi là request, nếu sai sẽ hiện thông báo tương ứng).
  3. Thông tin mới gồm Name và Birthday theo phong bì thư của API cập bến Server.
  4. Server đọc thư và check điều kiện lại 1 lần nữa.
  5. Nếu các thông tin Name và Birthday đều Valid thì 2 thông tin đó được cập nhật vào Database.
  6. Server trả lại thông tin, gọi là response, về lại cho client thông báo rằng nó đã cập nhật thành công.
  7. User nhìn thấy Name và Birthday của mình đã được thay đổi ở màn hình Profile.

Khi thực hiện test API, chính là việc chúng ta test các bước 4, 5 và 6. Dó đó, với 1 API đơn lẻ, chúng ta sẽ check 2 phần chính:
– tạm gọi là Syntax Testing (Validate dữ liệu – bước 4 + bước 6)
– và Funtional Testing (Test business logic – bước 5 và 6).

Syntax Testing

Loại này sẽ tập trung vào cái Method check điều kiện: Accept với data đúng và Reject với data sai hay không. Một vài ví dụ:

  • Bỏ trống trường bắt buộc → Trong Response sẽ phải có thông báo lỗi, các thông tin khác không được cập nhật. Server không thực hiện 1 business logic nào cả.
  • Bỏ trống trường không bắt buộc → Không có lỗi gì cả, Server vẫn thực hiện business logic.
  • Điền các thông tin sai kiểu định dạng, ví dụ trường thời gian lại điền chữ → Trong Response sẽ phải có thông báo lỗi…

Chốt lại: Cái này giống hệt như những trường hợp Validate dữ liệu, chúng ta vẫn hay làm hàng ngày.

Functional Testing

Loại này check các Method xử lý dữ liệu và thực hiện 1 chức năng có đúng hay không. Ví dụ:

  • Giá là X và số phần trăm discount là Y thì số tiền phải trả là X*(1-Y) hay không → Nó chính là việc test Method tính toán với các tham số X và Y mà thôi. Việc thực hiện business logic có thể không lưu kết quả vào DB.
  • Việc Update trường Name ở ví dụ ban đầu có được lưu vào DB hay không? → mở DB ra và check kết quả.
  • Yêu cầu trả về thông tin của những user có tên là “Nam” → Vào DB thực hiện câu Query và so sánh với Response xem 2 kết quả có khớp nhau hay ko…

 

Ấy ấy, chưa hết nhé. =)))) 2 cái loại test trên phục vụ cho test các API đơn lẻ thôi. Còn nữa

Test scenarios

Cuối cùng là ta ghép các API lại với nhau sẽ nó có bị lỗi ở đâu không? Chỗ này chính là những cái Test Suite, gộp nhiều Test Case lại.

Ví dụ như hình:

Phần này chắc mình cũng không phải nói nhiều, các bạn cũng đã quá quen thuộc với nó.

 

Lưu ý của test API:

  1. Khi sử dụng Postman, hãy để mỗi trường hợp là 1 API riêng biệt, không test đè lên nhau, sau khó kiểm soát và không tạo được test case cho automation.
  2. Để không phải căng mắt check từng response của các trường hợp đơn lẻ, hãy đọc lại bài 9.

 

Bài viết dựa trên bài “API testing best practices” của Bas Dijkstra

API Testing với PostMan (Phần 12) – Run Test Suites từ Runner

3 thoughts on “Cách test API như thế nào?

  1. Pingback: API Testing với Postman (Phần 12) – Run Test Suites từ Runner | GiangTester Blog

Leave a Reply

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