اختبار API / متقدم: دليل ذو إصدار ومراجعة / الدرس 17
جعل اختيار CI ونتائجه قابلين للتدقيق
تخطيط فحوص حتمية وقواعد اختيار صريحة وآثار دليل دون تشغيل خط مستضاف.
في هذه الصفحة
أهداف الدرس
- فصل نجاح الحزمة المختارة عن اكتمال التغطية المقصودة.
- ربط الملفات بالمصدر والبيانات والحالات المنفذة فعليا.
اعتبار الاختيار جزءا من منطق الاختبار
قد ينجح الخط لأن الاختبارات المناسبة لم تختَر أصلا. مرشحات المسارات والوسوم والأسماء والشروط منطق قد يخطئ. حدد مجموعة عقود مطلوبة دائما وخريطة مراجعة من المناطق المتغيرة إلى فحوص إضافية. قد تمس تغييرات التوثيق أو التسلسل أو المخططات عمليات كثيرة رغم تعديل ملف واحد. سجل معرفات الحالات المختارة وأسباب التجاوز ليفصل المراجع القصد عن السهو. غياب الفشل وتشغيل كل المقصود ادعاءان مختلفان.
مراجعة نموذج اختيار حتمي
يربط المثال تغير المخطط بفحوص التمثيل والمستهلك مع إبقاء حالة رفض أساسية. يفحص الاختيار فقط ولا ينفذ الحالات المسماة. الخريطة خيالية ومحدودة ولا تثبت شمول تحليل أثر مستودع فعلي. استخدم النموذج لإظهار الافتراضات وأدرج فئة تغير مجهولة. قد يناسب اختيار محافظ عند غموض الأثر، لكن يجب أن تراعي السياسة التغطية المفيدة وموارد CI.
core = {"unknown-book-refusal"}
impact = {"schema": {"representation-shape", "consumer-title"}, "policy": {"owner-read", "cross-tenant-denial"}}
def select(changes):
selected = set(core)
for change in changes:
selected |= impact.get(change, set().union(*impact.values()))
return selected
assert select(["schema"]) == {"unknown-book-refusal", "representation-shape", "consumer-title"}
assert "cross-tenant-denial" in select(["unclassified"])
print("selection policy checked")
selection policy checked
يفحص البرنامج الكامل قواعد المجموعات وبديل الفئة المجهولة. لا يكتشف الملفات المتغيرة ولا يشغل اختبارا أو ينشئ وظائف CI أو يقيم صحة فحوص العقد المسماة.
ربط الدليل بمدخلات ثابتة
يحدد أثر النتيجة مراجعة المصدر وقائمة الاختبارات وإصدار البيانات والبيئة والافتراضات. تساعد البصمة في كشف تغير الملف عرضيا لكنها لا تثبت الأصالة أو الموافقة. يبصم البرنامج بيانا مختلقا صغيرا بتسلسل JSON حتمي، ويثبت قابلية التكرار وكشف التغير فقط. تحتاج سلسلة الدليل الفعلية مصدر بناء موثوقا وسياسة وصول إلى جانب البصمات. لا تضمن أسرارا أو حمولات خاصة لمجرد تقييد الوصول أو قصر الاحتفاظ.
import hashlib, json
def digest(value):
raw = json.dumps(value, sort_keys=True, separators=(",", ":")).encode("utf-8")
return hashlib.sha256(raw).hexdigest()
manifest = {"fixture":"catalog-lab-1", "cases":["owner-read", "unknown-book-refusal"]}
assert digest(manifest) == digest(dict(reversed(list(manifest.items()))))
changed = {**manifest, "fixture":"catalog-lab-2"}
assert digest(manifest) != digest(changed)
print("manifest change detection checked")
manifest change detection checked
يجري البرنامج الكامل حسابات SHA-256 محلية لبيانات تدريب. لا يوقع ملفا أو يشهد بناء أو يتحقق من مصدر مستودع. التوحيد يكفي للكائنات البسيطة هنا وليس معيار JSON موحدا عاما بين اللغات.
منع الإعادة من إخفاء ضعف الدليل
قد تجمع إعادة الاختبارات تشخيصا، لكن تحويل أي نجاح لاحق إلى نجاح مطلق يخفي عدم الاستقرار. احفظ أثر الفشل الأول وافصل انقطاع البنية وتسرب البيانات وسباق المنتج. يحتاج عزل حالة متقلبة مالكا وسببا وموعد مراجعة وتغطية بديلة للوعود المهمة. لا تعالج فشل الصلاحية باستبعاد وسم الأمان كله. يبلغ الخط الموثوق عن النتيجة وكفاية الدليل للقرار المقصود معا.
فصل الخطة المؤلفة عن تشغيل الخط
يعتمد CI المستضاف على الصيغة والبيئة والصلاحيات ومصدر التبعيات وسياق الحدث، ولا يفحص الدرس هذه الافتراضات الخاصة بالنشر. يستخدم التنفيذ المعتمد أقل الصلاحيات والموارد المعزولة ويحفظ نتائج الخروج الفعلية وينشر دليلا غير سري مراجعا فقط. أبق الأوامر والأجزاء غير قابلة للتنفيذ حتى تحدد البيئة والتصريح. تقدم فحوص الاختيار والبصمة دليلا ضيقا قابلا للإعادة ولا تعني تشغيل خط مستضاف أو الموافقة على إصدار.
الأخطاء الشائعة وإصلاحها
تشغيل ناجح لا يحتوي اختبارات مناسبة
- لماذا يحدث؟
- تحذف المرشحات العقد المتغير.
- كيف تصلحه؟
- قارن القائمة المقصودة والمنفذة وأصلح الخريطة.
- كيف تتجنب تكراره؟
- اختبر قواعد الاختيار وأبق نواة مطلوبة دائما.
يمحو نجاح لاحق الفشل الأول
- لماذا يحدث؟
- تخفي سياسة الإعادة عدم الاستقرار والدليل.
- كيف تصلحه؟
- احفظ الاختلاف الأول وصنف السبب.
- كيف تتجنب تكراره؟
- تتبع العزل واشترط تغطية بديلة مراجعة.
توصف البصمة بأنها إثبات تشغيل موثوق
- لماذا يحدث؟
- يخلط فحص السلامة بالمصدر.
- كيف تصلحه؟
- حدد ما بصم واحصل على دليل التشغيل الموثوق مستقلا.
- كيف تتجنب تكراره؟
- افصل الأصالة والتصريح والسلامة.
اختبر فهمك
1. نجحت فحوص المخطط وتجاوزت فحوص المستهلك. ماذا يقول دليل الإصدار؟
اعرض الحل المشروح
اذكر نجاح المخطط وبقاء توافق المستهلك غير متحقق في هذا التشغيل. افحص سبب التجاوز وشغل الفحوص المصرح بها قبل ادعاء التوافق. لا يحل اللون الأخضر محل القائمة المقصودة الكاملة.
2. لبيانين بصمة SHA-256 نفسها. هل يثبت ذلك تشغيل الاختبارات؟
اعرض الحل المشروح
لا. يدل على تطابق البصمات وفق التسلسل والخوارزمية وافتراضاتهما. قد يكون البيانان مختلقين. يلزم إثبات التنفيذ الفعلي ومصدر الشفرة ونتائج الأدوات والتعامل الموثوق مستقلا.
أهم ما تعلمته
- قد يفشل اختيار الاختبار مستقلا عن تأكيداته.
- سجل الحالات المقصودة والمنفذة والمتجاوزة.
- تكشف البصمة التغير ولا تشهد التنفيذ.