GH GambleHub

الوحدة مقابل اختبارات التكامل

1) لماذا التمييز بين أنواع الاختبارات

التحضير السليم للاختبارات يجعل التطوير قابلاً للتنبؤ: الوحدة تصطاد العيوب المنطقية بسرعة وبتكلفة زهيدة ؛ يتحقق التكامل من حزم الوحدات والنقل الحقيقي و "الغراء. "معًا، يقللون من الانحدار ويسرعون الإطلاقات.

2) التعاريف والحدود

اختبار الوحدة

اختبار وحدة صغيرة من السلوك (وظيفة، فئة، حالة استخدام) في عزلة.
يتم استبدال التبعيات الخارجية (وهمية/كعب/مزيفة).
سريع (السيدة عشرات الآنسة)، حتمية.

اختبار التكامل

يتحقق من تفاعل العديد من المكونات الحقيقية: قاعدة البيانات، الوسيط (Kafka/RabbitMQ)، HTTP/gRPC، نظام الملفات، ذاكرة التخزين المؤقت.
الحد الأدنى من الموك، بروتوكولات حقيقية.
أبطأ (مئات الثواني)، وأكثر تكلفة في الدعم.

💡 القاعدة: بمجرد «أن نمر بالعملية/المقبس/DB» - نحن بالفعل في مياه التكامل.

3) اختبار الهرم (وليس القرن الجليدي)

المؤسسة: الوحدة (70-80٪ في العدد) - رخيصة، سريعة.
الطبقة الوسطى: التكامل/المكون (15-25٪) - المسارات والعقود الحرجة.
الأعلى: E2E/UX/Exploratory (5-10٪) - الحد الأدنى الكافي.
على الجانبين: التحليل الثابت/الوبر/اختبار النوع واختبار الطفرة كمضخمات للجودة.

4) ما الذي يجب تقديمه للوحدة وما هو التكامل

مهمةنوعلأي سبب؟
منطق الأعمال الخالص (المصادقة، حسابات العمولة، الفراغ الرئيسي)وحدةسريع، قطعي، العديد من القيم الحدودية
DTO↔model الخرائط، التسلسل، التحليلوحدةالعديد من الحالات سهلة العزل
المستودعات/إدارة الموارد البشريةالتكامل (اختبار с DB)الفروق الدقيقة في «السلوك» ORM و SQL مرئية فقط في قاعدة بيانات حية
عقد HTTP (الحالات، الرؤوس، المخططات)التكامل/العقدتحتاج إلى مكدس HTTP + JSON Schema/OpenAPI
Saga/Outbox، Retras، المواعيد النهائيةالتكامل/العنصرالتوقيت والمعاملات والوسيط
حد السعر в البوابةالتكاملRedis/state/timeouts
خطابات الدفع (HMAC، كرر)التكامل/مراكز مكافحة الأمراض والوقاية منهاالتوقيعات والساعات وميزات الشبكة

5) البيانات والإصلاحات

وحدة

Inline fictions/builders (factory methods).
اختبارات قائمة على الجدول لقيم الحدود.
النهج القائم على الملكية للثوابت (مثلاً) «مجموع الديون = مجموع الاعتمادات»).

التكامل

البيئة المحكم: Testcontainers/Docker Compose رفع «postgres + redis + kafka + wiremock».
البذور الأولية في قاعدة البيانات/المخبأ والتنظيف بعد ذلك (المعاملة/التراجع، القطع).
الساعات/المؤقتات مزيفة (يتم التحكم فيها)، وإلا فإن الفلات.

6) الأدوات والأنماط

سخرية/ستابس/مزيفة/جواسيس:
  • Stub هو إجابة ثابتة (رخيصة).
  • Mock - تحقق من التفاعلات/عدد المكالمات.
  • Fake هو تنفيذ مبسط (على سبيل المثال، In-Memory Repo).
  • اختبار العقد (CDC): Pact/Swagger-based - أصلح توقعات العملاء وتحقق من المزود.
  • WireMock/MockServer - HTTP stubs لخدمات الطرف الثالث.
  • Testcontainers هم DBs/وسطاء حيون محليًا وفي CI بدون «حديقة حيوانات».

7) أمثلة

7. 1 الوحدة: باطلة الدفع (كاذب)

python def test_idempotent_create_payment_returns_same_id():
repo = InMemoryPayments()
service = Payments(repo)

first = service. create(amount=100, key="abc")
second = service. create(amount=100, key="abc")

assert first. id == second. id assert repo. count() == 1

7. 2 التكامل: توقيع Webhook (HMAC) + تكرار

bash docker-compose: app + redis + wiremock (PSP)
docker compose -f docker-compose. test. yml up -d pytest -m "integration and webhook" -q
اختبار:
  • يقدم WireMock حدثًا مع «X-Timestamp» وتوقيع.
  • يتحقق التطبيق من HMAC، ويفكك بواسطة «event _ id»، ويكرر بعد 5 ثوانٍ لا يخلق ضعف.
  • نتحقق من «200» وأن هناك مدخلًا واحدًا فقط.

7. 3 CDC: عقد العميل للمزود

يقوم العميل بإنشاء ميثاق (في انتظار: "POST/v1/payout' →" 201 "مع مخطط).
يدير المزود في CI التحقق من العقد في جناحه.

8) السرعة، التوازي، الرقائق

يجب تشغيل الوحدات أقل من 100 مللي ثانية لكل اختبار ؛ حزمة - ثوان.
التكامل - بالتوازي مع الحاويات/الموانئ ؛ تستخدم هجرات الشركات الناشئة.

ترياق متقشر:
  • وقت التحكم (ساعة مزيفة)،
  • التوقعات «من خلال حدث صريح»، وليس «النوم»،
  • العتبات المستقرة (retrai مع اختبار النبض بشكل حاسم).

9) مقاييس الجودة

التغطية (الخطوط/الفروع): مفيد لمراقبة الاتجاه، ولكن ليس الهدف.
اختبار الطفرة (PIT/Mutmut): يوضح ما إذا كانت الاختبارات «تقتل» التغييرات الخاطئة - القوة الحقيقية للقتلة.
مدة الاختبار والمعدل غير المستقر: تنبيهات عند النمو.
احتواء العيوب: نسبة الحشرات التي تم اعتراضها قبل الإنتاج.

10) تضمين CI/CD

الوظائف: وحدة التكامل → → e2e (التشجيع حسب الخدمة).
مخبأ التبعية، مصفوفات متوازية حسب قاعدة البيانات/اللغة/النسخة.
التقارير: JUnit/Allure + قطع أثرية لسجل الحاوية (للقطرات).
البوابة: «الوحدة الخضراء + التكامل الحرج» - حالة الدمج ؛ e2e - في الليل.

مثال المصفوفة (إجراءات GitHub، الجزء):
yaml strategy:
matrix:
db: [postgres14, postgres16]
steps:
- run: docker run -d --name db -e POSTGRES_PASSWORD=pw postgres:${{ matrix. db }}
- run: pytest -m "unit" -q
- run: pytest -m "integration" -q

11) الخدمات الدقيقة والأحداث

عقود الخدمة: تم التعرف على OpenAPI/Protobuf ؛ اختبارات التوافق (إلى الخلف).

مدفوعة بالحدث:
  • الوحدة: رسم خرائط أحداث المجال والثوابت.
  • التكامل: النشر/الاشتراك في وسيط حقيقي (كافكا)، دلالات outbox/inbox، التقليد مرة واحدة بالضبط (على الأقل - خفي).
  • اختبارات خارج النظام.

12) البيانات والعزلة في التكامل

كل اختبار → مخطط/قاعدة بيانات فريدة (Testcontainers JDBC URL '؟ TC _ TMPFS =/var/lib/postrescql/data: rw ').
إصلاحات المعاملات (begin→run→rollback) تسرع التنظيف.
بالنسبة إلى Redis/cache، فإن البادئة الرئيسية هي «الاختبار: $ {RUN _ ID}:» و «FLUSHDB» في تمزق.

13) تفاصيل iGaming/Finance

النقود والحدود: اختبارات قائمة على الملكية للثوابت (الرصيد ≥ 0، إجمالي القيود).
التنظيم: التحقق من التسجيل (سجل التدقيق مكتوب)، الأحداث غير القابلة للتغيير.
المدفوعات/PSP: HMAC/mTLS اختبارات التكامل، «Retry-After»، الخصوصية، dedup «jti».

اللعب المسؤول: اختبارات قاعدة العتبة/التهدئة ؛ «vchera→segodnya» على ساعة مزيفة

14) أنتيباترن

«الوحدات» التي ترفع DB/HTTP هي بالفعل تكامل (تخلط الطبقات وتبطئ CI).
تغطية عالية بسبب البيانات الفارغة («مغطاة ولكن لم يتم التحقق منها»).
منطق Moki لخدمات الطرف الثالث حيث تكون هناك حاجة إلى عقد (ينتهي عند التحديث).
اختبارات «النوم (5)» بدلاً من توقعات الحدث/الحالة.
قاعدة بيانات الاختبار الشائعة للاختبارات المتوازية → العرق والقشور.

15) قائمة التحقق من الاستعداد

  • تم تعريف الهرم على أنه% من Unit/Integration/E2E والأسهم المستهدفة حسب وقت التشغيل.
  • الوحدات معزولة وسريعة وتغطي القيم الحدودية والثوابت.
  • يستخدم التكامل بيئة محكّمة (Testcontainers/Compose)، بدون حالات مشتركة.
  • تم التحقق من اختبارات العقد (OpenAPI/Pact) في CI.
  • بيانات الاختبار - المدارة: البذور/التراجع/البادئات، الساعة المزيفة.
  • تشغيل متوازي، تقارير JUnit/Allure، قطع أثرية لسجل الحاويات.
  • المقاييس: المدة، المعدل غير المستقر، درجة الطفرات ؛ تنبيهات إلى التدهور.
  • سيناريوهات الدفع/الخطاف الشبكي: HMAC/mTLS، retrai، idempotency، deadup.
  • وثائق الاستراتيجية ونماذج اختبار العينات.

16) TL ؛ د

الوحدة - الحد الأقصى للمنطق والحد الأدنى للبيئة ؛ التكامل - الحد الأدنى من الموك، أقصى قدر من الواقعية. امسك الهرم: الوحدات السريعة تلتقط 80٪ من العيوب، والتكامل يؤكد الحزم والعقود. استخدم الحاويات المحكّمة واختبارات العقد والساعة المزيفة والتوازي. قياس ليس فقط التغطية، ولكن أيضًا درجة الطفرة والمعدل المتقلب. تحقق بشكل خاص من مسارات الدفع/خطاف الويب: التوقيعات وإعادة التصوير والغباء.

Contact

اتصل بنا

تواصل معنا لأي أسئلة أو دعم.نحن دائمًا جاهزون لمساعدتكم!

بدء التكامل

البريد الإلكتروني — إلزامي. تيليغرام أو واتساب — اختياري.

اسمك اختياري
البريد الإلكتروني اختياري
الموضوع اختياري
الرسالة اختياري
Telegram اختياري
@
إذا ذكرت تيليغرام — سنرد عليك هناك أيضًا بالإضافة إلى البريد الإلكتروني.
WhatsApp اختياري
الصيغة: رمز الدولة + الرقم (مثال: +971XXXXXXXXX).

بالنقر على الزر، فإنك توافق على معالجة بياناتك.