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

16 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

  2. Anh ơi, vậy có phải như case Update profile trên, các bước 4 5 6 đều được viết trọng 1 case không ạ? Nhưng ở đoạn dưới anh viết “hãy để mỗi trường hợp là 1 API riêng biệt” là sao ạ? Em thấy phần này hơi khó hiểu.

  3. Pingback: API Testing với Postman (Phần 14) – Những lưu ý khi code API test | GiangTester Blog

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

  5. Mình đang tìm hiểu về test API, các bài viết của bạn rất hay, dễ hiểu, mong được đọc thêm nhiều bài viết hay của bạn về Postman nói riêng cũng như về testing nói chung.

  6. Hic anh ơi, chắc não của em hơi chậm hiểu nên đọc hết series của anh rồi mà em vẫn chưa hình dung ra cách phải bắt đầu test API từ đâu và test như thế nào ạ. Test API như nào mà hay sử dụng và áp dụng được luôn vào từng dự án bất kỳ ạ.
    Và cách test API với Postman nữa ah
    Nhờ anh khai sáng giúp em với ạ.:(. em cảm ơn a

    • Hi em. Những bài anh viết là bài hướng dẫn cho test API rồi đấy.
      – Bắt đầu test API từ đâu –> Viết testcase cho API là việc đầu tiên
      – Test API gồm 3 mục: Syntax, Function và scenarios. Em nên bắt đầu với testcase cho syntax trước.
      – Em chưa hiểu rõ API nên em đọc xong series vẫn chưa biết phải làm gì, chứ Postman chỉ là công cụ, còn nhiều công cụ khác test API ngoài Postman.
      Em có thể add skype anh nếu cần support.

  7. Pingback: API Testing với Postman (Phần 11) – Xây dựng API Document | GiangTester Blog

  8. Hi Giang,

    Minh dang co du an test APi ma van chua biet cach test la sao cho hop ly sau khi doc bai cua ban.
    Mong duoc ban giup do.
    Cho minh xin skype cua Giang voi duoc khong?

    Thank you!!!

Leave a Reply

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