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).

I. 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.

II. 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

III. 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ó. Có 1 điểm lưu ý ở đây: “Khi gọi API thành flow nối tiếp nhau thì bạn cần có khả năng extract value của response của API 1 rồi đẩy value đấy vào request của API 2”.

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.

IV. Vậy testers phải làm gì khi nhận yêu cầu test API?

  1. Đọc API documentation: có thể dưới dạng file excel, docs, swagger…Để làm được bước này bạn cần rất vững API là gì, thành phần của API, API hoạt động như thế nào, đại ý vững về Technical (kỹ thuật)
  2. Đọc requirement của dự án rồi viết checklist hoặc testcase cho các API đó theo 3 nội dung I, II, III mình đã nói ở trên. Bạn cần rất vững về Business Requirement.
  3. Chuyển thể những testcase đó thành script cho tools, tùy tools bạn dùng thôi, postman hoặc soapUI, rest-assured. Bạn cần vững về việc sử dụng tools để sao cho hiệu quả nhất

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

4.6 7 votes
Article Rating
Subscribe
Notify of
guest
23 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
learning
learning
6 years ago

Thanks Giang,
Bài viết của bạn rất hay

Truyen
Truyen
5 years ago

Thank anh

Giang
Giang
5 years ago

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.

trackback

[…] error code thì có thể sử dụng response data để verify thêm. Đọc lại bài này để biết cách test API như thế […]

trackback

[…] đề là từng task nhỏ thì mình sẽ sắp xếp như thế nào??? Bài trước, mình đã hướng dẫn với 1 API đơn lẻ có 2 kiểu test tương ứng: 1. Syntax […]

Huy
Huy
5 years ago

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.

Tiêu
Tiêu
5 years ago

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

Trịnh Hoa
Trịnh Hoa
3 years ago
Reply to  Giang Nguyen

Anh Giang cho em xin Skype của anh được không ạ? Em cũng đang tìm hiểu về Test API ạ.
Nếu anh tiện thì add Skype của em nhé: Trinh Hoa (hoatt@viegrid.com)

trackback

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

huong
huong
5 years ago

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!!!

Hằng
Hằng
4 years ago

Chuỗi bài về API testing của a rất tường minh và dễ hiểu với các bạn mới học như em. Cảm ơn a ạ 😀
Nếu anh có thời gian tạo thêm clip minh họa thì quá tuyệt ạ 😀
Ngóng thêm các bài viết tiếp theo của a 🙂

Hoàng Trang
Hoàng Trang
3 years ago

Bài viết của bạn hay mà dễ hiểu lắm, cảm ơn bạn nhiều

_concua_
_concua_
2 years ago

Cảm ơn a Giang ạ