Khi đã nắm vững API là gì, thành phần và cách thức hoạt động của API. Hôm nay, chúng ta sẽ tìm hiểu về cách sắp xếp test và viết Testcase cho API như thế nào, bài này viết 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ế test API là test thằng giao thư? Hay là test cái gì? 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):
- User vào màn hình Profile, sửa lại 2 trường Name và Birthday.
- 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).
- Thông tin mới gồm Name và Birthday theo phong bì thư của API cập bến Server.
- Server đọc thư và check điều kiện lại 1 lần nữa.
- 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.
- Server trả lại thông tin, gọi là respone, về lại cho client thông báo rằng nó đã cập nhật thành công.
- 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…
Tóm 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…
Chưa hết, hai 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”
IV. Vậy testers phải làm gì khi nhận yêu cầu test API?
- Đọ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)
- Đọ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 đã nói ở trên. Bạn cần rất vững về Business Requirement.
- Chuyển thể những testcase đó thành script cho tools, tùy tools bạn dùng thôi, Postman hoặc SoapUI,…. Bạn cần vững về việc sử dụng tools để sao cho hiệu quả nhất.
Ng