لا أستخدم TDD: اختبار عملي باستخدام Java

نحن نبني نسخة من Google Photos، والاختبار صعب للغاية!

كيف يمكننا اختبار أن تطبيقنا Java يشعر بالعمليات الصحيحة لـ ImageMagick أو أن الصور المصغرة الناتجة هي بالفعل الحجم الصحيح وبالفعل صور مصغرة، وليس مجرد صور من القطط العشوائية؟ كيف يمكننا اختبار إصدارات ImageMagick المختلفة وأنظمة التشغيل؟

ما الذي يحدث في الفيديو

00:00 مقدمة

نبدأ الفيديو بملخص عام عن ما يجعل اختبار نسختنا من Google Photos صعبًا للغاية. كما في الحلقة السابقة، بدأنا في استخراج صور مصغرة من الصور، لكننا الآن بحاجة إلى طريقة لاختبار ذلك. ونظرًا لأن هذا يتم عبر عملية ImageMagick خارجية، فنحن في طريقنا لرحلة.

01:05 إعداد JUnit وكتابة الطرق الأولى للاختبار

أولاً، سنقوم بإعداد JUnit 5. نظرًا لعدم استخدامنا لمكتبة مثل Spring Boot، فهو تمرين رائع لإضافة المجموعة الأدنى من المكتبات والتكوين الذي يحصلنا على JUnit. علاوة على ذلك، سنكتب بعض جذور طرق الاختبار، مع التفكير في كيفية استكشاف اختبار الكود الحالي والعناوين الخاصة بطرق الاختبار، إلخ.

04:19 تنفيذ اكتشاف إصدار ImageMagick

في الحلقة السابقة، لاحظنا أن تشغيل تطبيقنا الذي يعمل بلغة جافا على أنظمة مختلفة تؤدي إلى نتائج غير متوقعة أو أخطاء ببساطة. وذلك لأن إصدارات مختلفة من ImageMagick تقدم مجموعة متنوعة من الواجهات التي نحتاج إلى استدعائها. لذا، نحتاج إلى تعديل الكود للكشف عن إصدار ImageMagick المثبت وإضافة وظيفة اختبار تتحقق من وجود ImageMagick بالفعل، قبل تشغيل أي اختبارات.

10:32 اختيارات الاختبار

كما هو واضح مع الكشف عن إصدارات ImageMagick، المشكلة الحقيقية هي أنه لتحقيق تغطية اختبارية بنسبة 100% مع مجموعة متنوعة من أنظمة التشغيل وإصدارات ImageMagick المثبتة، ستحتاج إلى إعداد CI/CD معقد نوعًا ما، وهو ما لا نملكه في نطاق هذا المشروع. لذا نناقش مواقفنا.

12:00 تنفيذ @EnabledIfImageMagickIsInstalled

ما يمكننا فعله، ومع ذلك، هو التأكد من أن باقي مجموعة الاختبارات فقط تعمل إذا كان ImageMagick مثبتًا. ومن ثم، سنكتب تعليمة بالإضافة إلى JUnit 5 المخصصة تسمى EnabledIfImageMagickIsInstalled التي يمكنك إضافتها إلى أي طرق اختبار أو حتى فئات كاملة لتمكين هذا السلوك. إذا لم يكن ImageMagick مثبتًا، فإن الاختبارات ببساطة لن تعمل بدلاً من عرض رسالة خطأ قبيحة.

16:05 اختبار إنشاء صورة مصغرة بنجاح

المشكلة الأكبر التي يجب معالجتها هي: كيف نؤكد بشكل صحيح أن الصور المصغرة قد تم إنشاؤها بشكل صحيح؟ سنقوم بمعالجة هذا السؤال من خلال اختبار رمز انتهاء ImageMagick، وتقدير أحجام الملفات، وأيضاً تحميل الصورة، والتأكد من أن لديها العدد الصحيح من البكسلات. وكل هذا بمساعدة AssertJ و SoftAssertions الخاصة بها لدمج العديد من الادعاءات في واحد بسهولة.

23:59 لا يعمل الآن إلا على جهازي

حتى بعد اختبار سير عملنا بالكامل، لا بد لنا من التأكد من استدعاء واجهة برمجة تطبيقات ImageMagick مختلفة لإصدارات مختلفة. يمكننا بسرور إضافة هذا السلوك لدعم IM6 و IM7، ونكون قد انتهينا.

25:53 النشر

حان الوقت لنشر التطبيق على NAS الخاص بي. وهذه المرة، كل شيء يعمل كما هو متوقع!

26:20 أفكار اختبار نهائية

قمنا بمجموعة كبيرة من الاختبارات في هذه الحلقة. دعونا نلخص جميع التحديات واستراتيجيات الاختبار العملية التي تعلمناها.

27:31 ما التالي

سننهي الحلقة من خلال النظر إلى ما يلي: قضايا متعددة الخيوط!

نراكم في الحلقة القادمة.

Source:
https://dzone.com/articles/i-dont-tdd-pragmatic-testing-with-java