Api testing là gì

Để Tester thực hiện được tốt việc test API thì ngoài các kiến thức về Testing, Tester còn cần trang bị thêm các kiến thức, hiểu biết về Web service, URL, HTTP, HTTP Status code, JSON, XML…

Trong bài này tôi sẽ giới thiệu sơ bộ các kiến thức liên quan đến API, các loại API testing, Test-case cơ bản và ví dụ demo với test tools.

Bạn đang xem: Api testing là gì

API là gì?

API là viết tắt của Application Programming Interface, là tập hợp các Routines, Protocols, Tools kết nối với các ứng dụng hoặc APIs khác.

Routines còn được gọi là Procedure, Function, hoặc Subroutine để thực hiện một task cụ thể nào đó.

Protocols là một định dạng để truyền dữ liệu giữa 2 hệ thống

Sử dụng API là cách để một chương trình phần mềm hoặc hệ thống tương tác với các chương trình phần mềm hoặc hệ thống khác . API đóng vai trò như một giao diện giao tiếp giữa các hệ thống hoặc phần mềm với nhau.

Việc thực hiện API Testing sẽ đảm bảo cho các hệ thống hoạt động một cách chính xác và liền mạch như mong muốn.


*

*

Giao tiếp của API với các hệ thốngTìm hiểu một số Kiến thức cơ bản liên quan đến API

Với các bạn đã biết các kiến thức này thì có thể bỏ qua và đọc phần liên quan đến testing phía dưới.

URL : Tham khảo https://vi.wikipedia.org/wiki/URL

HTTP: Tham khảo https://en.wikipedia.org/wiki/Hypertext_Transfer_Protocol

HTTP Methods:

GET: Sử dụng để lấy thông tin từ server theo URI đã cung cấp.HEAD: Giống với GET nhưng response trả về không có body, chỉ có header.POST: Gửi thông tin tới sever thông qua các parameters HTTP.PUT: Ghi đè tất cả thông tin của đối tượng với những gì được gửi lên.PATCH: Ghi đè các thông tin được thay đổi của đối tượng.DELETE: Xóa resource trên server.CONNECT: Thiết lập một kết nối tới server theo URI.OPTIONS: Mô tả các tùy chọn giao tiếp cho resource.TRACE: Thực hiện một bài test loop-back theo đường dẫn đến resource.

HTTP Status Code:

• 1xx — Informational

• 2xx — Success ( e.g. 200 Success)

• 3xx — Redirection ( e.g. 302 Temporary Redirect)

• 4xx — Client Error ( e.g. 400 Bad Request, 404 Not Found )

• 5xx — Server Error (e.g. 500 Internal Server Error)

Tham khảo chi tiết ở : https://httpstatuses.com/

JSON: Tham khảo https://www.json.org/json-en.html

XML: Tham khảo https://www.w3schools.com/xml/xml_whatis.asp

RESTful API là gì?

REST: là một dạng chuyển đổi cấu trúc dữ liệu, một kiểu kiến trúc để viết API. Nó sử dụng phương thức HTTP đơn giản để tạo cho giao tiếp giữa các máy. Vì vậy, thay vì sử dụng một URL cho việc xử lý một số thông tin người dùng, REST gửi một yêu cầu HTTP như GET, POST, DELETE … đến một URL để xử lý dữ liệu.

RESTful API: là một tiêu chuẩn dùng trong việc thiết kế API cho các ứng dụng Web (như thiết kế Web services), để tiện cho việc quản lý các resource. Nó chú trọng vào resource hệ thống (như: tệp văn bản, ảnh, âm thanh, video, hoặc dữ liệu động…), bao gồm các trạng thái resource được định dạng và được truyền tải qua HTTP.

REST hoạt động dựa chủ yếu trên phương thức CRUD ( Create, Read, Update, Delete) tương đương với 4 giao thức HTTP: POST, GET, PUT, DELETE.


*

*

Các loại API Testing

Sau đây là các loại test cần thực hiện trong API Testing

Functional Testing: Đảm bảo tất cả input và output của API đều hoạt động đúng và liền mạch trong hệ thống.Reliability Testing: Đảm bảo API hoạt động đúng khi tương tác với các thiết bị khác và không bị ngắt kết nối giữa chừng.Load Testing: Khi có nhiều request gửi đến API xử lý thì cần đảm bảo luôn có API response trả về đúng như kết quả mong muốn.Stress Testing: Cần phải check trường hợp khi API nhận được nhiều hơn lượng request mà nó có thể xử lý. Khi đó API sẽ xử lý thế nào? Có gửi message nào không? có hoạt động như đúng yêu cầu không?Security Testing: Cần đảo bảo API luôn có authentication, permissions, access controls, các data gửi đi luôn được mã hóa, các nội dung data được gửi đi-đến luôn đảm bảo trong đúng yêu cầu.

Xem thêm: Scd: Ctcp Nước Giải Khát Chương Dương Chính Hãng Giá Tốt Tại Bachhoaxanh

Integration Testing: Các giao tiếp của API là liền mạch và đúng cách. Việc thêm, bớt, hoặc sửa chữa API không làm ảnh hưởng hoặc xảy ra lỗi đến các API khác.Usability Testing: Đảm bảo API dễ dùng và thân thiện với user.Testcase cho API testing

Trước hết chúng ta xem xét ví dụ sau:

Dưới đây là API create user, API sẽ gửi request POST với data gồm user name và job title như sau:

https://reqres.in/api/users

{ “name”: “UserTestAPI”, “job”: “leader”}

API xử lý thành công, nhận được Response thông báo đã tạo thành công và trả về thông tin JSON data chi tiết như sau;

Response code: 201

{ “name”: “UserTestAPI”, “job”: “leader”, “id”: “435”, “createdAt”: “2020–09–16T07:22:50.021Z”}

Với một API như trên thì chúng ta cần có những testcase kiểm tra các trường hợp sau:

Testcases check giá trị trả về dựa trên điều kiện input

Với ví dụ trên thì cần kiểm tra xem thông tin status code có đúng trường hợp không, “name” và “job” đã chính xác và hợp lệ chưa, date time có chính xác với thời gian gửi request không, về thông tin “id" thì tùy thuộc vào yêu cần hoặc đặc tả kỹ thuật của dự án mà kiếm tra( kiểu như: id tự tăng, duy nhất…).

Thông thường khi tôi thực hiện test những case này, ngoài việc kiểm tra request/ response của API thì tôi sẽ kết hợp kiểm tra luôn hoạt động ở Frontend, Backend và Database để đảm bảo dữ liệu xuyên suốt và luôn đúng.

Vì vậy để đỡ tốn effort cho việc viết testcase và execute test thì trong 1 testcase các bạn nên lồng vào các bước kiểm tra trên và expected result cụ thể cho mỗi step.

Testcases check trường hợp không trả về giá trị gì

Khi kiểm tra APIs, các bạn phải nên giả lập trường hợp này, rất nhiều bạn Dev làm việc với tôi bảo rằng nó không thể xảy ra. Tin tôi đi, không gì là không thể, vậy nên để chắc chắn các bạn nên giả lập trường hợp lỗi không trả về và hãy kiểm tra xem lúc đó API hay hệ thống của bạn có tình trạng như thế nào, nó xử lý ra làm sao.

Testcases check trường hợp tác động đến APIs or Events khác

Nếu output của API này là input của APIs khác hoặc có tác động đến APIs/Events/Interrupts khác thì cần check cụ thể các tác động hoặc input đó. Cần check xem APIs/Events/Interrupts có hoạt động như ý muốn không, dữ liệu chuẩn xác không.

Vd: Sau khi API create user mới thành công thì sẽ gọi luôn đến API list user (https://reqres.in/api/listusers), Vậy thì chúng ta cần check xem ở trong list user có hiển thị thông tin user mới tạo không, nếu có thì cần kiểm tra tiếp xem thông tin đã đầy đủ và chính xác ở trong list chưa.

Testcases check trường hợp cập nhật data structure

Khi thay đổi data structure của API ( thêm, sửa, xóa, đổi kiểu dữ liệu …) thì các bạn cần cẩn thận check lại các testcase hoặc APIs liên quan đến dữ liệu đã sửa đổi đó.

Vd: Với API create user cần bổ sung thêm thông tin “email", “password", vậy thì bạn cần update các testcase và thực hiện test lại toàn bộ case tạo user có liên quan, nên nhớ đừng chỉ test lại mỗi trường hợp thêm email, password hãy test lại toàn bộ các case tích hợp cần thiết để đảm bảo API luôn xử lý đúng. Ngoài ra bạn cũng cần update testcase và test lại các case có liên quan đến chức năng List User.

Testcases check trường hợp thay đổi Resource

Khi API cần thay đổi hoặc update lại resource, bạn cần update và thực hiện test lại toàn bộ các case có liên quan đến resource đó.

Vd: Với API list user ban đầu chỉ hiển thị thông tin của user được lấy từ API create user, nay cần lấy thêm thông tin từ API Projects để hiện thị thông tin các project mà user đó đã tham gia. Với thay đổi yêu cầu như thế, bạn cần bổ sung thêm các case liên quan đến việc get thông tin từ API projects, và test tổng hợp lại các case liên quan ở API list user.

Kết Luận:

Các case trên thì tôi chỉ liệt kê ra các nhóm testcase chính mà các bạn cần phải có, ngoài ra sẽ có các testcase đặc thù theo dự án và những testcase cơ bản như khi bạn test 1 giao diện hay module bình thường( thiếu, thừa, sai kiểu, quá rank …)

=> việc có thực hiện test thêm các testcase này hay không thì thường phụ thuộc vào tình hình dự án ( requirement, effort, budget…), thế nhưng dù thực hiện hay không thì Tester cần phải biết là có những testcase đó và đánh giá hoặc khoanh vùng được vùng chất lượng của dự án.

Các kỹ thuật thiết kế testcases cho APIs thì cơ bản vẫn giống như thiết kế testcase bình thường, vẫn base trên các kỹ thuật viết testcase cơ bản như phân vùng tương đương, giá trị biên, đoán lỗi …

Hy vọng các kiến thức trên sẽ giúp ích cho bạn trong việc test API, Phần demo và thực hiện test với tool tôi sẽ trình bày ở phần sau.