
بناء منظومة اختبارات تجعل الإصدارات متوقعة لمنصة ذكاء اصطناعي وبيانات متنامية
اختبارات وحدات وتكامل ومسار كامل لواجهة خلفية مكتوبة بلغة Python لم تكن لها اختبارات من قبل، تغطي قواعد بياناتها وتنسيق سير العمل والتخزين وتكاملاتها مع النماذج اللغوية.
- الشريك
- مزوّد متنامٍ لمنصة ذكاء اصطناعي وبيانات
- المدة
- 3 أشهر
- طبقة الاختبار
- الوحدات
- نقاط نهاية API وعمليات قواعد البيانات والأدوات الأساسية
- طبقة الاختبار
- التكامل
- التفويض وPrefect والنماذج اللغوية وAzure Blob Storage
- طبقة الاختبار
- المسار الكامل
- سير عمل كامل من المُدخل حتى النتيجة المخزّنة والمعروضة
التحدي
كانت الواجهة الخلفية لدى الشريك، المكتوبة بلغة Python، متصلة بـ PostgreSQL وClickHouse وPrefect وAzure Blob Storage وخدمات تفويض داخلية ونماذج لغوية. ولم تكن هناك أي اختبارات، فكان كل إصدار يعتمد على فحوص يدوية، وتراجعت الثقة كلما كبرت المنصة.
ما بنيناه
إطار اختبارات مبني على Pytest بثلاث طبقات: اختبارات وحدات لمنطق الواجهة الخلفية نفسه، واختبارات تكامل لكل اعتمادية خارجية، واختبارات مسار كامل تشغّل سير عمل حقيقيًا، بما في ذلك ميزتا المنصة لتوليد المحتوى بالذكاء الاصطناعي وتلخيص الاجتماعات.
ما تم تسليمه
- اختبارات مؤتمتة عبر ثلاث طبقات
- اختبارات تكامل تغطي كل اعتمادية خارجية
- التحقق من ميزات الذكاء الاصطناعي الرئيسية بوصفها سير عمل كاملًا
نبذة عن الشريك
شريكنا مزوّد متنامٍ لمنصة ذكاء اصطناعي وبيانات يقدّم أنظمة خلفية للمؤسسات. ومع إضافة الميزات والتكاملات إلى المنصة، أصبحت واجهتها الخلفية تعتمد على عدة قواعد بيانات، وأداة لتنسيق سير العمل، وتخزين سحابي، وخدمات أمنية داخلية، ونماذج لغوية. وأراد الشريك أن يُصدر التحديثات بوتيرة متكررة دون أن يفقد الثقة فيما يسلّمه.
التحدي
لا شبكة أمان
كانت الواجهة الخلفية تعالج طلبات API وعمليات قواعد البيانات والتكاملات الخارجية، لكن لم تكن هناك أي اختبارات مؤتمتة. فكان كل تغيير يحمل مخاطر غير معروفة.
اعتماديات خارجية كثيرة
كان لا بد من اختبار خدمات التفويض وPrefect وPostgreSQL وClickHouse وAzure Blob Storage والنماذج اللغوية كلٌّ على حدة، لأن معظم الأعطال تظهر عند هذه الحدود.
سير عمل، لا دوال منفردة
تكمن قيمة المنصة في سير العمل متعدد الخطوات. واختبار الدوال منفردة لا يبيّن ما إذا كان سير العمل الكامل يعطي النتيجة الصحيحة.
نطاق يتسع باستمرار
كانت الميزات والتكاملات الجديدة تصل بانتظام، فكان على نهج الاختبار أن يستوعبها دون إعادة تصميمه.
الأهداف
- اختبارات مؤتمتة في كل طبقة من طبقات الواجهة الخلفية واعتمادياتها
- سلوك مستقر للخدمات في الظروف التي تواجهها المنصة أثناء الاستخدام
- ثقة في الإصدارات يدعمها تحقق مؤتمت
- بنية يمكن توسيعها لتشمل الميزات والتكاملات الجديدة
دورنا
صممت كارسنترك إطار الاختبارات وكتبت مجموعات اختبارات الوحدات والتكامل والمسار الكامل على مدى ثلاثة أشهر.
النطاق والجدول الزمني
شمل العمل ثلاث طبقات: اختبارات وحدات للخدمات والوحدات البرمجية منفردة، واختبارات تكامل للتفاعل مع الخدمات الخارجية، واختبارات مسار كامل تحاكي رحلات المستخدم عبر النظام بأكمله. وتم التسليم خلال ثلاثة أشهر.

المنهجية
إطار واحد وثلاث طبقات
اخترنا Pytest لأنه واسع الانتشار في منظومة Python ويدعم تجهيزات الاختبار (fixtures) وتحديد المعاملات والإضافات في الطبقات الثلاث. وتسري الأعراف نفسها في كل مكان، فينتقل المساهمون بين الطبقات بسهولة.
اختبار الحدود
تعمل اختبارات التكامل مقابل كل اعتمادية خارجية، لأن تلك هي المواضع التي تتعطل فيها صيغ البيانات والصلاحيات والتوقيت في أغلب الأحيان.
اتباع مسار المستخدم
تتبع اختبارات المسار الكامل رحلات كاملة، من تنسيق سير العمل مرورًا بالتخزين حتى النتيجة التي يراها المستخدم، بما في ذلك الميزات التي تعتمد على النماذج اللغوية.
التنفيذ

اختبارات الوحدات
تغطي اختبارات الوحدات نقاط نهاية API، وعمليات قواعد البيانات على PostgreSQL وClickHouse، والأدوات التي تعالج البيانات وتحوّلها وتتحقق من صحتها.
اختبارات التكامل
تغطي اختبارات التكامل الاتصال بخدمات التفويض والمصادقة الداخلية، وتنسيق المهام عبر Prefect، واستدعاءات النماذج اللغوية، ورفع الملفات إلى Azure Blob Storage واسترجاعها ومعالجتها.
اختبارات المسار الكامل
تشغّل اختبارات المسار الكامل تدفقات بيانات كاملة من تنسيق Prefect حتى التخزين في PostgreSQL وClickHouse، وميزة توليد المحتوى بالذكاء الاصطناعي، وميزة تلخيص الاجتماعات من المُدخل المسجّل حتى الملخص المسلَّم.
الأدوات والتقنيات
| الأداة | الغرض |
|---|---|
| Pytest | إطار الاختبارات للطبقات الثلاث |
| PostgreSQL وClickHouse | قواعد البيانات الخاضعة للاختبار |
| Prefect | تنسيق سير العمل الخاضع للاختبار |
| Azure Blob Storage | تخزين الملفات الخاضع للاختبار |
| واجهات API للنماذج اللغوية | ميزات الذكاء الاصطناعي الخاضعة للاختبار |
| خدمات المصادقة الداخلية | التكاملات الأمنية الخاضعة للاختبار |
ما تم تسليمه
- إطار الاختبارات
- Pytest
- الوحدات والتكامل والمسار الكامل
- 3 طبقات
- الاعتماديات مختبَرة
- الكل
- مدة التسليم
- 3 أشهر
- إطار اختبارات مبني على Pytest ومنظَّم في ثلاث طبقات
- تغطية تكامل لكل اعتمادية خارجية مذكورة في النطاق
- تغطية للمسار الكامل لتدفقات البيانات الرئيسية ولميزتين من ميزات الذكاء الاصطناعي
- بنية يمكن توسيعها بميزات جديدة وفق الأعراف نفسها
لماذا يهم ذلك
أعداد الاختبارات تصف حجم الجهد. أما ما يهم فهو أن يمكن فحص كل إصدار آليًا مقابل السلوك الذي يعتمد عليه الشركاء، وهذا ما يتيح لمنصة متنامية أن تواصل الإصدار بوتيرة متكررة.
إذا كانت مؤسستكم تواجه تحديًا مشابهًا، يسعدنا أن نناقشه معكم.