جودة DevOps / دليل حلول تحريري
إصلاح تصادم بيانات الاختبارات المتوازية
تتبّع الموارد المشتركة عبر التشغيل والأجزاء والعمال والإعادات ثم خصص بيانات مملوكة ونظفها فقط.
قاعدة معرفة للقراءة فقط · بلا تعليقات عامة
تعرّف على الأعراض
تنجح الاختبارات تسلسلياً وتفشل معاً بمفاتيح مكررة أو حجوزات مفقودة أو حصص أو قيم ملف آخر. ينتقل الفشل بتغير الأجزاء. قد يحذف تنظيف محاولة بيانات أخرى فيبدو أن الإعادة أصلحت بينما غيرت الحالة المشتركة.
افهم الأسباب المحتملة
- لا تعزل سياقات المتصفح الحسابات والطوابير والبريد والتخزين والمخابئ والأعلام بالخلفية. تتكرر أرقام العمال بين الآلات وقد تخرج كتابة غير متزامنة عن المعاملة. الأسماء المقتطعة أو المعادة والتنظيف الواسع أسباب شائعة.
احصر الكتابات واربط الملكية
احصر كل مورد تعدله الحالة بما في الإعداد والتنظيف. اربط التشغيل والجزء والعامل والحالة والمحاولة بالتشخيص. أعد بعاملين مضبوطين وبيانات محلية وسجل معرّفات الإنشاء والتحديث والحذف. يفيد النجاح التسلسلي لإثبات ترابط لا سببه الدقيق. افحص الاتصالات والحصص فقد يشبه الإرهاق التصادم دون استبدال بيانات.
خصص نطاقاً بمدخلات كاملة
امنح كل بيانات قابلة للتعديل نطاقاً يميز الآلات والتشغيلات. لا تستخدم العامل صفر أو بريداً ثابتاً عاماً. يقصر المثال اسماً ببصمة مدخلات متسلسلة بلا التباس. يقلل التقصير التصادم ولا يمثل تفويضاً أو إثبات فرادة مطلقاً. احفظ الملكية الأصلية وافرض الفرادة بالمخزن. لا تعِد بيانات نصف معدلة بالإعادة إلا كسيناريو تعاف مقصود.
import hashlib
import json
def fixture_name(run_id, shard, worker, case_id, attempt):
parts = [str(x) for x in (run_id, shard, worker, case_id, attempt)]
encoded = json.dumps(parts, ensure_ascii=True, separators=(",", ":"))
return "qa_" + hashlib.sha256(encoded.encode("utf-8")).hexdigest()[:20]
تولد الدالة اسماً فقط ولا تنشئ حساباً أو قاعدة. تحقق من المدخلات وقيود الطول. احفظ المكونات الأصلية مع المورد ليتحقق التنظيف من الملكية لا المقدمة وحدها.
أصلح التنظيف والحالة الخارجية
احذف المعرّفات المملوكة وتحمل المحذوف سابقاً وانتظر عملاً غير متزامن بحد عند الحاجة. لا تصدر حذف الجميع لخدمة مشتركة. إذا عاشت المهام خارج المعاملة فاستخدم مخططاً أو نطاقاً يشمل الكتابات. قسم البريد والتخزين بالعقد نفسه. أضف انتهاء للمتروك بعد فقد المشغّل بصلاحيات ضيقة وحفظ تشخيص قبل الإزالة. وثق الموارد الحصرية وسلسل حالاتها فقط.
تحقق من نجاح الإصلاح
كرر إعادة العاملين بموارد مستقلة ثم أعد الأعداد المقصودة ببيئة معزولة. تحقق من رؤية كل حالة بياناتها وبقاء الأخرى بعد التنظيف واكتمال التقارير وحد الاتصالات. ضمّن الفشل والإعادة وتنظيف الانقطاع. لا يثبت تسلسل الحزمة إصلاح العزل.
امنع تكرار المشكلة
- وحّد التخصيص وفحص الملكية وسجل أبعاد النطاق وراجع الاعتماد المشترك قبل التوازي. أضف اختبارات نطاق التنظيف وتصادم الاسم. عامل عزل المتصفح والعملية والقاعدة والخارج كعقود مستقلة.