API testing là gì: Hướng Dẫn Chi Tiết Dành Cho Người Mới Updated 2024

Khi nhắc đến kiểm thử phần mềm, rất nhiều bạn chỉ nghĩ đến kiểm thử chỉ thực hiện trên giao diện người dùng tuy nhiên còn một loại kiểm thử quan trọng khác nữa cần thực hiện là API testing. Hôm nay chúng ta sẽ cùng tìm hiểu API testing là gì và chúng được thực hiện như thế nào trong bài viết này nhé.

Khi nhắc đến API testing tức là chúng ta đang nói đến khả năng tích hợp của các hệ thống với nhau, hoặc là khả năng tích hợp của ứng dụng này với các ứng dụng khác. Đây là một trong những loại kiểm thử đầy thách thức nhưng cũng hết sức thú vị. Nếu bỏ sót lỗi trong quá trình thực hiện API Testing, điều này có thể gây ra vấn đề nghiêm trọng trong quá trình tích hợp của các ứng dụng phần mềm, và việc gỡ lỗi cũng sẽ gây tốn kém hơn cả về thời gian và công sức.

API testing là gì?

API testing là một phần quan trọng của quy trình kiểm thử phần mềm. Để bắt đầu tìm hiểu API testing là gì, chúng ta sẽ bắt đầu với khái niệm cơ bản nhất của API nhé.

API là từ viết tắt tiếng Anh của Application Programming Interface, trong toàn bộ bài viết này mình sẽ viết tắt là API để mọi người dễ hiểu nhé, là một tập hợp các quy tắc và định dạng cho phép các phần mềm khác nhau giao tiếp với nhau. Nói cách khác, API là “thành phần trung gian” cho phép các ứng dụng “nói chuyện” với nhau, trao đổi dữ liệu và thực hiện các chức năng cụ thể.

Nói một cách khác, API là một tập hợp các quy tắc và giao thức cho phép các ứng dụng phần mềm khác nhau giao tiếp và tương tác với nhau. Nó định nghĩa các phương thức và cấu trúc dữ liệu mà các lập trình viên có thể sử dụng để trao đổi thông tin giữa các hệ thống, cho phép tích hợp các dịch vụ và chức năng khác nhau. API rất quan trọng trong việc xây dựng phần mềm tương thích, giúp kết nối liền mạch các hệ thống đa dạng và nâng cao chức năng của các ứng dụng bằng cách tận dụng các dịch vụ bên ngoài.

Để dễ hiểu hơn, chúng ta sẽ ví dụ ứng dụng của API testing trong phần mềm quen thuộc mà đa số mọi người vẫn sử dụng hàng ngày đó là app Shopee. Như mọi người đã biết, các sản phẩm phần mềm ở xung quanh chúng ta, và chúng ta sử dụng chúng hàng ngày, vậy thì API ở đâu trong các ứng dụng này? Với ví dụ Shopee, một trang thương mại điện tử lớn và cực kì phổ biến hiện nay chúng ta sẽ hiểu được cách API hoạt động.

Các ứng dụng phần mềm thường có này có 2 phần:

  1. Backend (phần hậu trường):
    • Backend là nơi lưu trữ dữ liệu sản phẩm, thông tin người dùng, xử lý đơn hàng, thanh toán, v.v…
    • Backend được xây dựng bằng ngôn ngữ lập trình như Python, Java, Ruby, v.v…
    • Backend cung cấp API để front-end có thể truy cập và sử dụng dữ liệu.
  2. Frontend (phần giao diện):
    • Frontend là phần người dùng tương tác, bao gồm giao diện website, app mobile.
    • Frontend được xây dựng bằng HTML, CSS, JavaScript, v.v…
    • Frontend sử dụng API từ backend để hiển thị dữ liệu cho người dùng.
front-end vs back-end

Ví dụ cụ thể:

  • Người dùng truy cập trang sản phẩm trên Shopee:
    • Frontend (app Shopee) gửi yêu cầu đến API của backend để lấy thông tin sản phẩm (tên, giá, hình ảnh, mô tả, v.v…).
    • Backend xử lý yêu cầu, truy vấn cơ sở dữ liệu và trả về dữ liệu sản phẩm cho frontend.
    • Frontend hiển thị thông tin sản phẩm cho người dùng.
  • Người dùng thêm sản phẩm vào giỏ hàng:
    • Frontend (app Shopee) gửi yêu cầu đến API của backend để thêm sản phẩm vào giỏ hàng của người dùng.
    • Backend xử lý yêu cầu, cập nhật thông tin giỏ hàng trong cơ sở dữ liệu và trả về phản hồi cho frontend.
    • Frontend cập nhật giỏ hàng trên giao diện cho người dùng.
  • Người dùng đặt hàng:
    • Frontend (app Shopee) gửi yêu cầu đến API của backend để đặt hàng.
    • Backend xử lý yêu cầu, tạo đơn hàng mới, cập nhật thông tin kho, v.v… và trả về phản hồi cho frontend.
    • Frontend hiển thị thông báo đặt hàng thành công cho người dùng.
API testing: shopping woman

Như vậy, API đóng vai trò là cầu nối giữa frontend và backend, cho phép 2 phần này giao tiếp với nhau, backend sẽ cung cấp thông tin cho người dùng, front end sẽ lấy thông tin này và hiển thị tới người dùng, giúp ứng dụng hoạt động trơn tru và cung cấp trải nghiệm tốt nhất cho người dùng. Và nhiệm vụ của testers trong giai đoạn này sẽ đảm bảo việc API testing được thực hiện đúng và đầy đủ bằng các công cụ kiểm thử test API cần thiết sẽ được đề cập đến trong phần sau của bài viết này.

Test API để làm gì và vì sao lại quan trọng?

API testing là một hình thức kiểm thử phần mềm chuyên biệt tập trung vào việc kiểm tra các API làm việc có đúng với mong đợi của người dùng hay không. Nó bao gồm việc kiểm tra chức năng, độ tin cậy, hiệu suất và bảo mật của các giao diện này.

Không giống như các phương pháp kiểm thử truyền thống sử dụng đầu vào và đầu ra dành cho các ứng dụng UI (User Interface), API testing cần sử dụng công cụ chuyên dụng để gửi các yêu cầu đến API, thu thập đầu ra và phân tích phản hồi của hệ thống.

API testing khác với kiểm thử Giao diện người dùng (GUI) vì nó không tập trung vào trải nghiệm người dùng phổ thông. Thay vào đó, nó chủ yếu tập trung vào lớp logic nghiệp vụ của kiến ​​trúc phần mềm. 

Tuỳ vào thiết kế của từng API mà kiểm thử viên (tester) cần xác định chiến lược tiếp cận phù hợp cho từng loại API testing. API testing có thể được làm được automation test.

API testing có thể được thực hiện thủ công, đây là quá trình tester cần sử dụng công cụ và kiểm tra các API lần lượt bằng tay, và xác nhận hoạt động của API là đúng như mong đợi. Ngoài ra API cũng có thể test tự động, tự động hóa việc API testing cho phép quá trình kiểm thử diễn ra nhanh hơn và hiệu quả hơn, đặc biệt là khi xử lý các API có khả năng lặp lại cao hay trong quá trình kiểm thử hồi quy.

Trong những năm gần đây, việc API testing càng ngày càng được chú trọng hơn do có xu hướng thực hiện nhanh việc kiểm thử phần mềm, và quá trình kiểm thử phần mềm cần được thực hiện càng sớm càng tốt trong quy trình phát triển phần mềm, vậy nên rất nhiều công ty đẩy mạnh việc API testing và API testing tự động để đẩy nhanh quá trình test cũng như sớm đưa các hoạt động kiểm thử vào các giai đoạn sớm của quá trình phát triển phần mềm.

Kiểm thử API rất quan trọng vì một số lý do:

  • Xác thực chức năng: test API đảm bảo API hoạt động đúng như thiết kế ​​hay không, bao gồm cả việc xử lý các yêu cầu và phản hồi một cách chính xác.
  • Tính toàn vẹn của dữ liệu: Đảm bảo rằng dữ liệu được chuyển giữa các API và các hệ thống khác được xử lý chính xác và an toàn.
  • Xử lý lỗi: Kiểm tra xem API có xử lý các lỗi và các exceptions một cách chính xác, thông báo cho người dùng và hệ thống một cách thích hợp.
  • Bảo mật: Đảm bảo rằng API được bảo vệ khỏi các mối đe dọa bảo mật như SQL injection, XSS attack và các vấn đề bảo mật khác nữa.
  • Hiệu suất và khả năng mở rộng: Kiểm tra xem API có thể xử lý lượng lớn yêu cầu, xử lý tải và duy trì hiệu suất ổn định trong các tình huống chịu tải cao.
  • Khả năng tương thích: Kiểm tra xem API có tương thích với các nền tảng, trình duyệt và hệ điều hành khác nhau hay không.
  • Tài liệu: Đảm bảo rằng API có tài liệu đầy đủ và dễ hiểu, giúp các nhà phát triển sử dụng API một cách hiệu quả.
  • Kiểm thử hồi quy (regression tét): Kiểm tra xem các thay đổi đối với API có ảnh hưởng tiêu cực đến chức năng của nó hay không.
  • Giảm chi phí: Bằng cách phát hiện và sửa lỗi sớm, test API giúp giảm thiểu chi phí phát sinh do lỗi xảy ra sau khi phát hành.

Test API cần làm như thế nào

Các loại APIs

Trong khuôn khổ bài chia sẻ này, TopTest.vn sẽ chia sẻ đến các bạn hai loại API là REST API và SOAP API

REST API là gì

REST là viết tắt của REpresentational State Transfer (Chuyển giao trạng thái biểu diễn), và tính vô trạng thái (statelessness) là yếu tố chính. Một API có thể được coi là REST nếu nó tuân theo các ràng buộc sau đây.

Kiến trúc REST mô tả sáu ràng buộc. Những ràng buộc này, được áp dụng lên kiến trúc, lần đầu tiên được Roy Fielding đề cập trong luận án tiến sĩ của ông, và định nghĩa cơ sở của phong cách RESTful. 6 ràng buộc của REST API như sau:

  1. Giao diện đồng nhất (Uniform Interface):
    • Ràng buộc này xác định giao diện giữa client (khách hàng) và server (máy chủ).
    • Client và server cần thống nhất một số quy tắc dựa trên các tài nguyên (resource), chẳng hạn như định dạng JSON, XML, HTML, TXT,… và cách mã hóa như UTF-8,…
    • Ngoài ra, thông điệp phải tự mô tả (Self-descriptive Messages) và sử dụng cùng loại MIME (ví dụ: sử dụng cùng loại MIME).
  2. Vô trạng thái (Stateless):
    • API trong REST là vô trạng thái. Nghĩa là, client và server không lưu trữ bất kỳ thông tin nào về trạng thái của yêu cầu hoặc phản hồi. Mỗi yêu cầu phải độc lập và chứa tất cả thông tin cần thiết để server xử lý.
  3. Có thể lưu trữ trong bộ nhớ cache (Cacheable):
    • Theo tiêu chuẩn World Wide Web, client có thể lưu trữ các phản hồi trong bộ nhớ cache. Do đó, các phản hồi phải tự động hoặc rõ ràng xác định chúng có thể lưu trữ trong bộ nhớ cache hay không. Server quyết định khi nào bộ nhớ cache hết hạn, v.v.
  4. Kiến trúc Client-Server (Client-Server):
    • Client và Server là hai thực thể riêng biệt. Điều này có nghĩa là server và client có thể được thay thế và phát triển độc lập, miễn là giao diện không thay đổi.
  5. Hệ thống phân lớp (Layered System):
    • Giữa client và server có thể có bất kỳ số lượng hệ thống phân lớp nào, điều này không ảnh hưởng đến hoạt động của API.
  6. Mã theo yêu cầu (Code on Demand):
    • Server có thể lưu trữ mã hoặc logic của nó và chỉ chuyển nó cho client khi cần thiết, thay vì client tự xử lý logic.

SOAP là gì?

SOAP (viết tắt củaSimple Object Access Protocol )là một giao thức nhắn tin cho phép các chương trình chạy trên các hệ điều hành hoặc dịch vụ khác nhau, chẳng hạn như frontend hoặc backend, giao tiếp với nhau bằng cách sử dụng giao thức truyền tải siêu văn bản (HTTP) và Ngôn ngữ đánh dấu mở rộng (XML).

SOAP sử dụng WSDL (Web Services Description Language – Ngôn ngữ mô tả dịch vụ web) là một định dạng XML để mô tả các dịch vụ mạng như một tập hợp các điểm cuối hoạt động trên các thông điệp chứa thông tin định hướng tài liệu hoặc định hướng thủ tục.

Mô tả chi tiết:
  • SOAP (Simple Object Access Protocol – Giao thức truy cập đối tượng đơn giản) là một giao thức dựa trên XML để trao đổi thông tin giữa các ứng dụng, bất kể chúng được viết bằng ngôn ngữ nào hoặc chạy trên nền tảng nào.
  • SOAP sử dụng HTTP (Hypertext Transfer Protocol – Giao thức truyền tải siêu văn bản) để truyền các thông điệp XML.
  • WSDL (Web Services Description Language – Ngôn ngữ mô tả dịch vụ web) là một ngôn ngữ mô tả XML để xác định các dịch vụ web SOAP. Nó cho phép các ứng dụng tìm hiểu về các dịch vụ web có sẵn, bao gồm cách sử dụng chúng.
So sánh SOAP và REST:
  • REST (REpresentational State Transfer) là một kiến trúc phần mềm tập trung vào việc sử dụng HTTP để giao tiếp giữa các ứng dụng. REST API thường sử dụng JSON (JavaScript Object Notation) để trao đổi dữ liệu.
  • SOAP là một giao thức nhắn tin dựa trên XML. Nó sử dụng HTTP để truyền các thông điệp XML và sử dụng WSDL để mô tả các dịch vụ web.
Ưu điểm của SOAP:
  • Hỗ trợ rộng rãi: SOAP được sử dụng rộng rãi trong nhiều ngành và được hỗ trợ bởi nhiều nền tảng khác nhau.
  • Bảo mật: SOAP cung cấp các cơ chế bảo mật mạnh mẽ, chẳng hạn như SSL (Secure Sockets Layer).
  • Kiểm soát chặt chẽ: SOAP cung cấp nhiều khả năng kiểm soát về định dạng, nội dung và giao thức của thông điệp.
Nhược điểm của SOAP:
  • Phức tạp hơn REST: SOAP phức tạp hơn REST và đòi hỏi nhiều cấu hình hơn.
  • Ít linh hoạt: SOAP ít linh hoạt hơn REST, và có thể khó thay đổi kiến trúc sau khi triển khai.
  • Hiệu suất thấp: SOAP có thể chậm hơn REST, đặc biệt là trong các ứng dụng yêu cầu hiệu suất cao.
Khi nào nên sử dụng SOAP:
  • Khi bạn cần một giao thức mạnh mẽ, an toàn và có khả năng kiểm soát chặt chẽ.
  • Khi bạn cần hỗ trợ rộng rãi từ nhiều nền tảng khác nhau.
Khi nào nên sử dụng REST:
  • Khi bạn cần một giao thức đơn giản, linh hoạt và hiệu quả.
  • Khi bạn đang phát triển các ứng dụng web hiện đại.

API testing bao gồm những gì

Test API là một quy trình quan trọng để đảm bảo API hoạt động đúng cách, an toàn và hiệu quả. Dưới đây là những bước cần thực hiện khi kiểm tra API:

Trong quá trình kiểm thử API, Testers cần thực hiện các công việc kiểm tra sau:

  • Độ chính xác của dữ liệu: Kiểm tra xem dữ liệu được truyền và nhận bởi API có chính xác và nhất quán hay không.
  • Chức năng bị thiếu hoặc trùng lặp: Kiểm tra xem API có thực hiện đầy đủ các chức năng đã được định nghĩa hay không, và không có chức năng nào bị thiếu hoặc trùng lặp.
  • Kiểm tra xác thực: Kiểm tra xem API có thực hiện các quy trình xác thực người dùng một cách chính xác, đảm bảo chỉ những người dùng được phép mới có quyền truy cập vào API.
  • Thời gian phản hồi: Kiểm tra thời gian phản hồi của API, đảm bảo API phản hồi nhanh chóng và hiệu quả.
  • Vấn đề về độ tin cậy: Kiểm tra xem API có hoạt động ổn định và đáng tin cậy, không xảy ra lỗi hoặc sự cố bất thường.
  • Hiệu suất và bảo mật: Đánh giá hiệu suất của API dưới tải, đảm bảo API có thể xử lý lượng lớn truy vấn mà không bị ảnh hưởng. Ngoài ra, kiểm tra các biện pháp bảo mật của API để đảm bảo dữ liệu được bảo vệ an toàn.
  • Vấn đề đa luồng: Kiểm tra xem API có thể xử lý nhiều yêu cầu đồng thời một cách hiệu quả hay không, đảm bảo API hoạt động ổn định trong các môi trường đa luồng.
  • Mã lỗi: Kiểm tra xem API có trả về các mã lỗi phù hợp và thông báo lỗi rõ ràng cho người dùng hay không.

Giới thiệu về HTTP requests

Phương thức Mô tả
GET Gửi yêu cầu đọc dữ liệu
POST Gửi yêu cầu để tạo dữ liệu
PUT Gửi yêu cầu để sửa dữ liệu
DELETE Gửi yêu cầu để xoá dữ liệu
Các HTTP request và ý nghĩa của nó

Các công cụ API testing phổ biến hiện nay

Ngày nay, có rất nhiều công cụ API testing hỗ trợ việc kiểm tra các giao diện lập trình ứng dụng hiệu quả. Chúng ta có thể phân loại chúng thành 2 nhóm chính:

Công cụ API testing mã nguồn mở:

  • Ưu điểm: Miễn phí, linh hoạt, có thể tùy chỉnh, cộng đồng hỗ trợ lớn. 
  • Nhược điểm: Có thể yêu cầu kiến thức kỹ thuật, có thể thiếu tính năng so với các công cụ thương mại.

a. Postman:

  • Ưu điểm: Giao diện thân thiện, dễ sử dụng, hỗ trợ nhiều tính năng như tạo test case, chạy test, debug, quản lý môi trường test, tạo mock data,… Tìm hiểu thêm về Postman là gì
  • Nhược điểm: Phiên bản miễn phí có giới hạn tính năng, giới hạn người dùng, cần đăng ký tài khoản để sử dụng. Mặc dù Postman rất lý tưởng cho các  test API như các RESTful API, nhưng nó không được thiết kế tốt cho các API SOAP và các API khác

b. REST Assured:

  • Ưu điểm: Framework mạnh mẽ cho test API tự động sử dụng ngôn ngữ Java, cho phép viết các automation test script linh hoạt và dễ đọc.
  • Nhược điểm: Yêu cầu kiến thức lập trình Java, không phù hợp với người mới bắt đầu.

c. JMeter:

  • Ưu điểm: Là công cụ kiểm thử dành cho việc kiểm thử hiệu năng tuy nhiên có thể sử dụng để test API, cho phép kiểm tra hiệu suất và khả năng chịu tải của API, công cụ cũng hỗ trợ việc test chức năng API testing
  • Nhược điểm: Giao diện phức tạp, cần thời gian để làm quen, không hỗ trợ đầy đủ các tính năng kiểm thử API.

d. SoapUI:

  • Ưu điểm: Công cụ test API chuyên nghiệp cho cả SOAP và REST API, hỗ trợ nhiều tính năng như tạo mock server, scripting, reporting.
  • Nhược điểm: Phiên bản miễn phí có giới hạn tính năng, giao diện phức tạp, cần kiến thức chuyên môn để sử dụng hiệu quả.

e. Insomnia:

  • Ưu điểm: Insomnia là một công cụ mã nguồn mở dùng để test API, rất phổ biến trong cộng đồng phát triển. Nó cung cấp giao diện trực quan, dễ sử dụng, hỗ trợ nhiều tính năng như tạo yêu cầu API, kiểm tra phản hồi, quản lý môi trường test, tạo mock data. Insomnia cũng tích hợp tốt với nhiều công cụ khác như Postman.
  • Nhược điểm: Hiện tại Insomnia còn đang còn hạn chế các plugins dành cho hệ sinh thái của nó, dẫn đến việc tạo test còn chưa tuỳ biến được trong nhiều trường hợp.

Công cụ test API mất phí:

  • Ưu điểm: Hỗ trợ đầy đủ các tính năng, giao diện trực quan, dễ sử dụng, hỗ trợ khách hàng chuyên nghiệp.
  • Nhược điểm: Phí sử dụng cao, có thể thiếu sự linh hoạt so với các công cụ mã nguồn mở.

a. Tricentis Tosca:

  • Ưu điểm: Hỗ trợ test API, web, mobile và desktop, tích hợp với nhiều công cụ khác, cho phép tự động hóa kiểm thử toàn diện.
  • Nhược điểm: Phí sử dụng cao, cần đào tạo chuyên nghiệp để sử dụng hiệu quả.

b. TestComplete:

  • Ưu điểm: Hỗ trợ kiểm thử API, web, mobile và desktop, cung cấp các tính năng nâng cao như AI-powered test automation, visual test creation.
  • Nhược điểm: Phí sử dụng cao, yêu cầu kiến thức lập trình để sử dụng một số tính năng.

c. Katalon Studio:

  • Ưu điểm: Hỗ trợ kiểm thử API, web, mobile, giao diện trực quan, dễ sử dụng, tích hợp với các công cụ quản lý test phổ biến.
  • Nhược điểm: Phiên bản miễn phí có giới hạn tính năng, không phù hợp với các dự án lớn.

Kết luận:

Lựa chọn công cụ kiểm thử API phù hợp phụ thuộc vào nhiều yếu tố như ngân sách, kiến thức kỹ thuật của đội tham gia kiểm thử, quy mô dự án, loại API cần kiểm thử, v.v… Các công cụ mã nguồn mở có thể là lựa chọn tốt cho các dự án nhỏ hoặc các nhà phát triển có kiến thức kỹ thuật, trong khi các công cụ thương mại phù hợp cho các dự án lớn hoặc các tổ chức yêu cầu hỗ trợ chuyên nghiệp.

Bài viết liên quan