[API Postman] Bài 1 - API là gì? Tại sao cần kiểm thử API?

✅ API là gì?
✅ Ví dụ về cách API hoạt động
✅ Phạm vi hoạt động của API
✅ Các loại kiến trúc của API
✅ Điểm cuối API là gì và vì sao nó lại quan trọng?
✅ API Document là gì?
✅ Ứng dụng của API
✅ Tổng kết những điều cần nên biết về API
✅ Kiểm thử API là gì?
✅ Tại sao cần kiểm thử API?
✅ Lợi ích của kiểm thử API
✅ Một số phương pháp kiểm thử API phổ biến
✅ Một số công cụ kiểm thử API phổ biến

✅ API là gì?

API là cơ chế cho phép 2 thành phần của một phần mềm hoặc 2 phần mềm giao tiếp với nhau bằng một tập hợp các định nghĩa và giao thức. API viết tắt của Application Programming Interface là một tập hợp các câu lệnh (commands), functions, các giao thức (protocols), objects,... giúp hai phần mềm (ứng dụng) có thể tương tác và trao đổi dữ liệu qua lại được với nhau.

API là thuật ngữ không còn quá xa lạ, đặc biệt là trong xu hướng chuyển đổi số đang diễn ra mạnh mẽ như hiện nay. API có tính ứng dụng thực tế cao trong lĩnh vực công nghệ thông tin, tạo sự “tương tác” dễ dàng hơn giữa các hệ thống với nhau, từ đó thúc đẩy sự đổi mới và tăng tính hiệu quả cho nhiều hoạt động từ đời sống, xã hội cho đến hoạt động kinh doanh.


🔆 Mô hình chung cơ chế hoạt động của API






🔆 Ví dụ về cách API hoạt động

Có một hệ thống của Cơ quan khí tượng xây dựng để cung cấp số liệu về thời tiết hàng ngày cho cả nước Việt Nam mình dùng. Ứng dụng thời tiết trên điện thoại của bạn sẽ “trò chuyện” với hệ thống này qua API và hiển thị thông tin cập nhật về thời tiết hàng ngày trên điện thoại của bạn.

  • Server: chính là cơ quan khí tượng sẽ xây dựng một hệ thống phần mềm, có database lưu trữ, có các API tính toán.
  • API: là các hàm tính toán để cho ra kết quả về thời tiết từng ngày từng giờ mà cơ quan khí tượng xây dựng sẵn và được connect với DB lưu trữ trên, có thể public ra cho ai dùng cũng được.
  • Client: là người dùng cuối (chúng ta nè) và cả người tạo ra cái App Mobile cho nhiều người sử dụng ở nhiều nơi trên nhiều thiết bị khác nhau. Bằng cách anh bạn Developer tạo app đó sẽ connect đến Server để lấy kết quả thời tiết thông qua các API mà cơ quan khí tượng cung cấp. Sau đó hiển thị ra thông tin trên app mobile cho nhiều người dùng khác thấy.


Trong quá trình sử dụng thì người dùng cuối không cần quan tâm App mobile đó xử lý bên trong như thế nào, chỉ việc click chọn các giao diện tuỳ ý đã xây dựng sẵn.
Còn đối với anh bạn Develop kia thì cũng không cần quan tâm hàm tính toán của cơ quan khí tượng được viết như thế nào, anh ấy chỉ cần quan tâm nhiệm vụ chính của mình là gọi đúng hàm mà cơ quan khí tượng cung cấp và truyền đúng các thông số yêu cầu nếu có là nó sẽ trả về kết quả cho App mobile của anh ta đang xây dựng.

Như vậy các bạn có thể hiểu sâu hơn một chút là anh bạn Develop ảnh gọi API từ cơ quan khí tượng. Còn chúng ta thì lại gọi API từ anh bạn Develop ấy 😄

Và một cái hay trong câu chuyện trên là không chỉ một anh Develop có thể gọi API từ Cơ quan khí tượng mà là có nhiều anh develop khác cùng gọi trên nhiều loại thiết bị khác nhau, có thể là mobile, desktop, website,...

✳️ Phạm vi hoạt động của API

Để phân theo phạm vi hoạt động thì có 4 loại API:

  • Open APIs hoặc Public APIs (API mở): Còn có tên gọi khác là API công khai, có sẵn nên có thể được sử dụng bởi bất kỳ nhà phát triển nào. Đổi lại, các Open APIs thông thường sẽ yêu cầu các biện pháp xác thực hoặc ủy quyền thấp và bị hạn chế chức năng khi chia sẻ công khai. Một số Open APIs sẽ được chia sẻ miễn phí, một số khác sẽ yêu cầu tính phí khi sử dụng. Chi phí này thường được tính dựa trên số lượng “lệnh gọi” (calls) đến API được sử dụng.
  • Partner APIs (API đối tác): API này cần có quyền hoặc giấy phép cụ thể mới truy cập được. Thường dành cho các nhà phát triển bên ngoài ủy quyền để hỗ trợ đầu mối hợp tác giữa doanh nghiệp với doanh nghiệp. Một số doanh nghiệp lựa chọn Partner APIs vì muốn kiểm soát tốt hơn người dùng có thể truy cập vào tài nguyên của họ và chỉ rõ cách thức sử dụng các tài nguyên đó.
  • Internal APIs (API nội bộ): Không giống như API mở hay API đối tác, API nội bộ không dành cho các bên thứ ba sử dụng, thường dùng trong phạm vi công ty. Công ty sử dụng API này để để kết nối các hệ thống cũng như dữ liệu nội bộ của công ty/tổ chức.
  • Composite APIs (API tổng hợp): Kết hợp hai hay nhiều API khác nhau để giải quyết các yêu cầu phức tạp của hệ thống. Nếu cần dữ liệu từ các ứng dụng hoặc từ nhiều nguồn dữ liệu khác nhau, bạn nên sử dụng API tổng hợp. Ngoài ra, bạn có thể sử dụng API tổng hợp để thiết lập một chuỗi các “lệnh gọi” (calls) và phản hồi tự động mà không cần chủ động can thiệp vào.

✳️ Các loại kiến trúc của API

Để phân theo kiến trúc thì có 4 loại kiến trúc API hiện nay:

  • API SOAP: Đây là một trong những API “đời đầu”, nó dùng giao thức truy cập đối tượng đơn giản. Lúc này, máy chủ sẽ trao đổi thông điệp thông qua XML với máy khách.
  • API RPC: Các API còn được biết đến với tên gọi là Lệnh gọi thủ tục từ xa. API này buộc máy chủ phải hoàn thành được một thủ tục bắt buộc thì máy khách mới có thể được nhận được kết quả.
  • API Websocket: Đây là một phiên bản API web hiện đại chuyển dữ liệu nhờ vào việc sử dụng các đối tượng JSON. Máy khách và máy chủ có thể trao đổi thông tin 2 chiều nhờ vào API này.
  • API REST: Hiện nay thì API REST được cho là linh hoạt nhất và cũng được sử dụng rộng rãi nhất. Với loại API này, máy khách sẽ gửi đến một yêu cầu dưới dạng dữ liệu, dữ liệu chính dạng JSON. Sau đó máy chủ sẽ dùng các dữ liệu này để thực hiện các hàm nội bộ và cho ra các dữ liệu đầu ra rồi gửi lại cho máy khách. (hiện nay người ta dùng JSON để trao đổi dữ liệu rất thịnh hành, vì nó nhanh và nhẹ)

✅ Điểm cuối API là gì và vì sao nó lại quan trọng?

Điểm cuối API là điểm tiếp xúc cuối cùng trong hệ thống giao tiếp của API, hay còn được gọi là EndPoint.

Ví dụ về EndPoint API:

- API để create user thì cần truy cập link này https://api.anhtester.com/api/user và với phương thức là POST
Xong chưa đủ, cần truyền body vào là thông tin của user cần tạo nữa, dạng JSON chẳng hạn

{
  "username": "anhtester",
  "firstName": "Anh",
  "lastName": "Tester",
  "email": "thaian.it15@gmail.com",
  "password": "Test@123",
  "phone": "0939206009",
  "userStatus": 1
}

- API để get user thì cần truy cập link này https://api.anhtester.com/api/user nhưng với phương thức là GET
Xong sau đó cần truyền param là username của user cần get, dạng Param URL chẳng hạn
https://api.anhtester.com/api/user?username=anhtester

Đấy, thì như trên đó là các EndPoint đó. Những điểm cuối này bao gồm URL máy chủ, phương thức và những thông số kỹ thuật cụ thể khác, từ đây thông tin được gửi đi và tiếp nhận giữa các hệ thống.

Xem thêm tài liệu API của Anh Tester: https://api.anhtester.com/

Điểm cuối API rất quan trọng đối với doanh nghiệp vì 2 lý do chính: 

+ Bảo mật

Điểm cuối API khiến hệ thống dễ bị tấn công. Việc giám sát API để ngăn tình trạng lạm dụng là rất quan trọng. Vì nó có thể được public ra ngoài nhiều người biết đến và truy cập với đầy đủ thông số yêu cầu.

+ Hiệu năng

Điểm cuối API, nhất là những điểm cuối có lưu lượng truy cập cao, ví dụ login hệ thống chẳng hạn, thì có thể gây ra tình trạng nghẽn mạng và ảnh hưởng đến hiệu năng hệ thống.

Các bạn nhớ lúc mà đăng ký học phần thời sinh viên gần đây và hiện tại luôn không, đúng giờ vàng cái là nó truy cập bụp bụp bụp dô đúng 1 đường link xong nhấn submit lia lịa. Rồi ngồi đợi qính trận liên quân luôn quay lại submit tiếp 😝

✅ API Document là gì?

API Document là tài liệu hướng dẫn tham khảo cho API, giúp người dùng API biết cách sử dụng API hiệu quả. Tài liệu API thường dành cho các lập trình viên, giúp lập trình viên có thể đọc và hiểu. Do đó việc tạo ra một tài liệu API được thiết kế tốt, toàn diện và dễ theo dõi là cực kỳ quan trọng.

API Document bao gồm các hướng dẫn về cách sử dụng hiệu quả và tích hợp với một API. Nó là một tài liệu ngắn gọn, chứa tất cả các thông tin được yêu cầu để làm việc với API, với thông tin chi tiết về các function (hàm), class (lớp), return type (kiểu dữ liệu trả về), các argument (tham số),... được hỗ trợ bởi các bài hướng dẫn và ví dụ.

API Document do ai viết?

API Document do Developer viết và hiện nay thường được tạo ra bằng cách sử dụng các thư viện trong code để generate ra luôn.

Các định dạng mô tả API phổ biến như Swagger Specification sẽ tự động hóa quá trình xử lý tài liệu, giúp các nhóm dễ dàng hơn trong việc tạo và bảo trì chúng. Ngoài ra có thể viết thủ công dưới dạng Microsoft Word hay Excel tuỳ ý công ty 😁

Tester chuyên kiểm thử phần mềm có thể dựa vào API Document này để tiến hành kiểm thử.

 

✅ Ứng dụng của API

  • Web API: Cho phép bạn cập nhật cơ sở dữ liệu, lấy dữ liệu và kết nối hầu hết các ứng dụng đến website. Ví dụ: Bạn xây dựng chức năng đăng nhập thông qua Google, Twitter, Facebook,… Hoặc các ứng dụng di động lấy dữ liệu thông qua API.
  • API trên hệ điều hành: Linux hay Windows có rất nhiều API, các developer tạo ra các phần mềm ứng dụng có thể tương tác trực tiếp với hệ điều hành thông qua các tài liệu nhận được từ API đó là phương thức kết nối hoặc đặc tả các hàm. 
  • Framework API của thư viện phần mềm: Triển khai một API có nhiều cách triển khai khác nhau nó làm cho một chương trình viết bằng ngôn ngữ này nhưng lại có thể sử dụng thư viện được viết bằng ngôn ngữ khác. Nó quy định và mô tả các hành động mong muốn mà các thư viện cung cấp. Ví dụ bạn có thể dùng Java để yêu cầu một thư viện tạo tài khoản người dùng được viết bằng PHP.


✳️ Tổng kết những điều nên biết về API

Với những thông tin trên nếu bạn chưa hiểu về API thì hãy nắm nhanh 4 điều cơ bản chính dưới đây:

  • Các nhà phát triển ứng dụng sẽ làm việc với API để tạo ra phần mềm hoặc ứng dụng là chủ yếu. Điều đó rất hiếm khi những end user tương tác trực tiếp đến API. (end user là người dùng bình thường)
  • API sẽ hoạt động như 1 chiếc cổng giúp các công ty chia sẻ thông tin cần thiết được chọn để public. Những thông tin chia sẻ này vẫn tránh được những yêu cầu không mong muốn khi gọi dùng cũng như giao tiếp sử dụng.
  • API sẽ làm cuộc sống của bạn trở nên tốt hơn để trải nghiệm các tiện ích của nhu cầu đời sống, vì có nhiều nhà cung cấp công khai ai dùng cũng được (ví dụ Facebook, Shopee, Telegram,...). Từ đó sẽ giúp bạn tìm kiếm được thông tin cần thiết, quan trọng đối với mình.
  • Các doanh nghiệp là người xây dựng nên API. Ví dụ ứng dụng Zalo Pay, ví Momo là những nền tảng được xây dựng và dùng các API từ ngân hàng cung cấp. (vì thế mà nó cho phép liên kết tùm lum ngân hàng)

✅ Kiểm thử API là gì?

Kiểm thử API là quá trình trực tiếp kiểm tra các giao diện lập trình ứng dụng (APIs). Đây cũng là một phần của quá trình kiểm thử tích hợp để kiểm tra các yếu tố: Tính năng, độ tin cậy, hiệu suất và bảo mật của hệ thống, xem hệ thống đã đáp ứng đủ yêu cầu chưa.

Kiểm thử API sẽ được tiến hành ở tầng nghiệp vụ (business layer), bởi vì các API đều không có GUI. Mọi dữ liệu đều sẽ được trao đổi từ JSON hoặc XML qua những yêu cầu và phản hồi HTTP trong quá trình kiểm thử API. Đây là các hệ thống công nghệ độc lập, làm việc với đa dạng các ngôn ngữ lập trình và công nghệ khác nhau.

Thế thì ai là người kiểm thử API?
Là Tester chứ ai nữa, vì nó thuộc tầng nghiệp vụ mà, công ty nào tạo ra thì có đội ngũ nhân viên chuyên kiểm tra nó luôn (Software Tester)

Các chiến lược kiểm thử API tương tự như những phương pháp kiểm thử phần mềm khác. Trọng tâm chính là xác thực phản hồi của máy chủ. Kiểm thử API bao gồm các việc chính sau:

  • Đưa ra nhiều yêu cầu cho điểm cuối API để kiểm thử hiệu năng. (ví dụ tăng lượng request)
  • Viết các bài kiểm thử đơn vị để kiểm tra logic kinh doanh và tính đúng đắn của chức năng.
  • Kiểm thử bảo mật bằng cách giả lập các cuộc tấn công hệ thống. (ví dụ SQL Injection)
  • Kiểm thử API là bạn sử dụng phần mềm trung gian khác để gọi tới API, nhận kết quả đầu ra và ghi lại phản hồi của hệ thống.
  • Kiểm thử API không tập trung vào giao diện mà chủ yếu tập trung vào lớp business logic của phần mềm.

✅ Tại sao cần kiểm thử API?

Kiểm thử API rất quan trọng nhằm để đảm bảo tính ổn định và tương tác đúng đắn giữa các ứng dụng và dịch vụ. Nó giúp đảm bảo rằng API hoạt động một cách chính xác và đáng tin cậy, đảm bảo rằng các ứng dụng có thể tương tác và sử dụng chức năng của API một cách đúng đắn.

  • API không cần giao diện người dùng nên vẫn kiểm thử được ứng dụng sớm. Điều này giúp tester tìm thấy và fix sớm các vấn đề trong vòng đời phát triển, tiết kiệm được chi phí khắc phục nếu lỗi đó xảy ra trong quá trình kiểm thử GUI.
  • Tiết kiệm chi phí và xây dựng được chiến lược kiểm thử tự động hoàn hảo hơn (cả UI và API)
  • Bạn sẽ tạo ra được chiến lược tự động hóa tốt nếu như bạn hiểu được Kim tự tháp tự động hóa: Unit test -> API testing trên service layer -> kiểm thử UI.
  • Hạn chế kiểm thử hồi quy bằng tay và phát triển phần mềm theo phương pháp Agile. Điều giúp duy trì tính nhanh chóng do sự cần thiết của các đội Agile. Tăng mức độ kiểm thử API và giảm sự phụ thuộc của họ vào kiểm tra GUI.
  • Bằng cách tích hợp API Testing sẽ làm giảm áp lực của kiểm thử hồi quy của nhóm QA. Nhóm QA có thể phản hồi nhanh về chất lượng ứng dụng ngay khi dự án được triển khai (deploy), hệ thống được đánh giá một cách nhanh chóng trước khi kiểm thử GUI. API testing yêu cầu code ít hơn, phạm vi kiểm thử rộng hơn và cung cấp kết quả nhanh hơn.

✅ Lợi ích của kiểm thử API

Kiểm thử API mang lại nhiều lợi ích quan trọng cho quá trình phát triển phần mềm và triển khai ứng dụng. Dưới đây là một số lợi ích chính của việc kiểm thử API:

  • Đảm bảo tính đúng đắn: Kiểm thử API giúp đảm bảo rằng API hoạt động chính xác và đáp ứng các yêu cầu và ràng buộc. Nó đảm bảo rằng API trả về dữ liệu chính xác và thực hiện các chức năng như mong đợi.
  • Kiểm tra tính bảo mật: Kiểm thử API cho phép xác minh tính bảo mật của API. Nó giúp đảm bảo rằng API không có lỗ hổng bảo mật và không mở ra các lỗ hổng tiềm năng trong hệ thống.
  • Đảm bảo tính ổn định: Kiểm thử API giúp xác định và giải quyết các lỗi và sự cố trong API. Nó giúp đảm bảo rằng API hoạt động ổn định và không gây ra các vấn đề không mong muốn trong ứng dụng sử dụng API.
  • Tăng cường khả năng tái sử dụng: Kiểm thử API giúp xác định các lỗi và cải thiện tính đúng đắn của API. Điều này giúp tăng cường khả năng tái sử dụng của API, cho phép nhiều ứng dụng khác nhau sử dụng API một cách tin cậy và hiệu quả.
  • Tăng độ tin cậy và chất lượng: Kiểm thử API giúp cải thiện độ tin cậy và chất lượng của ứng dụng. Điều này đồng nghĩa với việc cung cấp trải nghiệm tốt hơn cho người dùng và giảm thiểu các lỗi và sự cố không mong muốn.
  • Giảm rủi ro và chi phí: Kiểm thử API sớm trong quá trình phát triển giúp phát hiện và khắc phục các vấn đề trước khi chúng trở thành các vấn đề lớn. Điều này giúp giảm rủi ro và chi phí phát sinh sau này trong quá trình triển khai và vận hành ứng dụng.


Nhờ kiểm tra tự động hóa API mà áp lực của quá trình kiểm thử hồi quy nhóm QA đã giảm đáng kể. Khi tích hợp kiểm tra thử tự động API, nhóm QA sẽ có thể trả về các phản hồi nhanh chóng hơn về chất lượng của ứng dụng, ngay sau khi ứng dụng được triển khai. Từ đó, các đánh giá về hệ thống được đưa ra nhanh chóng.

Quá trình kiểm tra thử API có ưu điểm đó là yêu cầu code thấp hơn, đồng thời cũng có phạm vi kiểm tra tốt hơn và đưa ra kết quả nhanh hơn. Không giống như giao diện người dùng, API được ổn định rất sớm và sẽ không có sự thay đổi thường xuyên. Hình thức API testing có giá trị lớn đối với các doanh nghiệp. Cho nên đối với hình thức này, phần mềm của bạn sẽ được kiểm tra kỹ lưỡng, đảm bảo có thể làm hài lòng đối tượng khách hàng mục tiêu của mình.

 

✅ Một số phương pháp kiểm thử API phổ biến

Dưới đây là một số phương pháp kiểm thử API phổ biến:

  • Kiểm thử đơn vị (Unit Testing): Phương pháp này tập trung vào việc kiểm tra từng đơn vị code của API, như hàm, phương thức hay lớp. Điều này giúp đảm bảo tính đúng đắn và chức năng của từng phần của API.
  • Kiểm thử chức năng (Functional Testing): Phương pháp này kiểm tra chức năng của API từng phần hoặc toàn bộ. Kiểm tra các kịch bản chức năng để đảm bảo rằng API hoạt động đúng và trả về kết quả mong đợi.
  • Kiểm thử giao diện (Interface Testing): Kiểm tra giao diện API để đảm bảo rằng các yêu cầu và phản hồi được truyền đi và nhận về đúng cách. Điều này bao gồm kiểm tra cấu trúc, kiểu dữ liệu, tham số và mã phản hồi của API.
  • Kiểm thử tải (Load Testing): Đánh giá hiệu suất và khả năng chịu tải của API trong điều kiện tải cao. Kiểm tra khả năng xử lý một lượng lớn yêu cầu và đảm bảo rằng API không gặp vấn đề hiệu suất.
  • Kiểm thử bảo mật (Security Testing): Kiểm tra tính bảo mật của API bằng cách xác định và khắc phục các lỗ hổng bảo mật. Điều này bao gồm xác thực, phân quyền, kiểm tra xác thực đầu vào, kiểm tra xác thực và mã hóa dữ liệu.
  • Kiểm thử phi chức năng (Non-functional Testing): Kiểm tra các yếu tố phi chức năng của API như tương tác người dùng, độ tin cậy, khả năng mở rộng, khả năng khôi phục, và độ ổn định.
  • Kiểm thử tích hợp (Integration Testing): Kiểm tra tích hợp của API với các dịch vụ hoặc hệ thống khác. Đảm bảo rằng API tương tác chính xác và thành công với các thành phần bên ngoài.
  • Kiểm thử hồi quy (Regression Testing): Kiểm tra lại API sau khi có các thay đổi hoặc bổ sung mới để đảm bảo rằng những thay đổi không làm ảnh hưởng đến tính đúng đắn và chức năng của API.

✅ Một số công cụ kiểm thử API phổ biến


Trong các công cụ trên thì Postman đang là nền tảng kiểm tra API manual tiện dụng và mạnh mẽ nhất. (nền tảng là vì nó nhiều thứ và có chứa cả công cụ)

Còn về kiểm tra API auto thì có thể code tay rồi dùng thư viện hỗ trợ như Java và Rest Assured hoặc dùng luôn tools tự động hoá như Katalon Studio, akaAT Studio.

Xem thêm chi tiết các công cụ khác: 15 công cụ kiểm tra API hàng đầu năm 2022

Và chúng ta sẽ dùng Postman trong khoá học này nhé !!

  • Anh Tester

    Đường dẫu khó chân vẫn cần bước đi
    Đời dẫu khổ tâm vẫn cần nghĩ thấu