Chào các bạn đã đến với chủ để tiếp theo của mình. Hôm nay, mình sẽ tiếp tục tìm hiểu về chủ đề mới, đó là API Testing. Ở bài này, mình sẽ đi qua những nội dung như sau:
Nội dung
1. API Testing là gì?
Trước khi tìm hiểu khái niệm API Testing là gì, bạn cần hiểu API là gì. API là viết tắt của cụm từ Application Programming Interface nghĩa là giao diện lập trình ứng dụng. API chính là phương thức kết nối giữa client và server, giữa thư viện và các ứng dụng. Khi yêu cầu được gửi từ client tới server, kết quả sẽ được phản hồi lại qua giao thức HTTP.
API Testing hay kiểm thử API là hoạt động kiểm thử giao diện lập trình ứng dụng trực tiếp mà không tác động gì tới client. API Testing được thực hiện trên các business layer, trong đó dữ liệu sẽ được yêu cầu từ XML hoặc JSON và phản hồi lại qua HTTP. Đây cũng là điều giúp phương thức này làm việc được với nhiều ngôn ngữ lập trình và nền tảng công nghệ khác nhau.
Ví dụ: Giả sử bạn là 1 người hướng dẫn viên du lịch, và quản lý 1 nhóm du lịch đến từ nhiều nước khác nhau. Trong nhóm có người Nga, Mỹ, Nhật, Thụy Điển, Đức, Việt Nam. Để có thể làm mọi việc một cách suôn sẻ, tất cả cái nhóm này phải cùng nói 1 ngôn ngữ, có thể là tiếng anh hoặc tiếng Nga. Ở đây người
hướng dẫn viên sẽ đóng vai trò là Server, và người du lịch sẽ đóng vai trò là client.
Khi đi trên đường hoặc đến thăm địa danh du lịch, những người khách có thể hỏi hướng dẫn viên
rất nhiều câu hỏi khác nhau. “Cái kia là cái gì?”, “Quả này ăn như thế nào?”… Với mỗi một hành động hỏi như vậy, tương ứng với việc gửi 1 request được gửi lên server với những tham số đầu vào như “Cái kia” hay “quả này”. (Gửi request còn được gọi là Call API). Với mỗi câu hỏi, người hướng dẫn viên sẽ trả lời 1 cách khác nhau – cái này gọi là response.
API Testing thường được sử dụng để kiểm thử:
- Functional: kiểm trả API response trả về có đúng hay với tài liệu mô tả hay không?
- Performance: kiểm tra thời gian phản hồi có thể chấp nhận được hay không?
- Security: xác thực quyền, kiểm soát truy cập, dữ liệu nhạy cảm được truyền qua mạng an toàn không và phản hồi (để đảm bảo an toàn cho hệ thống) tới các cuộc tấn công bảo mật tiềm ẩn.
2. Tại sao cần test API?
2.1. Kiểm thử ứng dụng sớm mà không cần giao diện người dùng
Nếu bạn tìm thấy lỗi càng muộn thì bạn càng mất nhiều thời gian và công sức để sửa nó. API Testing sẽ giúp người kiểm thử tham gia sớm vào vòng đời phát triển của sản phẩm. Với API Testing, bạn hoàn toàn có thể bắt đầu kiểm thử ứng dụng sớm mà không cần đến giao diện người dùng. Điều này sẽ giúp bạn sớm khắc phục được các vấn đề trong vòng đời phát triển, nếu không thì sẽ mất nhiều chi phí để khắc phục khi lỗi được xác định ở quá trình kiểm thử GUI. Ưu điểm của API Testing là có thể kiểm tra rất nhiều logic mà không bị phụ thuộc vào GUI.
2.2. Tạo ra một chiến lược kiểm thử tự động, giảm thiểu chi phí
Đây là hình ảnh của “Kim tự tháp tự động hóa” (Automation pyramid). Nếu chúng ta nắm được, chúng ta có thể tạo ra một chiến lược tự động hoá hiệu quả.
Đi từ tầng dưới của kim tự tháp, các chi phí liên quan đến việc tạo ra và duy trì các phương pháp, thời gian thực hiện, phạm vi kiểm thử sẽ dần tăng lên. Kim tự tháp chỉ ra rằng chúng ta cần làm nhiều kiểm thử tự động thông qua Unit Test và API Testing hơn là thực hiện kiểm thử dựa trên GUI.
Trên thực tế, việc liên tục tích hợp, thời gian để kiểm thử hồi quy GUI mấy khá nhiều thời gian để nhận lại phản hồi. Các chi phí liên quan đến việc thực hiện và duy trì các phương pháp kiểm thử sẽ dần tăng lên.
3. Khác biệt giữa Unit test với API test
Unit test | API test |
---|---|
Thực hiện bởi developer | Thực hiện bởi tester |
Kiểm thử những chức năng riêng biệt | Kiểm thử những chức năng liên quan đến nhau |
Dev có thể truy cập vào source code | Tester không thể truy cập vào source code |
Kiểm tra cả UI | Chỉ kiểm tra các hàm API |
Chỉ các chức năng đơn giản được kiểm thử | Tất cả các chức năng được kiểm thử |
Giới hạn phạm vi | Phạm vi rộng hơn |
Thường được chạy trước khi build | Thường được chạy sau khi build |
4. Những khó khăn khi test API
Theo ý kiến cá nhân của mình thì khi test API sẽ gặp những khó khăn như sau:
- Khó khăn đầu tiên khi test API là bạn sẽ không có giao diện để test. Do đó, các bạn mới sẽ bối rối ko biết test nó như thế nào.
- Trong body request sẽ có rất nhiều tham số, nếu bạn không hiểu rõ yêu cầu thì bạn sẽ không biết truyền tham số như thế nào cho đúng.
- Tương tự thế, khi bạn send request, response data sẽ trả về rất nhiều items. Để verify được data trả về có đúng hay không, lúc này đòi hỏi bạn phải biết cách query SQL từ database
- Bạn phải hiểu rõ các http status code. Ví dụ như mã 200, 401, 500 … để có thể phán đoán được lỗi xảy ra ở client hay phía server.
5. Kết
Như vậy chúng ta đã tìm hiểu sơ lược về API Testing. Cảm ơn các bạn đã theo dõi bài viết của mình. Chúc các bạn thành công. Hẹn gặp lại các bạn ở những chủ đề tiếp theo. Bái bai.
Nguồn tham khảo: