API là gì?
Các API được sử dụng để tích hợp các hệ thống với nhau. Bạn có thể tạo sẵn dữ liệu cho các hệ thống khác truy cập thông qua API hoặc chấp nhận dữ liệu từ các hệ thống khác.
Ví dụ như người phục vụ trong một nhà hàng. Người phục vụ nhận yêu cầu – request (đơn đặt hàng) từ khách hàng (client) và chuyển nó đến nhà bếp (là server) và nhận thức ăn (phản hồi – response) từ bếp cho khách hàng.API thực hiện chính xác những điều đó. Một API là một sứ giả đưa ra yêu cầu của bạn và nói với các hệ thống những gì cần làm và sau đó trả về phản hồi cho bạn.
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.
API testing giúp kiểm tra các yếu tố như:
- Chức năng của API: Đảm bảo rằng API thực hiện đúng các tác vụ mà nó được thiết kế để làm.
- Hiệu suất: Đánh giá khả năng API xử lý các yêu cầu trong thời gian thực tế, bao gồm khả năng chịu tải và tốc độ phản hồi.
- Bảo mật: Kiểm tra API có bảo vệ dữ liệu và ngăn chặn các mối đe dọa bảo mật hay không.
- Độ tin cậy: Đảm bảo rằng API hoạt động ổn định trong các điều kiện khác nhau và có khả năng phục hồi khi gặp sự cố.
- Tính tương thích: Đảm bảo API có thể hoạt động đúng trên các hệ thống, nền tảng và môi trường khác nhau.
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.
Các test case cho kiểm thử API
Các test case cho kiểm thử API được dựa trên:
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
Những điều cần kiểm tra trong kiểm thử API
Kiểm thử API nên được thực theo các phương pháp kiểm thử trong quy trình phát triển phần mềm:
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
Các thực hành tốt cho kiểm thử API
Test case nên được nhóm theo loại kiểm thử
- Trên mỗi test case, nên bao gồm cả phần khai báo các API được gọi
- Các tham số lựa chọn nên được liệt kê dầy đủ trong các test case
- Nên đặt độ ưu tiên cho các API được gọi để dễ dàng test hơn
- Mỗi test các nên được khép kín, độc lập và tránh ít phục thuộc
- Nên tránh kiểm tra xâu chuỗi (test chaining) trong quá trình phát triển
- Đặc biệt chú ý khi thực hiện xử lý các chức năng gọi một lần như xóa, đóng cửa sổ….
- Gọi trình tự nên được thực hiện và lập kế hoạch tốt
- Để đảm bảo hoàn thành các kiểm thử, tạo test case cho tất cả các tổ hợp đàu vào có thể có của API
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)
Lý do 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í.
Trong một số trường hợp, người kiểm thử bắt buộc phải thực hiện tự động hoá ở tầng UI. Tuy nhiên, kiểm thử có thể chậm và tốn nhiều chih phí. Đây là một trong những lý do khiến nhiều công ty thất bại trong nỗ lực thực hiện chiến lược tự động hoá hiệu quả.
Phát triển phần mềm theo phương pháp Agile và giảm việc thực hiện kiểm thử hồi quy bằng tay
Tự động hóa API có thể giảm đáng kể áp lực của kiểm thử hồi quy của nhóm QA. Bằng cách tích hợp kiểm thử tự động API , nhóm QA có thể cung cấp phản hồi nhanh về chất lượng ứng dụng ngay khi được triển khai (deploy).
Điều này cung cấp một đánh giá nhanh chóng về hệ thống trước khi kiểm thử GUI.
Kiểm thử tự động API yêu cầu code ít hơn và cung cấp kết quả kiểm tra nhanh hơn và phạm vi kiểm tra tốt hơn. API được ổn định sớm và không thay đổi thường xuyên như giao diện người dùng.
Kết luận
API testing rất quan trọng trong việc đảm bảo rằng các hệ thống phần mềm có thể hoạt động và giao tiếp với nhau một cách hiệu quả.
Tham khảo: https://anhtester.com/blog/so-luoc-ve-api-testing-b271.html