حالات الاستخدام

اختبار غرف الانتظار ومسارات الدفع في منصات التذاكر المملوكة

نطاق الاستخدام: يقتصر هذا الدليل على فرق QA والهندسة التي تملك المنصة أو تدير بيئة staging مفوضة. لا يشرح شراءً فعليًا، ولا التعامل مع قوائم انتظار عامة، ولا التشغيل على أحداث أو منصات لا تملكها.

في منصات التذاكر المملوكة، تظهر التحديات عادة في نقطتين: عند التحقق من أهلية المستخدم لدخول غرفة الانتظار، وعند التحقق النهائي قبل الانتقال من حجز المقعد إلى شاشة الدفع. ما يحتاجه الفريق هندسيًا هو التأكد من أن هاتين النقطتين تعملان كما صممتا: هل يظهر التحدي في الوقت الصحيح؟ هل يفهم الخادم الرمز؟ هل تبقى الجلسة متسقة بين خطوة التهيئة وخطوة التحقق؟ وهل الرسائل التشخيصية واضحة عندما يفشل المسار؟


أسئلة الاختبار الصحيحة في منصة تذاكر مملوكة

مرحلة السؤال الذي يجب أن يجيب عنه الاختبار
بوابة الانتظار هل يظهر التحدي قبل إدخال الجلسة إلى الغرفة؟
حالة الجلسة هل ينتقل معرف الجلسة نفسه من الغرفة إلى صفحة الحجز؟
صفحة الحجز هل يُعاد عرض التحدي فقط عندما يقتضي منطق المخاطر ذلك؟
نقطة الدفع هل يُقبل الرمز داخل واجهة التحقق الخلفية؟
المراقبة هل يسجل النظام سبب الفشل أو الرفض بوضوح؟

إذا كانت هذه الاختبارات تعمل، يصبح الفريق قادرًا على نشر تغييرات واجهة أو تغييرات حماية مع ثقة أعلى. وإذا فشلت، تكون البيانات المتاحة كافية لمعرفة ما إذا كان الخلل في DOM أو في الجلسة أو في منطق التحقق الخلفي.


مثال آمن: فحص غرفة الانتظار وواجهة التحقق على staging

يوضح المثال التالي كيف يمكن لبيئة QA اختبار منصة تذاكر مملوكة. لا يحاول المثال إكمال عملية شراء، ولا حجز مقاعد حقيقية، ولا التقدم على مستخدمين آخرين. كل ما يفعله هو التحقق من أن غرفة الانتظار وصفحة التحقق الخلفية تستقبلان الرمز داخل نفس الجلسة.

import requests
import time


CAPTCHAAI_KEY = "YOUR_API_KEY"
CAPTCHAAI_URL = "https://ocr.captchaai.com"


def solve_captcha(sitekey, pageurl, method="userrecaptcha"):
    submit = requests.post(
        f"{CAPTCHAAI_URL}/in.php",
        data={
            "key": CAPTCHAAI_KEY,
            "method": method,
            "googlekey": sitekey,
            "pageurl": pageurl,
            "json": 1,
        },
        timeout=30,
    )
    submit.raise_for_status()
    task_id = submit.json()["request"]

    for _ in range(30):
        time.sleep(5)
        result = requests.get(
            f"{CAPTCHAAI_URL}/res.php",
            params={
                "key": CAPTCHAAI_KEY,
                "action": "get",
                "id": task_id,
                "json": 1,
            },
            timeout=30,
        )
        result.raise_for_status()
        data = result.json()
        if data.get("status") == 1:
            return data["request"]

    raise TimeoutError("ticket platform CAPTCHA solve timed out")


def validate_waiting_room_and_checkout():
    session = requests.Session()
    waiting_room_url = "https://staging.example-tickets.test/waiting-room"
    checkout_validation_url = "https://staging.example-tickets.test/checkout/validate-captcha"

    waiting_room = session.get(waiting_room_url, timeout=30)
    waiting_room.raise_for_status()

    room_token = solve_captcha(
        sitekey="6LcR_waiting_room_owned",
        pageurl=waiting_room_url,
    )

    room_response = session.post(
        f"{waiting_room_url}/validate",
        json={
            "captcha_token": room_token,
            "scenario": "qa-room-check",
        },
        timeout=30,
    )
    room_response.raise_for_status()

    checkout_token = solve_captcha(
        sitekey="6LcR_checkout_owned",
        pageurl="https://staging.example-tickets.test/checkout",
    )

    checkout_response = session.post(
        checkout_validation_url,
        json={
            "reservation_id": "qa-reservation-001",
            "captcha_token": checkout_token,
        },
        timeout=30,
    )
    checkout_response.raise_for_status()

    return {
        "waiting_room": room_response.json(),
        "checkout": checkout_response.json(),
    }


print(validate_waiting_room_and_checkout())

هذا المثال كافٍ لقياس ما إذا كانت المنصة المملوكة تتعامل مع الرمز المميز بصورة متوقعة، وما إذا كانت حالة الجلسة تبقى مستقرة، وما إذا كانت رسائل الفشل مفهومة لفريق الدعم والهندسة.


مؤشرات يجب متابعتها في هذه البيئة

المؤشر لماذا يهم؟
زمن ظهور التحدي في غرفة الانتظار يكشف تغيرًا في منطق العرض أو الحمل
زمن الحل لكل خطوة يساعد على تقدير أثر التغييرات على المسار الكامل
استمرار الجلسة بين الغرفة والدفع يكشف فقدانًا غير مقصود لملف تعريف الارتباط أو للرمز
رمز الخطأ من واجهة التحقق يوضح إن كان الرفض من منطق التطبيق أم من التحقق نفسه
زمن انتهاء صلاحية الرمز في staging يمنع تفسيرات خاطئة لفشل الإرسال المتأخر

كل هذه المؤشرات مفيدة لأنك تملك المنصة وتستطيع تغييرها. أما تحويل المقالة إلى دليل للتسابق على أحداث عامة فليس استخدامًا مقبولًا، ولذلك جرى حذفه بالكامل.


ما الذي استُبعد عمدًا من هذا الملف

هذا الملف لا يتناول:

  • الدخول إلى قوائم انتظار حقيقية تابعة لجهات خارجية
  • تنسيق التوقيت مع طرح بيع فعلي أو نافذة مبيعات عامة
  • الحجز الفعلي أو إتمام دفع حقيقي أو محاولة استباق مستخدمين آخرين
  • استخدام وكلاء أو جلسات متغيرة بغرض العمل على منصة لا تملكها

إذا كان فريقك بحاجة إلى تمرين ضغط قبل حدث تملكه، فابنِ نسخة staging أو نسخة داخلية من غرفة الانتظار ومسار الدفع، ثم اختبر هناك مع بيانات اختبارية ومؤشرات واضحة، لا على حدث عام.


الأسئلة الشائعة

هل أصبح هذا الملف صالحًا للنشر التلقائي؟

نعم. أصبح هذا الملف صالحًا للنشر لأنه يركّز على اختبار غرفة الانتظار ومسار الدفع داخل منصة تذاكر مملوكة أو staging مفوضة، من دون حجز فعلي أو تشغيل على أحداث عامة.

ما الهدف من مثال الكود إذا كان لا يشتري تذكرة؟

الهدف هو التحقق من صحة الدمج وسلامة الجلسة ورسائل الفشل، وهي المتطلبات التي يحتاجها فريق QA قبل أي نشر داخل منصة يملكها.

هل يجب أن أستخدم هذا النمط مع منصات لا أملكها؟

لا. هذا الدليل مصمم فقط للأنظمة المملوكة أو المختبرة بتفويض صريح.


أدلة ذات صلة


إذا كنت تختبر منصة تذاكر تملكها، فابدأ بفحص غرفة الانتظار والتحقق الخلفي على staging، ثم راقب زمن الحل وسلامة الجلسة ورسائل الفشل قبل أي نشر أوسع.

التعليقات غير مفعّلة لهذا المقال.