בכל פעם שאנחנו רוצים להציג תכונה חדשה או לשפר תכונה קיימת, קל ליפול למלכודת "זה עובד אצלי": כתבתם קצת קוד, פתחתם את הדף המתאים וראיתם שזה עובד. אתם עשויים לחשוב שזאת כל מה שצריך, אבל תכונה שעובדת היא רק חלק קטן מהשלמת התכונה.
אנו רוצים לשמור על קור רוח בכל פעם שאנו משחררים תכונה חדשה, ולהבטיח במידה מסוימת שלא נשבש משהו בטעות. ישנם שני תהליכים עיקריים המונעים זאת: בדיקות ידניות ובדיקות אוטומטיות. אנו מסבירים בפירוט את תהליך בקרת האיכות הידני שלנו בפוסט נפרד בבלוג, ולכן נתייחס כאן רק לחלקים האוטומטיים, כי לפעמים פשוט צריך רובוטים במקום בני אדם ?!
מה הכוונה בבדיקות אוטומטיות?
בדיקות אוטומטיות הן גם קוד
אם אנו משנים משהו בדף אחד, זה לא אמור לשבש פתאום דף אחר. אם היינו בודקים כל תכונה קיימת בכל פעם שאנו מוסיפים משהו חדש כדי לוודא שהיא עדיין פועלת, לעולם לא היינו מצליחים לשחרר שום דבר! כדי להבטיח רמת בטיחות מסוימת, אנו משתמשים בבדיקות אוטומטיות. הרעיון של בדיקות אוטומטיות אינו חדש, ואנו מקווים שכל חברות התוכנה האחרות משתמשות בהן גם כן! עם זאת, חשבנו שיהיה מועיל להסביר מדוע וכיצד אנו משתמשים בהן.
הבדיקות האוטומטיות פועלות בכל פעם שאנו משנים משהו בקוד. יותר מכך, הבדיקות עצמן הן גם קוד! גם אם תכונה מסוימת פועלת כשאנו בודקים אותה באופן ידני, היא אינה שלמה אלא אם קיים גם קוד לבדיקתה. העובדה שהיא פועלת כרגע, במקרה הבדיקה הספציפי שלך, במחשב שלך, אינה מבטיחה שהיא תמשיך לפעול ללא שינוי.
אנו מאמינים כי בדיקות הן הכרחיות לא פחות מהקוד עצמו, אם לא יותר. הן מספקות לנו הגדרה ברורה של מה שהקוד שלנו אמור לעשות, ומבטיחות באופן אוטומטי שהוא אכן עושה זאת! אנו יכולים לבצע שינויים בקוד בחופשיות, מבלי לחשוש שמשהו ישתבש. אם הבדיקות עוברות בהצלחה, הכל אמור לעבוד כצפוי!
מדוע אנו משתמשים בבדיקות אוטומטיות?
הבדיקות האוטומטיות שלנו מאפשרות לנו להתקדם מהר יותר מבלי לשבור דברים. בקרת האיכות הידנית שלנו מהירה הרבה יותר, מכיוון שאנחנו לא צריכים, למשל, לנסות ליצור בחינות עם שמות רבים ושונים. אנחנו יודעים מהבדיקות האוטומטיות שלנו שזה פשוט עובד, ולכן אנחנו לא צריכים לנסות את זה שוב בעצמנו!
בדיקות אוטומטיות מאפשרות לנו להתקדם מהר יותר מבלי לגרום נזק.
בזכות זאת, אנו יכולים להיות הרבה יותר יסודיים ממה שניתן היה לעשות באופן ידני. אנו יכולים לבדוק את כל הפעולות האפשריות שהקוד יכול לבצע, אפילו כאלה שמניחות שחלק מהאתר אינו פעיל. כמובן, מצב כזה לא אמור לקרות, ובדיקה ידנית שלו תהיה מסורבלת. עם זאת, אנו יכולים פשוט להניח שהאתר אינו פעיל ולראות שהכל ממשיך כצפוי באמצעות הבדיקות האוטומטיות שלנו!
הערה בצד: מדדים לא משנים
בדיקות אוטומטיות תמיד מעוררות את הדיון על היקף הכיסוי הנדרש. כיסוי הוא מדד של אחוז הקוד שנבדק בפועל על ידי הבדיקות, המוצג כאחוז. ניתן לעקוב אחר כיסוי הבדיקות באופן אוטומטי, מה שמקל מאוד על ההחלטה שהכיסוי צריך להיות גבוה ככל האפשר. אם יש לנו כיסוי בדיקות של 100%, שום דבר לא אמור להישבר בטעות, נכון?
ובכן...
נניח שיש לנו פונקציה שאנו מעבירים אליה מספר. היא מבצעת חישוב מורכב מאוד ואז מחזירה לנו את התוצאה. כדי לבדוק את הפונקציה, נוכל לקרוא לה ואז לבדוק אם התוצאה היא מספר. כמובן שזו לא בדיקה הגיונית עבור קוד זה: אין לנו מושג אם הפונקציה מבצעת את החישוב הנכון! עם זאת, בדיקה זו תאפשר לנו להשיג כיסוי בדיקה של 100%: כל הקוד נבדק, אך לא באופן משמעותי.
מדדים הם כלי עזר טוב כדי לבדוק אם אנחנו לא עושים משהו ממש מוזר, ולכן אנחנו משתמשים בהם. עם זאת, מדדים אינם המדד שבעזרתו נוכל לוודא שאנחנו כותבים קוד באיכות טובה!
האם הכל חשוב?
אנחנו תמיד כותבים בדיקות לכל דבר, אבל אנחנו מבחינים בין תרחישים שונים.
אנו מאמינים שכל חלק ב-Easy LMS הוא חיוני, שכן בלעדיו המוצר לא היה זהה! אך, למרבה הצער, אנחנו עדיין מוגבלים בזמן. לא סביר לבדוק הכל. אנחנו תמיד צריכים להתפשר על מידת העומק שבה אנחנו רוצים להפוך משהו לאוטומטי. אנחנו תמיד כותבים בדיקות לכל דבר, אבל אנחנו מבחינים בין תרחישים שונים. במקרים מסוימים, בדיקות פשוטות כמו אלה שהזכרנו קודם מספיקות, אבל אם משהו הוא קריטי למשימה, אנחנו הולכים עוד יותר רחוק!
אבל מה אם משהו הוא קריטי למשימה?
חלקים מסוימים של המערכת הם קריטיים למשימה. לדוגמה, אם אף אחד לא יכול להתחבר יותר, לא תוכלו לעשות הרבה עם Easy LMS. למרות שהבדיקות שלנו בודקות את קוד הכניסה, אנחנו עדיין רוצים לנסות להתחבר בכל פעם לפני שאנחנו משחררים תכונה חדשה. ביצוע אימות זה באופן ידני פירושו שנצטרך להשקיע כמה דקות בכל פעם שנרצה לשחרר משהו. כמובן שנוכל לעשות זאת, אך ככל שנחשיב יותר דברים כנחוצים, כך נצטרך להשקיע יותר דקות. וזה מצטבר. למרבה המזל, אנו יכולים ללכת צעד אחד קדימה. הבדיקות שהזכרנו קודם בודקות את הקוד, אך יש לנו גם בדיקות קבלה. אלה מתקשרות עם האתר באותו אופן שבו היית מתקשר בדפדפן שלך, מה שמאפשר לנו להפוך חלק משלבי בקרת האיכות לאוטומטיים! זה אומר שאנחנו יכולים להשתמש בהם כדי לבדוק תכונה שלמה מקצה לקצה. כדי לחזור לדוגמה הקודמת, אנחנו לא צריכים להתחבר כל פעם כדי לוודא שהכל עובד. אם זה לא עובד, בדיקת הקבלה תיכשל! כל השיטות האלה עוזרות לנו לתפוס הרבה באגים לפני שהם מגיעים אליכם, אבל בסופו של דבר, כולנו בני אדם