הבלוג של ארתיום
בלוג על לינוקס, תוכנה חופשית, מוזיקה, סלסה, ומה לא!
על חשיבותן של בניות ובדיקות ליליות
לפני הרבה שנים כשעבדתי על פרויקטים שלי, לא התעסקתי יותר מידי בניהול בדיקות אוטומטיות. לפני שחרור גרסה הייתי מקמפל אותה על פלטפורמה אחת או שתיים (במקרה הטוב) והייתי משחרר.
זה גם עבד לא רע (בד"כ) - מקסימום הייתי משחרר תיקון או שניים אם מישהו היה מתלונן...
אבל כשהפרויקט מגיע ל־100,000 שורות של קוד, תומך במספר רב של מערכות הפעלה (Linux, Solaris, BDS, Windows, Darwin), מספר רב של קומפיילרים (gcc, clang, intel, msvc, sunstudio) ומספר רב של פלטפורמות (x86, x86_64, arm) אז הבדיקות ידניות לא ממש עומדות על הפרק, אלא אם כן, יש לך המון זמן=כסף מיותר.
אז מה צריך כדי להקל על ניהול הפרויקט?
- בניות ליליות, כאשר המערכת נבנית כל לילה מאפס
- בדיקות ליליות, כאשר בדיקות אוטומטיות מקיפות מתבצעות על כל פלטפורמה מידי לילה.
כמובן בניית מערכות בדיקות אוטומטיות זאת משימה לא פשוטה. צריך להכין טסטים פשוטים, מקיפים ומהירים לכל רכיב שיש במערכת, צריך להקים מערך של מערכות הפעלה וירטואליות ותסריט למעלה אותן מידי לילה. צריך רכיב שמייצר את הדו"ח הסופי, כך שמצד אחד יהיה קל לראות שהכול תקין, מצד שני קל לגשת לכל שגיאה ולהבין מה בדיוק קורה.
בניתי מערכת כזו עבור CppCMS וכל לילה נוצר לי הדו"ח הבא.
חייב להגיד, שלמרות כמות העבודה שהשקעתי בבניית המערכת הזו, אני מאוד מרוצה:
- כבר הרבה פעמים זיהיתי באגים ובעיות בבדיקות שלא הייתי מגלה ללא מערכת כזו, כך למשל, אם תסתכלו בקישור היום (1/1/2012) אז תגלו שרוב הטסטים נפלו, לא נעים לגלות שלא עשיתי בדיקה מספיק טובה לפני commit, אבל אחרת לא יודע מתי הייתי מוצא את הבעיה.
- בניה בעזרת מספר קומפיילרים בודקת בצורה טובה את הקוד: עד כמה הוא קוד תקני, בנוסף היא מאפשרת לראות מספר לא מבוטל של הערות שונות של קומפיילרים שונים שלעתים מעידות על בעיות בקוד שלמשל gcc לא מזהה.
זה מאוד מקל על תהליך שחרור הגרסה. כל מה שצריך לעשות:
- להתעורר בבוקר ולוודא שכל הטסטים עברו
- להריץ תסריט שייצור גרסה מוכנה ולהעלות אותה ל-SF.
- לפרסם הודעה בבלוג/ברשימת תפוצה.
אז אם אתם מנהלים פרויקט תוכנה (לאו דווקא קוד פתוח) תקפידו לעשות בדיקות ליליות. שימו לב: לא רק בניות אלא גם בדיקות.
תגובות
השתמשת בכלי כלשהו כדי ליצור את הבניות בדיקות הליליות או שבנית הכל מ-0?
תלוי למה אתה מתכוון, ל־CMake יש תמיכה בבדיקות, אבל בגדול הכל זה תסריט bash פשוט ו־cron
הוסף תגובה:
חובה לאפשר JavaScript כדי להגיב.