API là viết tắt của Giao diện lập trình ứng dụng. Nó là một tập hợp các quy tắc, giao thức và công 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. API xác định các phương thức và định dạng dữ liệu mà ứng dụng có thể sử dụng để yêu cầu và trao đổi thông tin.
Kiểm thử API là một loại kiểm thử phần mềm tập trung vào việc kiểm tra API trực tiếp, kiểm tra chức năng, độ tin cậy, hiệu suất và bảo mật của chúng. Nó liên quan đến việc xác thực các điểm cuối, yêu cầu, phản hồi, định dạng dữ liệu, xử lý lỗi và hơn thế nữa của API.
SOAP (Simple Object Access Protocol) và REST (Representational State Transfer) là hai cách tiếp cận khác nhau để xây dựng các dịch vụ web. SOAP là một giao thức với các tiêu chuẩn nghiêm ngặt và sử dụng XML để định dạng tin nhắn, trong khi REST là một phong cách kiến trúc dựa trên các tiêu chuẩn đơn giản, nhẹ hơn như JSON, XML hoặc các tiêu chuẩn khác.
Ưu điểm của Kiểm thử API bao gồm thực hiện kiểm tra nhanh hơn, phạm vi kiểm tra rộng hơn, phát hiện sớm các vấn đề, tự động hóa dễ dàng hơn, kiểm tra bảo mật được cải thiện và giảm nỗ lực kiểm tra tổng thể.
Dịch vụ web là một loại API sử dụng cụ thể các giao thức và công nghệ web để giao tiếp giữa các ứng dụng hoặc hệ thống khác nhau. Mặt khác, API có thể bao gồm các giao diện khác nhau ngoài các dịch vụ web, cho phép các loại hệ thống phần mềm khác nhau giao tiếp.
Mã trạng thái HTTP là các phản hồi được chuẩn hóa được cung cấp bởi các máy chủ để cho biết kết quả yêu cầu của khách hàng. Chúng là các mã số gồm ba chữ số được gửi như một phần của tiêu đề HTTP khi một yêu cầu được thực hiện đến máy chủ.
Mã trạng thái HTTP được nhóm thành các loại khác nhau: 1xx (phản hồi thông tin), 2xx (thành công), 3xx (chuyển hướng), 4xx (lỗi máy khách) và 5xx (lỗi máy chủ). Mỗi danh mục chỉ ra một lớp phản hồi cụ thể.
Các loại kiểm thử API phổ biến bao gồm kiểm tra chức năng, kiểm tra hiệu suất, kiểm tra bảo mật, kiểm tra tải, kiểm tra khả năng tương tác và kiểm tra mờ.
Giới hạn sử dụng API đề cập đến các hạn chế do nhà cung cấp API đặt ra về số lượng yêu cầu, giới hạn tốc độ, đặc quyền truy cập hoặc mức sử dụng dữ liệu cho một điểm cuối API cụ thể trong một khung thời gian nhất định.
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. Điểm cuối đề cập đến một URL hoặc URI cụ thể mà ứng dụng khách truy cập để tương tác với API.
Xác thực điểm cuối liên quan đến việc kiểm tra tính đúng đắn và chức năng của các điểm cuối bằng cách gửi yêu cầu và xác minh phản hồi. Nó bao gồm kiểm tra tính khả dụng của điểm cuối, thời gian phản hồi và dữ liệu trả về.
Xác thực Điểm cuối Tìm kiếm, Lọc và Sắp xếp liên quan đến việc xác minh rằng các chức năng này trả về kết quả chính xác dựa trên truy vấn tìm kiếm, tiêu chí lọc và thông số sắp xếp được cung cấp trong yêu cầu API.
Xác thực phương thức yêu cầu đảm bảo rằng các phương thức HTTP khác nhau (ví dụ: GET, POST, PUT, DELETE) hoạt động chính xác và thực hiện các hành động dự định như được chỉ định trong tài liệu API.
Xác thực Tiêu đề yêu cầu liên quan đến việc xác minh rằng các tiêu đề được gửi trong yêu cầu API chứa thông tin mong đợi, chẳng hạn như loại nội dung, mã thông báo xác thực hoặc bất kỳ tiêu đề bắt buộc nào khác.
Xác thực Nội dung yêu cầu liên quan đến việc đảm bảo rằng dữ liệu hoặc tải trọng được gửi trong yêu cầu API khớp với định dạng, cấu trúc và nội dung dự kiến được xác định trong đặc tả API hoặc tài liệu.
Để xác thực giới hạn tốc độ, hãy mô phỏng các yêu cầu vượt quá giới hạn tốc độ đã xác định và xác minh rằng API từ chối các yêu cầu bổ sung như mong đợi. Đối với bộ nhớ đệm, hãy kiểm tra bằng cách gửi yêu cầu và kiểm tra xem các phản hồi được lưu trong bộ nhớ cache dự kiến có được trả về hay không, tránh các cuộc gọi không cần thiết đến máy chủ.
Để phân trang, hãy kiểm tra bằng cách tìm nạp một tập dữ liệu lớn và xác thực xem API có trả về số lượng bản ghi chính xác trên mỗi trang với siêu dữ liệu chính xác như số trang, liên kết tiếp theo/trước đó và tổng bản ghi hay không. Con trỏ có thể được kiểm tra bằng cách đảm bảo điều hướng dựa trên con trỏ trả về các tập dữ liệu dự kiến.
Một số kiểu kiến trúc để tạo API Web bao gồm kiến trúc RESTful, SOAP (Giao thức kiến trúc hướng dịch vụ), GraphQL và RPC (Cuộc gọi thủ tục từ xa).
API Web có thể được sử dụng bởi các nhà phát triển, ứng dụng của bên thứ ba hoặc bất kỳ thực thể nào yêu cầu quyền truy cập vào các chức năng hoặc dữ liệu cụ thể do API cung cấp.
Các phương thức yêu cầu phổ biến cho API bao gồm GET (truy xuất dữ liệu), POST (tạo dữ liệu), PUT (cập nhật dữ liệu), DELETE (xóa dữ liệu), PATCH (cập nhật một phần dữ liệu) và OPTIONS (nhận các phương thức được hỗ trợ).
Ưu điểm của Kiểm thử API bao gồm thực hiện kiểm tra nhanh hơn, phạm vi kiểm tra rộng hơn, phát hiện sớm các vấn đề, tự động hóa dễ dàng hơn, kiểm tra bảo mật được cải thiện và giảm nỗ lực kiểm tra tổng thể.
Các giao thức phổ biến được sử dụng trong kiểm thử API bao gồm HTTP / HTTPS (API RESTful), SOAP (giao thức dựa trên XML) và các giao thức như TCP / IP cho một số API chuyên biệt.
Môi trường thử nghiệm để kiểm tra API liên quan đến việc thiết lập trong đó API có thể được kiểm tra độc lập với môi trường sản xuất, thường sử dụng các công cụ như Postman, SoapUI hoặc tập lệnh tùy chỉnh.
Các nguyên tắc của thiết kế kiểm thử API bao gồm hiểu các thông số kỹ thuật API, tập trung vào các kịch bản chính, ưu tiên xác thực đầu vào, thiết kế các trường hợp kiểm thử có thể tái sử dụng, xử lý các khía cạnh bảo mật và đảm bảo quản lý dữ liệu thử nghiệm.
Các loại kiểm thử API phổ biến bao gồm kiểm tra chức năng, kiểm tra hiệu suất, kiểm tra bảo mật, kiểm tra tải, kiểm tra khả năng tương tác và kiểm tra mờ.
Quy trình kiểm thử API liên quan đến việc lập kế hoạch, thiết kế các trường hợp kiểm thử, chuẩn bị dữ liệu thử nghiệm, thực hiện kiểm tra, phân tích kết quả, báo cáo sự cố và kiểm tra lại sau khi sửa lỗi.
Trong quá trình kiểm tra API, các khía cạnh chính cần kiểm tra bao gồm chức năng điểm cuối, độ chính xác của phản hồi, xử lý lỗi, định dạng dữ liệu (JSON / XML), bảo mật, giới hạn tốc độ và hiệu suất trong các tải khác nhau.
Cách tiếp cận tốt nhất để kiểm tra API liên quan đến việc hiểu các yêu cầu, thiết kế các trường hợp kiểm thử bao gồm các kịch bản tích cực / tiêu cực, tự động hóa các thử nghiệm lặp đi lặp lại, xác thực phản hồi và liên tục cải thiện phạm vi kiểm tra.
Các công cụ để kiểm tra API bao gồm Postman, SoapUI, RestAssured, JMeter, Karate, pytest, Newman và các công cụ khác, tùy thuộc vào yêu cầu và loại thử nghiệm cần thiết.
Kiểm thử API xác thực API của ứng dụng, tập trung vào chức năng, hiệu suất, bảo mật và tích hợp, trong khi Kiểm thử đơn vị xác minh các đơn vị hoặc thành phần riêng lẻ của mã về tính chính xác.
Kiểm tra API |
Kiểm thử UNIT |
Thử nghiệm này thuộc sở hữu của nhóm Phân tích chất lượng. |
Thử nghiệm này thuộc sở hữu của các nhà phát triển làm việc trên các mô-đun tương ứng. |
Điều này thuộc về thể loại thử nghiệm hộp đen. |
Điều này thuộc về thử nghiệm hộp trắng. |
Chức năng hệ thống đầy đủ được xem xét trong kiểm thử API vì API sẽ được sử dụng bởi các nhà phát triển bên ngoài. |
Như tên cho thấy, thử nghiệm này xác minh xem đơn vị mã có hoạt động như mong đợi hay không trong sự cô lập. |
Trong thử nghiệm này, người thử nghiệm không có quyền truy cập vào mã nguồn nội bộ và nó chỉ tập trung vào chức năng của API. |
Các nhà phát triển làm việc để phát triển các trường hợp kiểm thử đơn vị có quyền truy cập vào mã nguồn vì họ cần đảm bảo các mô-đun được phát triển được thông qua trước khi phân phối. |
Những thách thức chính trong kiểm thử API bao gồm tính khả dụng của điểm cuối, xác thực thích hợp, xác thực định dạng dữ liệu, giới hạn tốc độ xử lý, lập phiên bản, duy trì dữ liệu thử nghiệm, xử lý phần phụ thuộc và phản hồi động.
Các phương pháp kiểm thử trong kiểm thử API bao gồm kiểm tra chức năng, kiểm tra tải, kiểm tra bảo mật, kiểm tra hiệu suất, kiểm tra mờ, kiểm tra khả năng tương tác và xác thực dữ liệu yêu cầu / phản hồi.
Các lỗi API phổ biến bao gồm lỗi máy khách 4xx (ví dụ: 400 Yêu cầu không hợp lệ, 401 Không trái phép, 404 Không tìm thấy) và lỗi máy chủ 5xx (ví dụ: 500 Lỗi máy chủ nội bộ, 503 Dịch vụ không khả dụng).
Kiểm thử API thường xác định các lỗi liên quan đến phản hồi không chính xác (ví dụ: định dạng dữ liệu không chính xác, thiếu trường), lỗ hổng bảo mật, tắc nghẽn hiệu suất, xử lý lỗi không đúng cách và các vấn đề giới hạn tốc độ.
Tài liệu API là hướng dẫn toàn diện cung cấp thông tin về các điểm cuối, định dạng yêu cầu/phản hồi, thông số, phương thức xác thực, giới hạn tốc độ, mã lỗi và ví dụ sử dụng API có sẵn.
Các thay đổi và ngừng sử dụng API rất khác nhau tùy theo nhà cung cấp. Một số API có thay đổi thường xuyên do cập nhật hoặc cải tiến tính năng, trong khi những API khác có thể vẫn ổn định trong thời gian dài hơn. Các API không dùng nữa thường bị loại bỏ dần dần theo thời gian.
REST là viết tắt của Representational State Transfer, một phong cách kiến trúc xác định một tập hợp các nguyên tắc để thiết kế các ứng dụng nối mạng. Nó sử dụng các phương thức HTTP tiêu chuẩn (GET, POST, PUT, DELETE) để liên lạc. Dịch vụ Web RESTful là gì? -RESTful Web Service là một dịch vụ web dựa trên các nguyên tắc REST. Nó hiển thị tài nguyên thông qua các URL được chuẩn hóa và sử dụng các phương thức HTTP để thực hiện các hoạt động CRUD (Tạo, Đọc, Cập nhật, Xóa) trên các tài nguyên này.
Trong REST, tài nguyên là bất kỳ thông tin hoặc thực thể nào có thể được truy cập thông qua mã định danh duy nhất (URL) và được thao tác bằng các hoạt động CRUD tiêu chuẩn.
Cách phổ biến nhất để thể hiện tài nguyên trong REST là sử dụng JSON (Ký hiệu đối tượng JavaScript) hoặc XML (Ngôn ngữ đánh dấu mở rộng) để tuần tự hóa dữ liệu.
Các dịch vụ web RESTful chủ yếu sử dụng giao thức HTTP để liên lạc, tận dụng các phương thức của nó (GET, POST, PUT, DELETE) và mã trạng thái để tương tác với các tài nguyên.
Các đặc điểm chính của REST bao gồm không trạng thái, kiến trúc máy khách-máy chủ, giao diện thống nhất (sử dụng URL), hệ thống phân lớp, khả năng lưu trữ và mô hình giao tiếp không trạng thái.
Trong REST, nhắn tin đề cập đến quá trình trao đổi tài nguyên giữa máy khách và máy chủ bằng cách sử dụng các phương thức HTTP và định dạng dữ liệu được tiêu chuẩn hóa.
Các thành phần cốt lõi của yêu cầu HTTP bao gồm dòng yêu cầu (phương thức, URL, giao thức/phiên bản), tiêu đề yêu cầu (siêu dữ liệu), nội dung yêu cầu (tùy chọn cho một số phương thức) và đôi khi là tham số truy vấn.
Không, theo nguyên tắc RESTful, không nên sử dụng các yêu cầu GET để tạo tài nguyên. Các yêu cầu PUT thường được sử dụng để cập nhật hoặc tạo tài nguyên, trong khi các yêu cầu POST đặc biệt để tạo tài nguyên.
Có, trong các dịch vụ RESTful, PUT được sử dụng để cập nhật hoặc tạo tài nguyên nếu nó không tồn tại, trong khi POST được sử dụng đặc biệt để tạo tài nguyên mới.
Phương thức OPTIONS trong các dịch vụ Web RESTFUL cho phép khách hàng xác định phương thức HTTP và tiêu đề nào được phép cho một tài nguyên cụ thể. Nó cung cấp thông tin về các hoạt động được hỗ trợ cho tài nguyên.
URI (Uniform Resource Identifier) là một chuỗi các ký tự xác định một tài nguyên cụ thể. Trong REST, URI được sử dụng để xác định duy nhất các tài nguyên, thường được định dạng dưới dạng URL.
Trong các dịch vụ Web RESTful, payload đề cập đến dữ liệu được truyền trong yêu cầu HTTP hoặc nội dung phản hồi. Nó chứa các đại diện của các tài nguyên được trao đổi giữa máy khách và máy chủ.
Không có giới hạn trên được tiêu chuẩn hóa được xác định cho kích thước tải trọng trong phương thức POST. Nó có thể thay đổi dựa trên cấu hình máy chủ, giới hạn mạng và các ràng buộc cụ thể của API.
Độ trễ đề cập đến thời gian phản hồi hoặc độ trễ được thực hiện bởi yêu cầu đến máy chủ. Chúng tôi cần đảm bảo rằng độ trễ liên quan đến việc tiếp cận máy chủ là tối thiểu vì độ trễ càng cao, tác động đến tốc độ và hiệu suất của ứng dụng càng lớn.
Kiểm thử tự động rất hữu ích về lâu dài vì nó giúp tối đa hóa phạm vi kiểm thử của các ứng dụng trong một khoảng thời gian ngắn hơn, có nghĩa là nó giúp kiểm tra các bộ thử nghiệm lớn rất dễ dàng và nhanh chóng. Nó cho phép thực hiện song song và giúp giảm các lỗi do con người tạo ra trong thử nghiệm. Nó tiết kiệm thời gian cần thiết để kiểm tra các ứng dụng do đó tiết kiệm chi phí tổng thể.
Input injection là hành động mô phỏng đầu vào để kiểm tra API. Nó có thể được mô phỏng theo nhiều cách khác nhau:
Vâng, điều đó là có thể. Điều này là do chúng tôi đang gửi các yêu cầu qua internet chủ yếu tuân theo giao thức HTTP. Giao thức này dựa trên văn bản và dễ đọc hơn. Do đó, cần phải thực hiện kiểm tra bảo mật của các API để đảm bảo các hệ thống an toàn hơn.
Để kiểm tra tính bảo mật của API trong quá trình kiểm thử API, chúng ta cần xác thực 2 điều:
Xác thực: Danh tính của người dùng cuối có chính xác hay không.
Ủy quyền: Liệu người dùng có được phép truy cập tài nguyên hay không.
Chúng tôi cũng có thể xác thực xem TLS hoặc chứng chỉ SSL được sử dụng qua giao thức HTTPS có hợp lệ hay không.
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