Skip to content
جميع المقالات

اختبار تكامل التحقق من البداية إلى النهاية في بيئة اختبارية

تشارلز أرشيبونغ

, المؤسس المشارك

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

عنوان "اختبار التحقق في صندوق الاختبار" بجانب رسم توضيحي لقارورة مختبرية بها فقاعات، على تدرج لوني نيلي داكن.

أهم النقاط

  • لا تقبل بيئة الاختبار إلا معرّفات الاختبار المنشورة؛ وتختار الأرقام الأخيرة منها السيناريو.
  • اختبر حالات الفشل التي ستعتمد عليها في التفرع، وليس فقط المسار الناجح.
  • تُفرض قيمتا sandboxOutcome و sandboxDelayMs في البيانات الوصفية سيناريو معين وتتحكمان في التوقيت؛ أما الإنتاج فيتجاهلهما.
  • اختبر مستقبل webhook بشكل منفصل باستخدام أحداث محاكاة موقعة، بما في ذلك عمليات إعادة الإرسال والتدوير.

اختبر كل نتيجة سيتعامل معها الكود الخاص بك، بما في ذلك حالات الفشل، عن طريق التحكم في كل منها بشكل متعمد باستخدام معرّفات اختبار بيئة الاختبار المعزولة. Toden في بيئة الاختبار الخاصة بـ 's، تحدد الأرقام الأخيرة من معرّف الاختبار المنشور السيناريو: تم التحقق منه، غير موجود، عدم تطابق صورة السيلفي، مستند منتهي الصلاحية، خطأ من المزوّد، وما إلى ذلك. لا يتم استدعاء أي شيء خارجي ولا يتم تحصيل أي رسوم، لذا يمكنك تشغيل المصفوفة الكاملة كلما أردت.

ثم اختبر مُستقبِل Webhook الخاص بك بشكل مستقل، باستخدام أحداث مُحاكاة مُوقّعة، وإعادة إرسال، واستجابة فاشلة. تكمن معظم أخطاء التكامل التي يتم اكتشافها بعد الإطلاق في مسارات الفشل والمُستقبِل، وليس في المسار السليم الذي اختبره الجميع يدويًا.

كيف يتصرف صندوق الرمل

يتم تحديد Sandbox بواسطة بادئة المفتاح:pk_test_بالنسبة لمجموعات تطوير البرامج (SDKs) الخاصة بالعميل،sk_test_بالنسبة للواجهة الخلفية. وفقًا لدليل بيئة الاختبار (يفتح في علامة تبويب جديدة) ، تُطبق ثلاثة قواعد:

  • لا تُقبل إلا أرقام تعريف الاختبار المنشورة. يُرفض رقم التعريف الحقيقي عند التقديم.422 only_test_ids_allowedلذلك تبقى أرقام الهوية الحقيقية خارج بيانات الاختبار الخاصة بك.

  • النتائج مزيفة. البيانات الشخصية، والصور الحكومية، وقراءات الوثائق، ونتائج قواعد البيانات مُعدّة مسبقاً. لا يتم استخدام أي قاعدة بيانات حكومية أو أي خدمة خارجية أخرى.

  • لا يتم تحصيل أي رسوم ، بما في ذلك حالة عدم كفاية الرصيد.

كما تتجاوز معرفات الاختبار قائمة أنواع المعرفات المسموح بها في مؤسستك، بحيث يمكن للمؤسسة الجديدة البدء في الاختبار على الفور.

بيئة الاختبار وبيئة الإنتاج منفصلتان تمامًا: لا تنتقل المفاتيح والتحققات ونقاط نهاية الويب هوك والإعدادات بينهما. أيًا كان ما تقوم بإعداده في بيئة الاختبار، عليك إعادة إعداده في بيئة الإنتاج.

كيف يحدد مُعرّف الاختبار النتيجة

يتم إضافة أصفار إلى رقم تعريف الاختبار متبوعة برقم السيناريو، لذا يظل صالحًا لنوع التعريف الخاص به. بالنسبة للنيجيريين BVN :

00000000001  → verified
00000000002  → not_found
00000000004  → selfie_mismatch
00000000012  → provider_error

لكل نوع من أنواع المعرفات تنسيقه الخاص لنفس الفكرة:A00000001للحصول على جواز سفر نيجيري،GHA-000000001-0للحصول على بطاقة غانا،00000001للحصول على بطاقة هوية وطنية كينية، غيّر الأرقام الأخيرة لتغيير السيناريو. ستجد الجدول الكامل الذي يضم 24 سيناريو وتنسيق كل نوع من أنواع بطاقات الهوية في الدليل.

تم التحقق منه BVN قم بالاختبار من الواجهة الخلفية الخاصة بك، باتباع المثال الموثق:

curl -X POST https://api.toden.co/api/kyc/verify \
  -H "Authorization: Bearer pk_test_xxx" \
  -H "Content-Type: application/json" \
  -d '{
    "country": "NG",
    "idType": "bvn",
    "idNumber": "00000000001",
    "userData": { "firstName": "Chidi", "lastName": "Okafor", "dateOfBirth": "1990-04-12" },
    "metadata": { "requestId": "test-001" }
  }'

بالنسبة لمعرفات المستندات، لا يقرأ برنامج الحماية الصورة أبدًا. دع SDK يتم توجيه تدفق المستندات افتراضيًا إلى الإعداد المُتحقق منه، أو يمكنك اختيار سيناريو عن طريق تمرير مُعرّف اختبار المستند.idNumber، على سبيل المثالA00000007لجواز سفر منتهي الصلاحية.

النتائج التي تستحق الاختبار، مصنفة حسب وظيفة الكود الخاص بك

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

فرع الكود الخاص بك

سيناريوهات للتنفيذ

ما الذي يجب تأكيده؟

يمر

1verified

لا يتم منح الوصول إلا بعد أن يتلقى نظامك الخلفي النتيجة

المعرف غير موجود

2not_found

تطلب من المستخدم التحقق من الرقم الذي أدخلهidentity_not_found

أعد التقاط الصورة

4selfie_mismatch9document_unreadable10document_blurry

يتم توجيه المستخدم إلى خطوة الالتقاط الصحيحة، وليس إلى طريق مسدود.

أصلح المدخلات

5gov_data_mismatch8document_type_mismatch

الرسالة مطابقة لـreasonCodeليس فشلاً عاماً

وثيقة جديدة

7document_expired

يُطلب من المستخدم تقديم مستند حالي

Toden فشل جانب '

12provider_error16system_error

يرى المستخدم رسالة عامة؛ ويرى فريقكreason

مشكلة في التكوين

17id_type_not_enabled15insufficient_credits

يصل تنبيه إلى فريقك، ولا يتم إلقاء اللوم على المستخدم.

تتبع بعض السيناريوهات إعدادات سير العمل الخاصة بك، وهو أمر مفيد لأنه يختبر إعداداتك بدلاً من تقديم إجابة ثابتة. يفشل السيناريوهان 5 و6 افتراضيًا، ولكن تحقق من ذلك باستخدامdataMatch: falseعندما يسجل نظام سير العمل لديك تفاصيل الهوية هذه بدلاً من فشله. يتبع السيناريوهان 22 و23 قيود العمر لديك: يُظهر السيناريو 22 تاريخ ميلاد يقع خارج نطاق الحدود المحددة، بينما لا يُظهر السيناريو 23 أي تاريخ ميلاد، وكلاهما يتحقق في نظام سير عمل لا يفرض قيودًا على العمر. يتبع السيناريو 24 إعداداتك لمطابقة صورة السيلفي مع الصورة المطبوعة على المستند، ويتحقق عندما لا يستخدم نظام سير العمل لديك تلك الصورة للتحقق من الهوية.

فرض النتائج والتوقيت

يتم إدخال تجاوزينmetadataويتم تجاهلها في الإنتاج:

  • sandboxOutcomeيفرض أي سيناريو بغض النظر عن معرّف الاختبار، على سبيل المثال"sandboxOutcome": "selfie_mismatch"مفيد عندما SDK لا يقوم نظام تدفق المستندات بجمع رقم تعريف.

  • sandboxDelayMsيتحكم في المدة التي يستغرقها التحقق حتى يتم تسويته، من 0 إلى 60000 مللي ثانية، مع القيمة الافتراضية التي تبلغ حوالي 1200 مللي ثانية.

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

"metadata": {
  "requestId": "test-slow-002",
  "sandboxOutcome": "document_expired",
  "sandboxDelayMs": 30000
}

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

اختبر القرار، وليس فقط عمليات التحقق.

إذا كانت عملية سير العمل لديك تتضمن قواعد اتخاذ قرار، فإن عمليات التحقق لا تمثل سوى نصف الحل. قم بتشغيل كل سيناريو من خلال سير العمل التجريبي المنشور وتأكد من النتيجة التي تتوقعها سياستك: أselfie_mismatchهذا ما يجب أن يخضع للمراجعة، يصل على النحو التالي:in_review، لاdeclinedتذكر ذلكverification.completedيعكس ذلك عمليات التحقق فقط؛ ويتبع ذلك حكم سير العمل كما يليverification.status_updatedويجب أن يتصرف نظامك الخلفي بناءً على ذلك.

تعتمد عملية التحقق من الشركات على بيئات اختبار خاصة بها. يتم قبول أي رقم تسجيل ويتم ربطه ببيئة اختبار تم التحقق منها.RC0000001تم التحقق منه وRC0000002لم يتم العثور عليها، وتضم شركة الاختبار مجموعة من الأشخاص الرئيسيين لممارسة العناية الواجبة.

اختبر مستقبل Webhook بشكل منفصل

أنشئ نقطة نهاية webhook تجريبية واستخدم المحاكي الموجود على صفحتها، والذي يرسل عينة واقعية وموقعة بشكل صحيح لأي حدث عبر مسار التسليم الفعلي، دون إجراء أي تحقق. يوصي دليل اختبار webhook (يفتح في علامة تبويب جديدة) بتسلسل معين؛ الخطوات التي تكشف معظم الأخطاء هي:

  1. تأكد من أن جهاز الاستقبال يتحقق من توقيع V2 على الجسم الخام ويعيده2xxبسرعة.

  2. أعد إرسال الشحنة من لوحة التحكم وتأكد من حدوث التأثير الجانبي مرة واحدة فقط، لأن عملية إزالة التكرار تعتمد على معرف الحدث.

  3. إرجاع غير2xxيتم الرد مؤقتًا وتأكيد جدولة إعادة المحاولة.

  4. قم بتدوير السر وتأكد من قبول كلا التوقيعين خلال فترة السماح.

  5. قم بتنفيذ حدثين خارج الترتيب وتأكد من أن معالج الأحداث لا يزال ينتهي في الحالة الصحيحة.

قبل أن تنتقل إلى المفاتيح الحية

يتم الاحتفاظ بالوسائط التي تم تحميلها باستخدام مُعرّف اختبار لمدة ثلاثة أيام، ثم يتم استبدالها بملف بديل، لذا يُرجى عدم إنشاء اختبارات تعتمد على الصور الأصلية لاحقًا. عند اجتياز المصفوفة، يُحدد دليل البيئات (يفتح في علامة تبويب جديدة) متطلبات الإنتاج.

  1. تمت الموافقة على ملف تعريف نشاطك التجاري للإنتاج. وحتى ذلك الحين، سيتم رفض طلبات التحقق من الإنتاج والتحميل.business_not_approved.

  2. لقد أنشأت مفاتيح حية: قابلة للنشر للعميل، وسرية لنتائج الواجهة الخلفية.

  3. لقد قمت بتسجيل نقاط نهاية webhook الخاصة بالإنتاج والتحقق من توقيعاتها.

  4. تم تمويل رصيدك الائتماني وتم تحديد حد أدنى للرصيد.

  5. لقد استبدلت مفاتيح الاختبار بمفاتيح التشغيل الفعلي.

أضف عنصرًا واحدًا من اختيارك: وجّه SDK عند معرف سير العمل الإنتاجي الخاص بك، حيث أن نطاق سير العمل يقتصر على بيئة واحدة.

قم بإجراء اختبار حقيقي واحد خاص بك في بيئة الإنتاج قبل إتاحة العملية للعملاء. تُثبت بيئة الاختبار أن الكود الخاص بك يتعامل مع جميع الاحتمالات؛ ويؤكد هذا الاختبار الأول أن الإعدادات التي نسختها هي الإعدادات المقصودة.

المصادر

تشارلز أرشيبونغ

عن الكاتب

Charles Archibong

المؤسس المشارك

شارك تشارلز أرتشيبونغ في تأسيس شركة Toden. وهو يكتب عن التحقق من الهوية، والتكنولوجيا المالية، والعمل العملي لبناء خدمات رقمية موثوقة.

ابنِ منتجك.وسنتولى الباقي.

الهوية والامتثال من البداية إلى النهاية، وفق معايير عالمية وبأسعار تناسب المؤسسين.

اختبر عملية تكامل التحقق من البداية إلى النهاية في بيئة اختبار معزولة. · Toden