Trường Hợp Sử Dụng

Quản lý CAPTCHA trong pipeline QA của bạn

Pipeline QA của bạn hay dừng đột ngột vì CAPTCHA? Ba việc cần làm: giới hạn retry theo qa_case, ghi log thời gian gửi và xác thực token, rồi đưa vào checklist trước khi merge. Dưới đây là mẫu tối thiểu cho việc này.

Phạm vi an toàn: Mọi ví dụ trong bài chỉ áp dụng cho môi trường QA, staging hoặc pre-production thuộc sở hữu hoặc được uỷ quyền của bạn — đây là mẫu chẩn đoán và quan sát cho tích hợp CAPTCHA của chính bạn, không phải cách lấy dữ liệu từ hệ thống bên thứ ba.

Luồng xử lý CAPTCHA trong kiểm thử tự động

Một pipeline QA gọi CaptchaAI theo bốn bước: phát hiện widget trên trang staging → gửi tác vụ kèm sitekey và pageurl → chờ token qua polling hoặc callback → xác thực token với backend QA. Ví dụ, một đội QA tại công ty outsourcing ở TP.HCM kiểm thử luồng đăng nhập có Cloudflare Turnstile mỗi đêm trong CI — bốn bước lặp lại hàng trăm lần mỗi đợt chạy, không cần người can thiệp.

Retry có kiểm soát: tránh vòng lặp vô hạn

Dùng exponential backoff với giới hạn số lần thử theo qa_case — ví dụ 1s, 2s, 4s rồi dừng. Ghi lại mọi lần retry kèm mã lỗi để phân biệt lỗi tạm thời (hàng đợi đầy, mạng chậm — nên thử lại) với lỗi cấu hình (sai sitekey, sai action — cần sửa trước, không nên thử lại).

Ghi log và truy vết token

Liên kết mỗi token với qa_case đã tiêu thụ, kèm thời gian gửi và xác thực. Log có cấu trúc nên thu thập: tổng thời gian lấy token, mã trạng thái HTTP, ID task và độ sâu hàng đợi. Tách log theo môi trường và nối các bước bằng một correlation id, chẳng hạn qua OpenTelemetry, để phát lại toàn bộ kịch bản từ một ID — giảm đáng kể thời gian chẩn đoán mỗi khi test đỏ.

Khắc phục lỗi thường gặp

Vấn đề Nguyên nhân thường gặp Cách xử lý
Test không tìm thấy widget Selector đổi hoặc trang load chậm hơn dự kiến Kiểm tra lại selector và wait_for_selector trên staging
CaptchaAI trả ERROR_NO_SLOT_AVAILABLE Hàng đợi tạm thời đầy Retry với backoff trong pipeline nội bộ, không đổi cấu hình
Backend QA từ chối token Sai action, sitekey hoặc secret Đối chiếu cấu hình backend với staging trước khi chạy lại

Danh mục kiểm tra trước khi đưa vào CI

  • Phạm vi kiểm thử chỉ giới hạn trong ứng dụng của bạn hoặc tài nguyên đã được uỷ quyền.
  • API key CaptchaAI nằm trong CI secret hoặc vault, không commit vào mã nguồn.
  • Mỗi lần chạy ghi lại thời gian gọi và mã trạng thái phản hồi.
  • Có chính sách retry idempotent với giới hạn rõ ràng cho lỗi tạm thời.
  • Bài test tái lập được trên CI mà không cần can thiệp thủ công.

Ví dụ gọi CaptchaAI trong bài test QA

Đoạn Python dưới đây là luồng tối thiểu để test một CAPTCHA widget trên staging qua CaptchaAI.

import os
import requests

API_KEY = os.environ['CAPTCHAAI_KEY']
QA_PAGE_URL = os.environ['QA_PAGE_URL']  # ví dụ https://staging.example.com/qa-login
QA_SITE_KEY = os.environ['QA_SITE_KEY']


def submit_qa_recaptcha() -> str:
    payload = {
        'clientKey': API_KEY,
        'task': {
            'type': 'NoCaptchaTaskProxyless',
            'websiteURL': QA_PAGE_URL,
            'websiteKey': QA_SITE_KEY,
        },
    }
    response = requests.post(
        'https://api.captchaai.com/createTask',
        json=payload,
        timeout=30,
    )
    response.raise_for_status()
    return response.json()['taskId']


def fetch_qa_result(task_id: str) -> dict:
    payload = {'clientKey': API_KEY, 'taskId': task_id}
    response = requests.post(
        'https://api.captchaai.com/getTaskResult',
        json=payload,
        timeout=30,
    )
    response.raise_for_status()
    return response.json()

Câu hỏi thường gặp

Quy trình này có chạm vào lưu lượng production không?

Không. Mọi ví dụ giả định môi trường được uỷ quyền như staging.example.com hoặc domain QA do bạn sở hữu, tái tạo cấu hình CAPTCHA của production.

Nên đặt API key CaptchaAI ở đâu trong pipeline?

Trong CI secret manager, biến môi trường hoặc vault — không trong mã nguồn. Khoá lỡ commit phải xoay vòng ngay.

Retry bao nhiêu lần là hợp lý cho lỗi tạm thời?

Ba đến năm lần với exponential backoff (1s, 2s, 4s…) là đủ cho lỗi mạng và ERROR_NO_SLOT_AVAILABLE. Lỗi xác thực kéo dài thì dừng retry, báo lỗi ngay.

Có thể chạy song song nhiều test CAPTCHA trong CI không?

Có. Gửi nhiều tác vụ đồng thời rồi poll riêng từng ID task — số luồng song song bị giới hạn bởi gói đang dùng, ví dụ BASIC ($15/tháng, 5 thread).

Kiểm thử CAPTCHA trong QA tốn bao nhiêu?

Tính theo thread đang dùng, không theo số lần giải — mỗi gói giải không giới hạn trên từng thread. Với khối lượng test hàng ngày của hầu hết đội QA, gói BASIC hoặc STANDARD ($30/tháng, 15 thread) là đủ.

Hướng dẫn liên quan an toàn

Kiểm thử tích hợp CAPTCHA của bạn trên staging nội bộ với CaptchaAI.

Os comentários estão desativados para este artigo.