1. API testing là gì?
API testing là một loại kiểm thử phần mềm liên quan đến việc kiểm thử các giao diện lập trình ứng dụng (APIs) một cách trực tiếp và là một phần của kiểm thử tích hợp để xác định xem hệ thống có đáp ứng các yêu cầu về tính năng, độ tin cậy, hiệu suất và bảo mật. Vì các API không có GUI nên kiểm thử API được thực hiện ở tầng nghiệp vụ (bussiness layer) . Trong quá trình kiểm thử API, dữ liệu được trao đổi từ XML hoặc JSON thông qua các yêu cầu và phản hồi HTTP ( HTTP requests and responses). Đây là những công nghệ độc lập và sẽ làm việc với nhiều ngôn ngữ lập trình và công nghệ khác nhau.
2. Các test case cho kiểm thử API
Các test case cho kiểm thử API được dựa trên:
-
URL và Method: Kiểm tra URL và Method của API cần test đã đúng với tài liệu đặc tả hay chưa? (thường thì method sẽ là POST or GET tùy vào từng API)
-
Cấu trúc parameter request: Kiểm tra cấu trúc của params truyền đi đã đúng chưa (thường thì kiểm tra đã đầy đủ các property như trong tài liệu hay chưa?)
-
Data truyền đi (parameter request): Kiểm tra với các trường hợp data là valid, invalid, null.. (thường thì với mỗi data đẩy lên sẽ nhận về data, status_code và message tương ứng)
-
Dữ liệu trả về dựa trên điều kiện đầu vào: Điều này tương đối dễ dàng kiểm tra, như đầu vào có thể được xác định và kết quả có thể được xác thực.
-
Không trả về gì cả: Khi không có giá trị trả về, hành vị của API trên hệ thống có thể được kiểm tra
-
Kích hoạt một vài API/event/interrupt: Nếu đầu ra của một API kích hoạt các event hoặc interrupt, thì các listeners của event và interrupt nên đươc kiểm tra
-
Cập nhật cấu trúc dữ liệu: Cập nhật cấu trúc dữ liệu sẽ có một vài kết quả hoặc ảnh hưởng lên hệ thống, và chúng nên được kiểm tra
-
Chỉnh sửa các tài nguyên(resources) nhất định: Nếu API gọi chỉnh sửa một vài tài nguyên thì nó nên được xác nhận bằng cách truy cập vào các tài nguyên tương ứng
3. Những điều cần kiểm tra trong kiểm thử API
-
Discovery testing: Kiểm tra các API khi truy cập các tài nguyên và xem các API truy cập các tài nguyên, có được các quyền xem, xóa và sửa hợp lệ hay không
-
Usability testing: Loại kiểm thử này kiểm tra xem API có làm đúng chức năng và thân thiện hay không. và API được tích hợp tốt trên các nền tảng khác hay không
-
Security testing: Loại kiểm thử này bao gồm các loại xác thực được yêu cầu và xem các dữ liệu nhạy cảm có được mã hóa thông qua HTTP hoặc cả hai hay không
-
Automated testing: Kiểm thử API được nâng cao trong việc tạo ra các đoạn mã hoặc công cụ mà có thể chạy API thường xuyên
-
Documentation: Đội kiểm thử phải đảm bảo rằng các tài liệu thích hợp và cung cấp đầy đủ các thông tin để tương tác với API. Tài liệu nên là một phần khi bàn giao
Tìm hiểu về các phương thức và định dạng API: Các API thường hỗ trợ phương thức HTTP như GET, POST, DELETE, PUT và các định dạng dữ liệu như JSON, XML. Tester cần tìm hiểu về chúng để có thể nâng cao việc Test API hiệu quả hơn Hiểu rõ yêu cầu về các API: Đọc kỹ tài liệu API và hiểu rõ yêu cầu của API trước khi bắt đầu Test. Điều này giúp bạn có được cái nhìn tổng quát về chức năng và tính năng của API. Tập trung vào kịch bản chính: Sử dụng dữ liệu thực tế Kiểm tra phản hồi của API: Kiểm tra các mã trạng thái HTTP và dữ liệu trả về từ API Đặt caau hỏi đối với những người có kinh nghiệm
4. Các loại lỗi mà kiểm thử API tìm ra
Lỗi do xử lý các lỗi điều kiện tạo ra
Các cờ chưa sử dụng
Thiếu hoặc lặp các chức năng
Các vấn đề về độ tin cậy. Khó khăn trong việc két nối và nhận được phản hồi từ API.
Các vấn đề về bảo mật
Vấn đề về xử lý đa luồng
Vấn đề về hiệu năng. Thời gian API phản hồi rất cao
Lỗi/cảnh báo không đúng
Xử lý không đúng các giá trị đối số hợp lệ
Cấu trúc dữ liệu trả về không chính xác(JSON hoặc XML)
5. Các tools hỗ trợ kiểm thử API
Kiểm thử API và Unit đều là kiểm tra về source code nên các công cụ tương tự có thể sử dụng cho cả hai
Postman - Manual API testing SOAPUI - Manual API testing JMeter - Manual API testing Katalon Studio - Automated API testing akaAT Studio - Automated API testing Rest Assured (Java) - Automated API testing Rest Sharp (C#) - Automated API testing Playwright (Javascript/Python/Java/C#) - Automated API testing ...
6. Tại sao cần kiểm thử API
-
Kiểm thử ứng dụng sớm và không cần giao diện người dùng Khi bạn tìm thấy lỗi càng muộn thì càng mất nhiều thời gian, công sức để fix nó. API testing đưa người kiểm thử tham gia sớm vào vòng đời phát triển sản phẩm. Với API testing, bạn có thể bắt đầu kiểm thử ứng dụng sớm ngay cả khi không có giao diện người dùng. Điều này giúp xác định và khắc phục sớm các vấn đề trong vòng đời phát triển, nếu không thì sẽ tốn kém để khắc phục khi được xác định trong quá trình kiểm thử GUI. Ưu điểm của việc kiểm thử API là rất nhiều logic có thể được kiểm tra mà không bị phụ thuộc vào UI.
-
Để có được một chiến lược kiểm thử tự động tuyệt vời và giảm chi phí. Nếu chúng ta hiểu được "Kim tự tháp Tự động hoá" ( Automation pyramid), chúng ta có thể đưa ra một chiến lược tự động hóa hiệu quả.
Nguồn tham khảo: https://anhtester.com/blog/blog/so-luoc-ve-api-testing