Apidog Docs
🇻🇳 Tiếng Việt
  • 🇺🇸 English
  • 🇯🇵 日本語
  • 🇪🇸 Español
  • 🇰🇷 한국인
  • 🇨🇳 简体中文
  • 🇵🇹 Português (Portugal)
  • 🇮🇩 Bahasa Indonesia
  • 🇧🇷 Português (Brasil)
  • 🇻🇳 Tiếng Việt
  • 🇨🇳 繁體中文
🇻🇳 Tiếng Việt
  • 🇺🇸 English
  • 🇯🇵 日本語
  • 🇪🇸 Español
  • 🇰🇷 한국인
  • 🇨🇳 简体中文
  • 🇵🇹 Português (Portugal)
  • 🇮🇩 Bahasa Indonesia
  • 🇧🇷 Português (Brasil)
  • 🇻🇳 Tiếng Việt
  • 🇨🇳 繁體中文
🇻🇳 Tiếng Việt
  • 🇺🇸 English
  • 🇯🇵 日本語
  • 🇪🇸 Español
  • 🇰🇷 한국인
  • 🇨🇳 简体中文
  • 🇵🇹 Português (Portugal)
  • 🇮🇩 Bahasa Indonesia
  • 🇧🇷 Português (Brasil)
  • 🇻🇳 Tiếng Việt
  • 🇨🇳 繁體中文
Learning Center
HomeSupport CenterAPI ReferencesDownloadChangelog
Learning Center
HomeSupport CenterAPI ReferencesDownloadChangelog
  1. Kịch bản kiểm thử
  • Trung tâm Học tập Apidog
  • Bắt đầu
    • Giới thiệu về Apidog
    • Các khái niệm cơ bản trong Apidog
    • Điều hướng Apidog
    • Bắt đầu nhanh
      • Tổng quan
      • Tạo một Endpoint
      • Tạo yêu cầu
      • Thêm một khẳng định
      • Tạo kịch bản kiểm thử
      • Chia sẻ tài liệu API
      • Khám phá thêm
    • Di chuyển sang Apidog
      • Tổng quan
      • Nhập thủ công
      • Nhập theo lịch (Liên kết nguồn dữ liệu)
      • Tùy chọn nhập
      • Xuất dữ liệu
      • Nhập từ
        • Nhập từ Postman
        • Nhập OpenAPI Spec
        • Nhập cURL
        • Nhập Markdown
        • Nhập từ Insomnia
        • Nhập từ apiDoc
        • Nhập tệp .har
        • Nhập WSDL
  • Dữ liệu API mock
    • Tổng quan
    • Smart Mock
    • Mock tùy chỉnh
    • Trình tự ưu tiên Mock
    • Mock Scripts
    • Cloud Mock
    • Self-Hosted Runner Mock
    • Ngôn ngữ Mock (Locales)
  • Tài khoản và tùy chọn
    • Cài đặt tài khoản
    • Tạo Token truy cập OpenAPI
    • Thông báo
    • Cài đặt ngôn ngữ
    • Phím tắt
    • Cấu hình Proxy Mạng
    • Sao lưu dữ liệu
    • Cập nhật Apidog
    • Xóa tài khoản
    • Tính năng thử nghiệm
  • Gửi yêu cầu
    • Tổng quan
    • Gỡ lỗi SSE
    • MCP Client
    • Socket.IO
    • WebSocket
    • Webhook
    • SOAP hoặc WebService
    • GraphQL
    • gRPC
    • Sử dụng Tác nhân Proxy Yêu cầu để Gỡ lỗi
    • Tạo yêu cầu
      • Lịch sử yêu cầu
      • Cơ bản về yêu cầu
      • Tham số và Body
      • Header của yêu cầu
      • Cài đặt yêu cầu
      • Gỡ lỗi yêu cầu
      • Lưu yêu cầu dưới dạng Endpoint
      • HTTP/2
    • Xác thực và phân quyền
      • Tổng quan
      • Chứng chỉ CA và Chứng chỉ Client
      • Các loại ủy quyền
      • Digest Auth
      • OAuth 1.0
      • OAuth 2.0
      • Xác thực Hawk
      • Kerberos
      • NTLM
      • Akamai EdgeGrid
    • Phản hồi và cookie
      • Xem phản hồi API
      • Quản lý Cookie
      • Tổng quan
  • Phát triển và gỡ lỗi API
    • Tổng quan
    • Tạo yêu cầu
    • Gửi yêu cầu
    • Trường hợp gỡ lỗi
    • Trường hợp kiểm thử
    • Giá trị động
    • Xác thực phản hồi
    • Design-First vs Request-First
    • Tạo mã
    • Môi trường và biến
      • Tổng quan
      • Sử dụng biến
      • Quản lý môi trường
    • Bí mật trong vault
      • Tổng quan
      • HashiCorp Vault
      • Azure Key Vault
      • AWS Secrets Manager
    • Mô-đun giá trị động
      • Hãng hàng không
      • Animal
      • Màu sắc
      • Commerce
      • Company
      • Cơ sở dữ liệu
      • Kiểu dữ liệu
      • Ngày
      • Finance
      • Food
      • Git
      • Hacker
      • Helpers
      • Hình ảnh
      • Internet
      • Vị trí
      • Lorem
      • Music
      • Number
      • Person
      • Phone
      • Science
      • String
      • Hệ thống
      • Vehicle
      • Từ
    • Bộ xử lý trước và sau
      • Tổng quan
      • Khẳng định
      • Trích xuất biến
      • Chờ
      • Bảo mật
      • Thao tác cơ sở dữ liệu
        • Tổng quan
        • MySQL
        • MongoDB
        • Redis
        • Oracle Client
      • Sử dụng script
        • Tổng quan
        • Script tiền xử lý
        • Tập lệnh hậu xử lý
        • Public Scripts
        • Tài liệu tham khảo về Postman Scripts
        • Gọi các ngôn ngữ lập trình khác
        • Sử dụng thư viện JS
        • Trực quan hóa phản hồi
        • Ví dụ script
          • Tập lệnh khẳng định
          • Sử dụng biến
          • Sửa đổi yêu cầu
          • Các ví dụ khác
    • Gỡ lỗi API
      • AI Agent Debugger
      • A2A Debugger
  • Thiết kế API
    • Tổng quan
    • Tạo một dự án API mới
    • Kiến thức cơ bản về Endpoint
    • Hướng dẫn thiết kế API
    • Mô-đun
    • Cấu hình nhiều ví dụ về body của yêu cầu
    • Thành phần
    • Trường Chung
    • Tham số toàn cục
    • Lịch sử thay đổi endpoint
    • Bình luận
    • Quản lý Endpoint Hàng loạt
    • Custom Protocol API
    • Chế độ Spec-first (Beta)
    • Lược đồ bảo mật
      • Tổng quan
      • Tạo Security Scheme
      • Sử dụng Lược đồ bảo mật
      • Lược đồ bảo mật trong tài liệu trực tuyến
    • Tính năng nâng cao
      • Trường Endpoint Tùy chỉnh
      • Các kịch bản kiểm thử được liên kết
      • Trạng thái Endpoint
      • Giao diện của Danh sách Tham số
      • Nhận dạng duy nhất endpoint
    • Schemas
      • Tổng quan
      • Tạo Schema Mới
      • Xây dựng Schema
      • Tạo Schema từ JSON, v.v.
      • oneOf, allOf, anyOf
      • Sử dụng Discriminator
  • Kiểm thử API
    • Tổng quan
    • Kịch bản kiểm thử
      • Tạo một kịch bản kiểm thử
      • Truyền dữ liệu giữa các yêu cầu
      • Điều kiện điều khiển luồng
      • Đồng bộ dữ liệu từ endpoint và trường hợp endpoint
      • Nhập Endpoint và Endpoint Case từ các dự án khác
      • Xuất Kịch bản Kiểm thử
    • Báo cáo kiểm thử
      • Báo cáo kiểm thử
    • Chạy kịch bản kiểm thử
      • Chạy một kịch bản kiểm thử
      • Chạy hàng loạt các kịch bản kiểm thử
      • Kiểm thử dựa trên dữ liệu
      • Dữ liệu kiểm thử dùng chung
      • Tác vụ đã lên lịch
      • Quản lý môi trường runtime của API từ các dự án khác
    • Bộ kiểm thử
      • Tổng quan
      • Tạo một bộ kiểm thử
      • Điều phối Bộ kiểm thử
      • Chạy bộ kiểm thử cục bộ
      • Chạy Bộ Kiểm Thử Qua CLI
      • Tác vụ đã lên lịch
    • Kiểm thử API
      • Kiểm thử tích hợp
      • Kiểm thử hiệu năng
      • Kiểm thử End-to-End
      • Kiểm thử hồi quy
      • Kiểm thử hợp đồng
    • Apidog CLI
      • Tổng quan
      • Cài đặt và chạy Apidog CLI
      • Tùy chọn Apidog CLI
    • CI/CD
      • Tổng quan
      • Tích hợp với Github Actions
      • Tích hợp với Gitlab
      • Tích hợp với Jenkins
      • Kích hoạt kiểm thử bằng Git Commit
  • Xuất bản tài liệu API
    • Tổng quan
    • Các công nghệ API được hỗ trợ
    • Chia sẻ nhanh
    • Xem tài liệu API
    • Tài liệu Markdown
    • Xuất bản site tài liệu
    • Trang đăng nhập tùy chỉnh
    • Bố cục tùy chỉnh
    • CSS, JavaScript, HTML tùy chỉnh
    • Tên miền tùy chỉnh
    • Tính năng AI
    • Cài đặt SEO
    • Cài đặt nâng cao
      • Tìm kiếm tài liệu
      • Proxy CORS
      • Tích hợp Google Analytics
      • Cài đặt cây thư mục
      • Cài đặt khả năng hiển thị
      • Nhúng giá trị vào URL tài liệu
    • Phiên bản API
      • Tổng quan
      • Tạo phiên bản API
      • Xuất bản các phiên bản API
      • Chia sẻ endpoint theo phiên bản API
  • Nhánh
    • Tổng quan
    • Tạo một Sprint Branch
    • Kiểm thử API trong một nhánh
    • Thiết kế API trong một nhánh
    • Hợp nhất các nhánh Sprint
    • Quản lý Nhánh Sprint
    • AI Branch (Beta)
  • Tính năng AI
    • Tổng quan
    • Bật các tính năng AI
    • Tạo Trường hợp Kiểm thử
    • Sửa đổi Schema bằng AI
    • Kiểm tra tuân thủ endpoint
    • Kiểm tra mức độ hoàn chỉnh của tài liệu API
    • Đặt tên trường bằng AI
    • Câu hỏi thường gặp
  • Máy chủ MCP Apidog
    • Tổng quan
    • Kết nối dự án Apidog với AI
    • Kết nối tài liệu đã xuất bản với AI
    • Kết nối tệp OpenAPI với AI
  • Thực hành tốt nhất
    • Xử lý chữ ký API
    • Truy cập các API được bảo vệ bằng OAuth 2.0
    • Quy trình cộng tác
    • Quản lý trạng thái xác thực
  • Không gian ngoại tuyến
    • Tổng quan
  • Apidog Europe
    • Apidog Europe
  • Quản trị
    • Quản lý dự án
      • Quản lý dự án
      • Cài đặt thông báo
      • Quản lý thành viên dự án
      • Tài nguyên dự án
        • Kết nối cơ sở dữ liệu
        • Kết nối Git
    • Quản lý nhóm
      • Quản lý nhóm
      • Quản lý thành viên nhóm
      • Hoạt động của nhóm
      • Vai trò & Quyền của Nhóm
      • Tài nguyên nhóm
        • General Runner
        • Biến nhóm
        • Request Proxy Agent
      • Cộng tác thời gian thực
        • Cộng tác nhóm
    • Danh sách kiểm tra onboarding
      • Khái niệm cơ bản
      • Hướng dẫn nhập môn
    • Quản lý tổ chức
      • Quản lý Tổ chức
      • Vai trò & Quyền trong Tổ chức
      • Quản lý gói
        • Người quản lý thanh toán trong tổ chức
      • Đăng nhập một lần (SSO)
        • Tổng quan về SSO
        • Cấu hình Microsoft Entra ID
        • Cấu hình Okta
        • Cấu hình SSO cho một tổ chức
        • Quản lý tài khoản người dùng
        • Ánh xạ Nhóm tới Đội
      • Cấp phát SCIM
        • Giới thiệu về cấp phát SCIM
        • Microsoft Entra ID
        • Okta
      • Tài nguyên tổ chức
        • Self-Hosted Runner
  • Thanh toán
    • Tổng quan
    • Credits
    • Nâng cấp gói của bạn
    • Phương thức thanh toán thay thế
    • Quản lý đăng ký
    • Chuyển các nhóm trả phí vào tổ chức
  • Tiện ích bổ sung
    • API Hub
    • Apidog Intellij IDEA Plugin
    • Tiện ích mở rộng trình duyệt
      • Chrome
      • Microsoft Edge
    • Proxy yêu cầu
      • Proxy yêu cầu trên Web
      • Proxy yêu cầu trong tài liệu được chia sẻ
      • Proxy yêu cầu trong Client
  • Dữ liệu và bảo mật
    • Lưu trữ và bảo mật dữ liệu
    • Quyền riêng tư và bảo mật dữ liệu người dùng
    • Định tuyến yêu cầu và bảo mật dữ liệu
  • Tham chiếu
    • Phương pháp tiếp cận API Design-First
    • Phần mở rộng Đặc tả OpenAPI của Apidog
    • JSONPath
    • XPath
    • Biểu thức chính quy
    • JSON Schema
    • Định dạng tệp CSV
    • Cài đặt môi trường Java
    • Môi trường triển khai Runner
    • Cú pháp Markdown của Apidog
    • Tiện ích mở rộng Swagger của Apidog
      • Tổng quan
      • x-apidog-folder
      • x-apidog-status
      • x-apidog-name
      • x-apidog-maintainer
    • Tiện ích mở rộng JSON Schema của Apidog
      • Tổng quan
      • x-apidog-mock
      • x-apidog-orders
      • x-apidog-enum
  • Trung tâm hỗ trợ
  1. Kịch bản kiểm thử

Điều kiện điều khiển luồng

Bạn có thể thêm các điều kiện điều khiển luồng (vòng lặp, điều kiện, chờ, nhóm, v.v.) vào các kịch bản kiểm thử của mình. Điều này tăng cường khả năng sử dụng các kịch bản kiểm thử/cấu hình quy trình phức tạp hơn, cuối cùng giải quyết các thách thức kiểm thử của những kịch bản phức tạp thông qua các tính năng kiểm thử tự động.
Điều kiện điều khiển luồng

Vòng lặp For#

Khi bạn cần gửi một yêu cầu nhiều lần liên tiếp, sử dụng vòng lặp for là một cách tiếp cận hiệu quả. Dưới đây là cách sử dụng hiệu quả vòng lặp for trong các kịch bản kiểm thử Apidog của bạn:
Thiết lập số lần lặp: Quyết định vòng lặp cần chạy bao nhiêu lần. Đây có thể là một số cố định hoặc một {{variable}}.
Thêm yêu cầu: Trong vòng lặp for, bạn có thể bao gồm một hoặc nhiều yêu cầu, cũng như các vòng lặp hoặc nhánh điều kiện khác. Tính linh hoạt này cho phép tạo các kịch bản kiểm thử phức tạp, trong đó nhiều hành động cần được kiểm thử theo trình tự.
Điều kiện Break If: Bạn có thể thêm điều kiện Break if vào vòng lặp for. Điều này sẽ kết thúc vòng lặp ngay lập tức nếu điều kiện được thỏa mãn. Bạn có thể kéo và điều chỉnh vị trí của Break if hoặc thậm chí thêm nhiều điều kiện Break if để xử lý các kịch bản khác nhau.
Xử lý On Error: Quản lý lỗi bằng cách thêm điều kiện On Error vào vòng lặp. Nếu xảy ra lỗi, các hành động được chỉ định sẽ được kích hoạt:
Bỏ qua: Vòng lặp tiếp tục với yêu cầu tiếp theo.
Tiếp tục: Bỏ qua các yêu cầu còn lại trong chu kỳ hiện tại và chuyển sang lần lặp tiếp theo.
Ngắt thực thi: Dừng vòng lặp và tiếp tục với các yêu cầu tiếp theo bên ngoài vòng lặp.
Kết thúc thực thi: Dừng hoàn toàn toàn bộ kịch bản kiểm thử.
Điều kiện On Error được cố định ở đầu vòng lặp và không thể di chuyển.

Sử dụng chỉ mục vòng lặp trong yêu cầu#

Chỉ mục hiện tại của vòng lặp có thể được sử dụng như một biến cục bộ trong các yêu cầu để điều chỉnh động tham số hoặc body của yêu cầu. Để sử dụng tính năng này:
1
Thêm một vòng lặp for và bao gồm một yêu cầu trong vòng lặp.
2
Nhấp vào biểu tượng đũa thần 🪄 trong tham số của yêu cầu và chọn "Retrieve pre-step data."
Tính năng "Retrieve pre-step data" chỉ khả dụng trong mô-đun "Tests" và không khả dụng trong mô-đun "APIs".
Khi sử dụng "Retrieve pre-step data", giá trị chỉ có thể được lấy khi toàn bộ kịch bản kiểm thử được chạy cùng nhau; không thể truy cập giá trị này khi chạy từng bước riêng lẻ.
3
Chọn tùy chọn vòng lặp, thường được gắn nhãn là "Loop n times."
4
Chọn "Current loop index."
5
Bạn sẽ nhận được một biến động như {{$.5.index}}. Nhấp vào "Insert", và biến này sẽ được thay thế tại thời điểm chạy bằng chỉ mục của vòng lặp hiện tại, chẳng hạn như 0 hoặc 5.
Chỉ mục của vòng lặp luôn bắt đầu từ 0.

Vòng lặp ForEach#

Khi bạn có một mảng chứa nhiều phần tử (một danh sách nội dung cụ thể hoặc một danh sách thu được từ các bước trước), và bạn cần thực hiện cùng một thao tác trên từng mục trong danh sách (ví dụ: trước tiên lấy danh sách sản phẩm, sau đó thêm từng sản phẩm trong danh sách vào giỏ hàng), bạn cần sử dụng vòng lặp ForEach.
Trong vòng lặp ForEach, các thao tác bên trong vòng lặp sẽ được thực thi cho từng phần tử trong mảng.
Điểm khác biệt so với vòng lặp For là bạn không cần quan tâm đến số lần lặp; bạn chỉ cần tập trung vào nội dung của mảng vòng lặp.
Thiết lập mảng vòng lặp: Trong vòng lặp ForEach, bạn cần thiết lập một mảng làm đối tượng vòng lặp. Bạn có thể sử dụng một biến hoặc nhập thủ công một mảng, chẳng hạn như ["a","b","c"].
Thêm yêu cầu: Trong vòng lặp ForEach, bạn có thể thêm một hoặc nhiều yêu cầu, hoặc thêm các vòng lặp hoặc nhánh điều kiện khác, v.v.
Điều kiện Break If và xử lý On Error: Bạn có thể thêm Break if và On error vào vòng lặp ForEach, nhất quán với vòng lặp for đã đề cập ở trên.
TIP
Trong cài đặt nâng cao của ForEach Loop, bạn cũng có thể tùy chỉnh các tùy chọn xử lý ngoại lệ cho Break If và On Error. Để biết thêm thông tin, hãy xem Quy tắc phán định.

Ví dụ sử dụng ForEach#

Xem xét hai endpoint: một endpoint để truy xuất danh sách thông tin thú cưng và một endpoint khác để lấy thông tin chi tiết của một thú cưng đơn lẻ. Nếu bạn cần lấy thông tin chi tiết của một thú cưng vừa được thêm vào danh sách, bạn có thể thiết lập kịch bản này bằng vòng lặp ForEach trong kiểm thử tự động của mình.
1.
Bước đầu tiên bên ngoài vòng lặp ForEach sẽ là yêu cầu endpoint danh sách thông tin thú cưng để truy xuất dữ liệu danh sách thực tế. Thông thường, phản hồi của interface này chứa một mảng với thông tin cơ bản về nhiều thú cưng, chẳng hạn như ID và tên thú cưng.
2.
Thiết lập vòng lặp ForEach với mảng nguồn là một tập con của mảng thú cưng từ phản hồi của bước trước.
3.
Trong vòng lặp, thiết lập một yêu cầu đến endpoint "Get Pet Information" và sử dụng giá trị phần tử từ vòng lặp ForEach để điền tham số ID trong yêu cầu này.

Sử dụng phần tử vòng lặp trong yêu cầu#

Phần tử/chỉ mục hiện tại của vòng lặp có thể được sử dụng như một biến cục bộ trong các yêu cầu để điều chỉnh động tham số hoặc body của yêu cầu. Để sử dụng tính năng này:
1
Thêm một vòng lặp ForEach và bao gồm một yêu cầu trong vòng lặp.
2
Nhấp vào biểu tượng đũa thần trong tham số của yêu cầu và chọn "Retrieve pre-step data."
3
Chọn tùy chọn vòng lặp, thường được gắn nhãn là "Loop each element in {{array}}."
4
Chọn "Current loop element." Bạn có thể sử dụng JSONPath để trích xuất thuộc tính của phần tử.
5
Bạn sẽ nhận được một biến động như {{$.17.element}}. Nhấp vào "Insert", và biến này sẽ được thay thế tại thời điểm chạy bằng phần tử của vòng lặp hiện tại, tức là một phần tử của mảng vòng lặp.
TIP
Phần tử vòng lặp hiện tại: Hệ thống tự động trích xuất các phần tử từ mảng được chỉ định trong vòng lặp ForEach và lưu chúng vào biến được chỉ định. Khi bắt đầu mỗi lần lặp, biến này được cập nhật bằng giá trị của phần tử hiện tại từ mảng. Nếu phần tử là một object, bạn có thể sử dụng JSONPath để trích xuất một trường con cụ thể, chẳng hạn như {{$.1.element.data.name}}.
Chỉ mục vòng lặp hiện tại: Chỉ mục của vòng lặp hiện tại được lưu trong biến này. Nó bắt đầu từ 0 và tăng thêm 1 ở đầu mỗi lần lặp tiếp theo, phản ánh chỉ mục hiện tại.

If#

Khi bạn cần gửi các yêu cầu khác nhau dựa trên các kịch bản khác nhau, bạn có thể sử dụng câu lệnh If để thêm các nhánh điều kiện. Khi các điều kiện được chỉ định được đáp ứng, bước tương ứng sẽ được thực thi; nếu không, bước đó sẽ bị bỏ qua. Để biết thêm chi tiết cụ thể, vui lòng tham khảo Quy tắc phán định.
Thiết lập câu lệnh If: Câu lệnh If hỗ trợ nhiều điều kiện như bằng, không bằng, chứa, không chứa, v.v. Cả hằng số và biến đều có thể được sử dụng ở hai phía của điều kiện.
Thêm yêu cầu: Có thể thêm nhiều yêu cầu trong một nhánh điều kiện, cũng như các vòng lặp hoặc nhánh điều kiện khác.
Thực thi nhánh điều kiện: Nếu các điều kiện được thiết lập trong cấu hình được đáp ứng, bước kiểm thử sẽ được thực thi; nếu không, bước đó sẽ bị bỏ qua.
Câu lệnh Else: Có thể thêm câu lệnh Else trong một nhánh điều kiện để xử lý các kịch bản khi điều kiện If không được đáp ứng.

Ví dụ sử dụng If#

Một chủ cửa hàng thú cưng, dựa trên trạng thái bán hàng của thú cưng từ ngày trước đó, cần thay đổi trạng thái bán hàng của một thú cưng thành "Sold" nếu thú cưng đó đã được bán. Ngược lại (else), họ cần kiểm tra danh sách thú cưng vẫn đang được bán.
1.
Nhấp vào nút "Add Step" ở phía dưới và chọn "Conditional Branching."
2.
Nhập biến saleStatus thu được từ phản hồi yêu cầu API vào ô nhập sau "If" và chọn điều kiện "equals." Cuối cùng, nhập true làm giá trị so sánh.
3.
Di chuột qua thao tác nhánh điều kiện để xem tùy chọn " + Else". Nhấp vào đó để thêm bước "List of Pets for Sale" (trong trường hợp điều kiện không được đáp ứng, tức là để truy vấn danh sách thú cưng vẫn đang được bán).

Quy tắc phán định#

Khi sử dụng câu lệnh If trong một kịch bản kiểm thử, bạn có thể xác định các quy tắc điều kiện để kiểm soát việc thực thi kiểm thử. Nếu các điều kiện được đáp ứng, bước tương ứng sẽ chạy; nếu không, bước đó sẽ bị bỏ qua. Tương tự, trong các thiết lập Break If cho vòng lặp ForEach và For, bạn có thể thiết lập các quy tắc phán định để kiểm soát luồng thực thi linh hoạt hơn.
Quy tắcMô tả
BằngKiểm tra xem hai giá trị có bằng nhau hay không.
Không bằngKiểm tra xem hai giá trị có không bằng nhau hay không.
Tồn tạiKiểm tra xem một trường hoặc biến có tồn tại hay không.
Không tồn tạiKiểm tra xem một trường hoặc biến có không tồn tại hay không.
Nhỏ hơnKiểm tra xem một giá trị có nhỏ hơn giá trị khác hay không.
Nhỏ hơn hoặc bằngKiểm tra xem một giá trị có nhỏ hơn hoặc bằng giá trị khác hay không.
Lớn hơnKiểm tra xem một giá trị có lớn hơn giá trị khác hay không.
Lớn hơn hoặc bằngKiểm tra xem một giá trị có lớn hơn hoặc bằng giá trị khác hay không.
Khớp với RegexKiểm tra xem một chuỗi có khớp với biểu thức chính quy được chỉ định hay không.
ChứaKiểm tra xem một chuỗi hoặc mảng có chứa giá trị được chỉ định hay không.
Không chứaKiểm tra xem một chuỗi hoặc mảng có không chứa giá trị được chỉ định hay không.
TrốngKiểm tra xem một trường, mảng hoặc biến có trống hay không.
Không trốngKiểm tra xem một trường, mảng hoặc biến có không trống hay không.
Trong danh sáchKiểm tra xem một giá trị có thuộc một danh sách được chỉ định hay không.
Không trong danh sáchKiểm tra xem một giá trị có không thuộc một danh sách được chỉ định hay không.
Khi thực hiện các kiểm tra điều kiện (chẳng hạn như lớn hơn, lớn hơn hoặc bằng, bằng hoặc không bằng), nếu các giá trị được so sánh là số nguyên hoặc chuỗi, hệ thống sẽ tự động chuyển đổi chuỗi thành số để so sánh chính xác. Ví dụ: nếu bạn so sánh chuỗi "18" với số 18, hệ thống sẽ chuyển đổi chuỗi "18" thành số 18 trước khi so sánh.

Equals#

Kiểm tra xem hai giá trị có bằng nhau hay không. Nếu chúng bằng nhau, điều kiện được đáp ứng và bước kiểm thử sẽ được thực thi; nếu không, bước đó sẽ bị bỏ qua.
Ví dụ:
Kịch bản: Kiểm tra xem tuổi người dùng được trích xuất từ bước trước có bằng 18 hay không.
Ví dụ điều kiện: {{$.5.response.body.data.age}} Equals 18
Hiệu quả thực thi thực tế: Nếu giá trị tuổi được trích xuất từ bước trước là 18 (chuỗi sẽ được tự động chuyển đổi thành số), bước sẽ được thực thi, chẳng hạn như hiển thị thông tin cụ thể hoặc thực hiện một số hành động nhất định.

Does not equal#

Kiểm tra xem hai giá trị có không bằng nhau hay không. Nếu chúng không bằng nhau, điều kiện được đáp ứng và bước kiểm thử sẽ được thực thi; nếu không, bước đó sẽ bị bỏ qua.
Ví dụ:
Kịch bản: Kiểm tra xem trạng thái đơn hàng được trích xuất từ bước trước có không bằng "Paid" hay không.
Ví dụ điều kiện: {{$.4.response.body.data.status}} Does not equal Paid
Hiệu quả thực thi thực tế: Nếu trạng thái đơn hàng được trích xuất từ bước trước là một giá trị khác (chẳng hạn như "Pending" hoặc "Shipped"), bước sẽ được thực thi.

Exists#

Kiểm tra xem một trường hoặc biến nhất định có tồn tại hay không. Nếu tồn tại, điều kiện được đáp ứng và bước sẽ được thực thi; nếu không, bước đó sẽ bị bỏ qua.
Ví dụ:
Kịch bản: Kiểm tra xem trường email có tồn tại trong dữ liệu người dùng được trích xuất từ bước trước hay không.
Ví dụ điều kiện: {{$.3.response.body.data.email}} Exists
Hiệu quả thực thi thực tế: Nếu trường email có trong dữ liệu người dùng được trích xuất từ bước trước, bước sẽ được thực thi.

Does not exist#

Kiểm tra xem một trường hoặc biến nhất định có không tồn tại hay không. Nếu không tồn tại, điều kiện được đáp ứng và bước sẽ được thực thi; nếu không, bước đó sẽ bị bỏ qua.
Ví dụ:
Kịch bản: Kiểm tra xem trường phone có không tồn tại trong dữ liệu người dùng được trích xuất từ bước trước hay không.
Ví dụ điều kiện: {{$.2.response.body.data.phone}} Does not exist
Hiệu quả thực thi thực tế: Nếu trường phone vắng mặt trong dữ liệu người dùng được trích xuất từ bước trước, bước sẽ được thực thi.

Less Than#

Kiểm tra xem một giá trị có nhỏ hơn giá trị khác hay không. Nếu đúng, điều kiện được đáp ứng và bước sẽ được thực thi; nếu không, bước đó sẽ bị bỏ qua.
Ví dụ:
Kịch bản: Kiểm tra xem lượng tồn kho sản phẩm được trích xuất từ bước trước có nhỏ hơn 10 hay không.
Ví dụ điều kiện: {{$.1.response.body.data.stock}} Less Than 10
Hiệu quả thực thi thực tế: Nếu giá trị tồn kho được trích xuất từ bước trước là 8, điều kiện được đáp ứng và bước sẽ được thực thi.

Less than or equal#

Kiểm tra xem một giá trị có nhỏ hơn hoặc bằng giá trị khác hay không. Nếu đúng, điều kiện được đáp ứng và bước sẽ được thực thi; nếu không, bước đó sẽ bị bỏ qua.
Ví dụ:
Kịch bản: Kiểm tra xem tuổi được trích xuất từ bước trước có nhỏ hơn hoặc bằng 12 hay không.
Ví dụ điều kiện: {{$.2.response.body.data.age}} Less than or equal 12
Hiệu quả thực thi thực tế: Nếu giá trị tuổi được trích xuất từ bước trước là 10, điều kiện được đáp ứng và bước sẽ được thực thi.

Greater than#

Kiểm tra xem một giá trị có lớn hơn giá trị khác hay không. Nếu đúng, điều kiện được đáp ứng và bước sẽ được thực thi; nếu không, bước đó sẽ bị bỏ qua.
Ví dụ:
Kịch bản: Kiểm tra xem số tiền đơn hàng được trích xuất từ bước trước có lớn hơn 1000 hay không.
Ví dụ điều kiện: {{$.1.response.body.data.amount}} Greater than 1000
Hiệu quả thực thi thực tế: Nếu giá trị số tiền đơn hàng được trích xuất từ bước trước là 1105, điều kiện được đáp ứng và bước sẽ được thực thi.

Greater than or equal#

Kiểm tra xem một giá trị có lớn hơn hoặc bằng giá trị khác hay không. Nếu đúng, điều kiện được đáp ứng và bước sẽ được thực thi; nếu không, bước đó sẽ bị bỏ qua.
Ví dụ:
Kịch bản: Kiểm tra xem điểm của người dùng được trích xuất từ bước trước có lớn hơn hoặc bằng 500 hay không.
Ví dụ điều kiện: {{$.3.response.body.data.points}} Greater than or equal 500
Hiệu quả thực thi thực tế: Nếu giá trị điểm được trích xuất từ bước trước là 600, điều kiện được đáp ứng và bước sẽ được thực thi.

Matches with Regex#

Kiểm tra xem một chuỗi có khớp với một biểu thức chính quy được chỉ định hay không. Nếu khớp, điều kiện được đáp ứng và bước sẽ được thực thi; nếu không, bước đó sẽ bị bỏ qua.
Ví dụ:
Kịch bản: Kiểm tra xem định dạng email được trích xuất từ bước trước có chính xác hay không.
Ví dụ điều kiện: {{$.2.response.body.data.email}} Matches with Regex /^[a-z0-9._%+-]+@[a-z0-9.-]+\.[a-z]{2,}$/i
Hiệu quả thực thi thực tế: Nếu định dạng email được trích xuất từ bước trước khớp với biểu thức chính quy (ví dụ: test@gmail.com), bước sẽ được thực thi.
TIP
Biểu thức chính quy nên được viết bằng cú pháp "literal", trong đó mẫu được đặt trong /, với các modifier tùy chọn (ví dụ: g cho khớp toàn cục, i cho không phân biệt chữ hoa chữ thường) được thêm vào cuối. Để biết thêm thông tin về cách viết biểu thức chính quy, bạn có thể tham khảo tài liệu MDN.

Contains#

Kiểm tra xem một chuỗi hoặc mảng có chứa một giá trị được chỉ định hay không. Nếu có, điều kiện được đáp ứng và bước sẽ được thực thi; nếu không, bước đó sẽ bị bỏ qua.
Ví dụ:
Kịch bản: Kiểm tra xem danh sách vai trò người dùng được trích xuất từ bước trước có chứa vai trò "admin" hay không.
Ví dụ điều kiện: {{$.3.response.body.data.roles}} Contains admin
Hiệu quả thực thi thực tế: Nếu danh sách vai trò được trích xuất từ bước trước chứa "admin", bước sẽ được thực thi.

Does not contain#

Kiểm tra xem một chuỗi hoặc mảng có không chứa một giá trị được chỉ định hay không. Nếu không chứa, điều kiện được đáp ứng và bước sẽ được thực thi; nếu không, bước đó sẽ bị bỏ qua.
Ví dụ:
Kịch bản: Kiểm tra xem giỏ hàng của người dùng được trích xuất từ bước trước có không chứa một sản phẩm nhất định hay không.
Ví dụ điều kiện: {{$.4.response.body.data.cartItems}} Does not contain productId123
Hiệu quả thực thi thực tế: Nếu mảng giỏ hàng được trích xuất từ bước trước không chứa sản phẩm productId123, bước sẽ được thực thi.

Is empty#

Kiểm tra xem một trường, mảng hoặc biến có trống hay không. Nếu trống, điều kiện được đáp ứng và bước sẽ được thực thi; nếu không, bước đó sẽ bị bỏ qua.
Ví dụ:
Kịch bản: Kiểm tra xem trường ghi chú được trích xuất từ bước trước có trống hay không.
Ví dụ điều kiện: {{$.2.response.body.data.remarks}} Is empty
Hiệu quả thực thi thực tế: Nếu trường ghi chú được trích xuất từ bước trước trống, bước sẽ được thực thi.

Is not Empty#

Kiểm tra xem một trường, mảng hoặc biến có không trống hay không. Nếu không trống, điều kiện được đáp ứng và bước sẽ được thực thi; nếu không, bước đó sẽ bị bỏ qua.
Ví dụ:
Kịch bản: Kiểm tra xem ghi chú đơn hàng được trích xuất từ bước trước đã được điền hay chưa.
Ví dụ điều kiện: {{$.1.response.body.data.orderRemarks}} Is not Empty
Hiệu quả thực thi thực tế: Nếu ghi chú đơn hàng được trích xuất từ bước trước không trống, bước sẽ được thực thi.

In List#

Kiểm tra xem một giá trị có thuộc một danh sách được chỉ định hay không. Nếu có, điều kiện được đáp ứng và bước sẽ được thực thi; nếu không, bước đó sẽ bị bỏ qua.
Ví dụ:
Kịch bản: Kiểm tra xem sản phẩm do người dùng chọn được trích xuất từ bước trước có nằm trong danh sách sản phẩm được đề xuất hay không.
Ví dụ điều kiện: {{$.3.response.body.data.productId}} In List ["prod123", "prod456", "prod789"]
Hiệu quả thực thi thực tế: Nếu ID sản phẩm được trích xuất từ bước trước là "prod456", bước sẽ được thực thi.
TIP
Trong Apidog, khi nhập danh sách, mỗi phần tử nên được nhập riêng và phân tách bằng cách nhấn phím Enter.

Not in List#

Kiểm tra xem một giá trị có không thuộc một danh sách được chỉ định hay không. Nếu không thuộc, điều kiện được đáp ứng và bước sẽ được thực thi; nếu không, bước đó sẽ bị bỏ qua.
Ví dụ:
Kịch bản: Kiểm tra xem mã khuyến mãi do người dùng nhập được trích xuất từ bước trước có không nằm trong danh sách các mã khuyến mãi đã sử dụng hay không.
Ví dụ điều kiện: {{$.4.response.body.data.promoCode}} Not in List ["usedCode1", "usedCode2"]
Hiệu quả thực thi thực tế: Nếu mã khuyến mãi được trích xuất từ bước trước là "newPromo", điều kiện được đáp ứng và bước sẽ được thực thi; nếu không, bước đó sẽ bị bỏ qua.

Nhóm#

Khi nhiều bước trong quy trình kiểm thử có liên quan với nhau, chúng có thể được nhóm lại để phân loại. Bằng cách nhóm các bước kiểm thử, bạn nâng cao khả năng đọc và khả năng thao tác của kịch bản kiểm thử.

Chờ#

Khi một bước nhất định trong quy trình kiểm thử cần chờ một khoảng thời gian trước khi thực thi, bạn có thể thêm điều kiện chờ để giải quyết điều này.

Ví dụ sử dụng Chờ#

Mô phỏng người dùng xem chi tiết thú cưng và cập nhật trạng thái duyệt thông tin thú cưng sau khi duyệt trong 1000ms.
1.
Nhấp vào nút "Add Step" ở phía dưới và chọn "Wait."
2.
Nhập thời gian cần chờ, 1000 (tính bằng mili giây).
Khi bạn sử dụng điều khiển luồng kiểm thử, báo cáo kiểm thử sẽ không hiển thị các bước như If, for, v.v., mà chỉ hiển thị các yêu cầu thực tế đã được thực thi, được liệt kê tuyến tính theo thứ tự thực thi.
Modified at 2026-06-11 10:23:06
Previous
Truyền dữ liệu giữa các yêu cầu
Next
Đồng bộ dữ liệu từ endpoint và trường hợp endpoint
Built with