אני לא משתמש ב-TDD: בדיקה פרקטית עם Java

אנו בונים שיבוט של Google Photos, והבדיקות קשות עד מאוד!

איך אנו בודקים שהיישום Java שלנו מייצר את התהליכים הנכונים של ImageMagick או שהצגות התמונות שנוצרות הן בגודל הנכון ואכן צגות תמונות ולא רק תמונות של חתולים באופן אקראי? איך אנו בודקים גרסאות שונות של ImageMagick ומערכות הפעלה?

מה בסרטון

00:00 התחלה

אנו מתחילים את הסרטון עם סקירה כללית של מה עושה את הבדיקות של השיבוט של Google Photos שלנו כה מסובכת. כמו בפרק הקודם, התחלנו להוציא צגות תמונות מתמונות, אך כעת אנו זקוקים לדרך לבדוק זאת. מאחר שזה נעשה דרך תהליך ImageMagick חיצוני, אנו עומדים לסייר.

01:05 הקמת JUnit וכתיבת שיטות הבדיקה הראשונות

קודם כל, נקיים את JUnit 5. מאחר שאנו לא משתמשים במסגרת כמו Spring Boot, זו תרגיל מעולה להוסיף את הסט המינימלי של ספריות והגדרות שמחזיקים אותנו על רגליים עם JUnit. בנוסף, נכתוב כמה שיטות בדיקה מסגרת, תוך חשיבה על איך היינו מתקדמים בבדיקת הקוד הקיים שלנו ולוקחים בחשבון שמות שיטות הבדיקה וכד'.

04:19 ביצוע זיהוי גרסת ImageMagick

בפרק האחרון, שמנו לב שריצת האפליקציה שלנו ב-Java על מערכות שונות גורמת לתוצאות בלתי צפויות או שגיאות פשוטות. זאת מכיוון שגירסאות שונות של ImageMagick מספקות סט שונה של API שעלינו לקרוא. לכן, עלינו להתאים את הקוד שלנו לגילוי גירסת ImageMagick המותקנת וגם להוסיף שיטת בדיקה שבודקת שImageMagick מותקן אכן, לפני ריצת כל בדיקות.

10:32 בדיקת פשרות זבוב

כפי שנראה עם גילוי גירסאות ImageMagick, הבעיה האמיתית היא שכדי להגיע לכיסוי בדיקות של 100% עם מספר רב של מערכות הפעלה וגירסאות ImageMagick המותקנות, תצטרך מערכת CI/CD מפותחת למדי, שאינה בתחום הפרויקט הזה. אז אנו דנים ביתרונות ובחסרונות של הגישה שלנו.

12:00 יישום @EnabledIfImageMagickIsInstalled

מה שאנו יכולים לעשות, לעומת זאת, הוא לוודא ששאר סט הבדיקות שלנו רק ירוץ אם ImageMagick מותקן. לכן, נכתוב תכונה מותאמת של JUnit 5 הנקראת EnabledIfImageMagickIsInstalled שאפשר להוסיף לשיטות בדיקה כלשהן או אפילו למחלקות שלמות כדי לאפשר את ההתנהגות הזו. אם ImageMagick אינו מותקן, הבדיקות פשוט לא ירוצו במקום להציג הודעת שגיאה מכוערת.

16:05 בדיקת יצירה מוצלחת של תמונת תמונות

הבעיה הגדולה ביותר שעלינו לטפל בה היא: איך אנו יכולים לאשר באופן תקין שצילומים ממוזערים נוצרו בצורה נכונה? נתמקד בשאלה זו על ידי בדיקת קוד הצאתו של ImageMagick, הערכת גודל קבצים, וגם טעינת התמונה וההבטחה שיש לה את הכמות הנכונה של פיקסלים. כל זה בעזרת AssertJ ו-SoftAssertions שלה כדי לשלב בקלות מספר טענות רבות לתוך אחת.

23:59 עדיין עובד רק על המחשב שלי

גם לאחר שבדקנו את כל הזרם העבודה שלנו, עדיין נצטרך לוודא לקרוא ל-API שונה של ImageMagick עבור גרסאות שונות. אנו יכולים במהירות להוסיף תכונה זו כדי לתמוך גם ב-IM6 וגם ב-IM7, וכבר סיימנו.

25:53 פריסה

הגיע הזמן לפרוס את היישום ל-NAS שלי. והפעם, הכל עובד כצפוי!

26:20 מחשבות בדיקה סופית

בפרק זה ביצענו כמות סבירה של בדיקות. בואו נסכם את כל האתגרים ואת האסטרטגיות המבוססות בדיקה שלמדנו עליהם.

27:31 מה הלאה

נסיים את הפרק בכך שנעבור על מה שעוד עלול להתרחש הלאה: בעיות מולטיתרדינג!

נתראה בפרק הבא.

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