GH GambleHub

اختبار خطوط أنابيب البيانات

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

خطوط أنابيب البيانات (تبتلع → تحول → تخدمها) - بنية تحتية حيوية للإبلاغ، وحلول ML والتشغيل. تتحول الأخطاء إلى مقاييس غير صحيحة وإشارات احتيال وخسائر مالية. يوفر الاختبار:
  • الصواب والمرونة.
  • تغييرات يمكن التنبؤ بها (المخطط/التطور المنطقي).
  • الامتثال للمكتب من حيث النضارة والاكتمال والكمون.
  • الإصدار السريع (سرعة الإطلاق) بسبب التحقق الآلي.

2) هرم اختبار البيانات

من الأسفل إلى الأعلى: الكثير من الاختبارات المحلية السريعة → تكامل أقل → قليلاً من طرف إلى طرف.

1. اختبارات وحدة التحويلات (وظائف، UDF، SQL-views، dbt-models).
2. اختبارات جودة البيانات (قواعد النضارة/الاكتمال/التفرد/النطاق).
3. العقود والمخططات (اختبارات المخطط/العقد، التطور).
4. اختبارات تكامل خطوط الأنابيب (DAG: ابتلاع ↔ تخزين ↔ تحويل ↔ مارت).
5. اختبارات E2E (المصدر إلى واجهة المتجر/واجهة التطبيقات) بما في ذلك الحقوق (RLS/CLS) والتصدير.
6. الحمل/السعة (الحجم والسرعة وتكلفة الخدمة).
7. اختبارات فوضى البيانات (التأخير، التكرار، الخروج عن النظام، عدم التوافر).

3) أنواع الاختبارات: ما الذي نتحقق منه بالضبط

3. 1 وحدة اختبارات المنطق

وظائف التحويل الصافي ؛ قائمة على الممتلكات (الثوابت: الخصوصية، الرتابة).
SQL/DBT: مقارنة النتيجة مع المعيار (المجموعة الذهبية)، حظر «SELECT»، التحقق من المرشح حسب الوقت.

3. 2 اختبارات جودة البيانات (DQ)

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

3. 3 العقود والمخططات

التوافق مع التغيير (SemVer: MAJOR/MINOR/PATCH).
توافر الأعمدة والأنواع والقيود الإلزامية.
دلالات KPI الثابتة: الصيغ ونوافذ التجميع.

3. 4 التكامل E2E

سلامة DAG: المحفزات، التبعيات، التكرار الغبي.
المسار الكامل: مصدر → → الخام المنسق → → BI/API ؛ RLS/CLS.

3. 5 الأداء والتكاليف

p95/p99 وقت العمل، الإنتاجية (صفوف/ثوان)، الحجم/القيمة.
اختبارات تراجع الأداء وحدود المسح.

3. 6 الأمن والخصوصية

قناع PII/PCI (ترميز قطعي).
RLS/CLS Check - لا يرى المستخدمون سوى مستخدميهم.
التصدير/اللقطات: لا توجد حقول شخصية «خام».

4) تفاصيل البث (Kafka/Flink/Spark Structured Streaming)

العلامات المائية والتأخر: اختبارات النوافذ مع الأحداث المتأخرة (T + Δ)، إعادة الحساب الصحيحة.
بالضبط مرة واحدة في المعنى: dedup by 'event _ id'، idempotent entry (upsert/merge).
خارج النظام: الثوابت بالنسبة للمجموعات حسب 'الحدث _ الوقت' ؛ إصلاح "ingested _ at'.
الخسارة/التكرار: محاكاة إسقاط/لعبة الحفلات، تحقق من صحة العروض.

5) الخصوصية والحتمية (ماذا وكيفية الاختبار)

تعطي إعادة تشغيل خطوة نفس النتيجة (مع نفس معلمات النافذة).
التسجيل - عبر التدريج والمبادلة الذرية.
يتم تغطية منطق الدمج مع SCD1/SCD2 من خلال آخر مكاسب الكتابة، أولوية المصدر.
محددات UDF/المجموع: نفس المدخلات → نفس النواتج.

6) إدارة بيانات الاختبار

مجموعات البيانات الذهبية: معايير صغيرة مع التحقق اليدوي.
Synthetics + data factories: completing domain edges (nulls, extreme values, Unicode, TZ).
عينات حث غير محددة: تطابق الخصوصية.
الخيالات ذات الطبقات: الأحداث الخام، الطبقات المتوسطة، العروض النهائية.

7) عقود البيانات - مثال وقواعد

عقد YAML (مبسط):
yaml dataset: orders schema:
- name: order_id; type: string; unique: true
- name: user_id; type: string; not_null: true
- name: amount; type: decimal(18,2); min: 0
- name: event_time; type: timestamp; tz: UTC freshness_sla: 10m dq_rules:
- "pct_null(user_id) < 0. 1%"
- "duplicates(order_id) = 0"
- "sum(amount) >= 0"
evolution:
allowed_minor_additions: true breaking_changes_require: approval: 'data-governance'
actions_on_violation:
- quarantine_partition
- replay_last_60m

8) إمكانية الرصد واختبارات SLO

مقاييس التصدير: النضارة والاكتمال والتفرد والكمون إلى Grafana/Prometheus.
تنبيهات SLO على أنها اختبارات وحدة «حمراء» في prod (Synthetics).
تقارير الانحدار: «بعد إصدار X p95 ↑ بنسبة 40٪».

9) CI/CD ووسائط الإعلام

CI: الوحدة + عقود DQ + PR ؛ schema-diff; SQL static analysis (linter).
Sandbox/staging: تشغيل التكامل و e2e، اختبارات الفوضى مع بيانات آمنة.
أعلام الميزات: لقاحات/نماذج/صيغ الكناري.
الفهرسة: نسخة من المخططات، وصيغ مؤشر الأداء الكوري، والنسب ؛ التحديث التلقائي للوثائق.

10) اختبار بيانات الفوضى (بيانات الفوضى)

حقن التكرارات/الإغفالات والتأخيرات والخروج عن النظام.
إسقاط الوسيط/الحزب، الملفات «المكسورة»، انجراف المخطط.
نتحقق من صحة: الإصلاح التلقائي (إعادة التشغيل/الردم)، والحجر الصحي والتنبيهات، وبيانات MTTR.

11) الحمل والتكلفة

مولدات حركة المرور مع P95 profile/peax.
حدود المسح/الخطوة (بايت مسح ضوئي، قبعات زمنية).
محدد القيمة A/B: نموذج/استعلام «قديم» مقابل «جديد».

12) الأدوات (فئات العينات)

DQ/العقود: اختبارات dbt، توقعات عظيمة، Deça، Soda، Custom linters.
التنسيق: تدفق الهواء/Dagster/Argo/Presentect (المشغلون للاختبارات في كل خطوة).
المنصات: BigQuery/Snowflake/Redshift/ClickHouse/Delta/Iceberg/Hudi.
البث: كافكا، فلينك، سبارك ستريمينج ؛ حاويات الاختبار للبيئات المحلية.
إمكانية الرصد: بروميثيوس/غرافانا/أوتيل ؛ أدلة DataHub/Amundsen/Collibra.

13) أنتيباترن

«لا يوجد شيء للاختبار - إنه مجرد SQL»: لا توجد وحدات وكسر مقاييس DQ →.
E2E فقط: أسباب الانهيارات البطيئة وغير المستقرة غير واضحة.
حدد: فترات راحة تحت تطور طفيف.
القراءة الحية لـ OLTP في الاختبارات: عدم الاستقرار والرقائق.
عدم وجود مجموعات ذهبية: لا شيء لمقارنة النتائج به.
لا اختبارات الخصوصية: إعادة إفساد البيانات.
البث المنسي: لم يتم اختبار التأخير/خارج الترتيب/إعادة التسليم.

14) خارطة طريق التنفيذ

1. الأساس: اختبارات وحدة التحولات، المجموعات الذهبية، خط SQL، أفضل 10 قواعد عرض DQ.
2. العقود: schema-diff في CI، SemVer، فحوصات التوافق التلقائية.
3. التكاملات: اختبارات DAG، الخصوصية، e2e للتدفقات الحرجة.
4. البث: العلامات المائية/التأخير، اختبارات الأحواض التفكيكية/الخفية.
5. SLO والفوضى: مقاييس الجودة في المبيعات، التنبيهات، سيناريوهات الفوضى، أهداف MTTR.
6. التحسين: انحدارات perf، حراس الميزانية، إطلاقات الكناري.

15) القائمة المرجعية السابقة للإفراج

  • تغطي اختبارات الوحدة التحولات الرئيسية وأدوات التطوير المستخدم.
  • تمرير قواعد DQ للنضارة/الاكتمال/التفرد/النطاقات.
  • العقود و schema-diff خضراء ؛ لا توجد تغييرات فاصلة بدون مستندات.
  • اختبار الخصوصية ؛ أعمال الحوض/الدمج الذري.
  • البث: العلامات المائية/البيانات المتأخرة/التغطية غير المطلوبة ؛ في مكانه.
  • يتم الكشف عن مقاييس SLO ؛ وتشكيل التنبيهات ؛ الدفاتر هي.
  • بيانات الاختبار آمنة ؛ PII مقنعة ؛ فحص RLS/CLS.
  • لا انحدارات perf ؛ التقيد بالمسح/الحدود الزمنية.
  • اجتازت اختبارات الفوضى للسيناريوهات الأساسية ؛ يمكن تحقيق هدف MTTR.

16) أمثلة قالب مصغر

16. 1 اختبار وحدة SQL (pseudo-dbt):

sql
-- tests/assert_positive_amount. sql select count() as c from {{ ref('fct_payments') }}
where amount < 0 having c = 0

16. 2 أسلوب التوقعات الرائع:

yaml expect_table_row_count_to_be_between:
min_value: 1000 mostly: 0. 99 expect_column_values_to_not_be_null:
column: user_id expect_column_values_to_be_unique:
column: txn_id

16. 3 التحقق من التأخير في التدفق (رمز زائف):

python emit(events_out_of_window <= threshold)
emit(reprocessed_events == late_events_detected)

16. 4 اختبار العقد (schema-diff CI):

bash schema-diff --current models/orders. yml --target prod_schema. yml --semver

17) خلاصة القول

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

Contact

اتصل بنا

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

Telegram
@Gamble_GC
بدء التكامل

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

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

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