الاختبار وCI
استخدم تكوينًا منفصلًا للاختبارات الوظيفية عندما قد تُطلق أدوات الاختبار لديك الدفاعات المتقدمة. لا توجد نقطة نهاية منفصلة للاختبار ولا بيئة منفصلة في لوحة التحكم.
لماذا تحتاج الاختبارات إلى بناء خاص بها
تعمل الدفاعات المتقدمة (VM Self Defending وVM Debug Protection وVM Domain Lock، ونظيراتها الأساسية selfDefending وdebugProtection وdomainLock) أيضًا ضد وكلائك وأدوات الأتمتة والمنقِّحات الخاصة بك. فقد توقف التنفيذ، أو ترمي أخطاء لا علاقة لها بالسبب، أو تُنتج نتائج غير صحيحة. يستبدل disableConsoleOutput توابع console بدوال فارغة على المستوى العام، لكل سكربت في الصفحة وليس للسكربت المشوَّش وحده، فلا ترى التأكيدات المعتمدة على السجلات شيئًا. شغّل الاختبارات الوظيفية على بناء اختبار منفصل تكون فيه هذه الميزات معطَّلة.
تكوين الاختبارات الوظيفية
اشتقّ تكوين الاختبار من إعداداتك المشتركة وطبّق هذه التجاوزات بعد اختيار الإعداد المسبق. فهي تعطّل نسختَي VM والتشويش الأساسي من خيارات Self Defending وDebug Protection وDomain Lock، وتوقف disableConsoleOutput (إذ تفعّله الإعدادات المسبقة Low وMedium وHigh). مرِّر قيمًا صريحة؛ فإغفال خيار ما قد يسمح للإعداد المسبق بتفعيله.
CI
شغّل الكود الأصلي أولًا، ثم مرِّر بناء الاختبار المشوَّش عبر الفحوصات نفسها. سجّل المدخلات والخيارات الفعلية وإصدار المشوِّش وتحذيرات البناء حتى يمكن إعادة إنتاج الأعطال. تُبلِغ لوحة التحكم واستجابات API المباشرة عن التحذيرات وعن الإصدار الذي تم تحديده؛ أما حزمة javascript-obfuscator فتُبلِغ عن الإصدار في رسالة التقدّم لكنها لا تُبلِغ عن التحذيرات.
بعد نجاح الفحوصات الوظيفية، أنشئ ناتج إصدار منفصلًا من إعدادات الإنتاج الأصلية. تحقّق من هذا الناتج نفسه في بيئة التشغيل المقصودة له، على نطاق مسموح به، ومن دون أدوات أتمتة أو منقِّحات صُمِّمت دفاعاته لكشفها. نجاح بناء الاختبار لا يعني التحقق من الإصدار المحمي.
تستخدم البناءات عبر لوحة التحكم وحزمة javascript-obfuscator (عبر CLI أو Node.js) وAPI خيارات الحماية نفسها. يستخدم اختبار API بيانات الاعتماد ونقطة النهاية المعتادة، وتنطبق حدود الاستخدام العادية. في CI، احفظ نواتج الاختبار والإصدار في مسارات منفصلة وانشر ناتج الإصدار وحده.
إذا استمر فشل التنفيذ، فانظر تشخيص أخطاء التشغيل في VM.
