האתר הישראלי להנדסת תכנה

דף ראשי | מפת האתר | רשימת מושגים | מקורות נוספים | אודות
תכנון אימות ותיקוף

אימות ותיקוף

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

    את האימות והתיקוף מבצעים בעזרת שני סוגים כלליים של פעילויות: ביקורות ובדיקות.
    נראה ראשית את מקומן של שתי הפעילויות הללו במסגרת תהליך הפיתוח של המערכת:



    את הביקורות, אם כן, עורכים בכל שלבי הפיתוח. את הבדיקות מבצעים על האבטיפוס של המערכת ולאחר מכן על המוצר עצמו.

    עריכת ביקורת משמעה למעשה ביצוע ניתוח כזה או אחר של הדרישות, התכן והקוד במערכת. הניתוח יכול להתבצע ידנית או אוטומטית, על ידי מגוון כלים הקיימים כיום. סוגי הביקורת כוללים עריכת ביקורת לתוכנית, ניתוח קוד אוטומטי ואימות פורמלי.
    חשוב לשים לב כי הביקורות מסוגלות לוודא רק את תאימות המערכת הנבנית לדרישותיה (לבצע אימות, למעשה). אין הן יכולות לקבוע אם המערכת הזו תשרת היטב את צרכי הלקוח, ואף אינה יכולה להעריך פרמטרים חשובים אחרים שכבר סקרנו כגון מהימנות ויעילות. מסיבה זו יש לערוך למערכת גם שני סוגים שונים של בדיקות:

    בדיקות לגילוי פגמים: המטרה כאן היא לגלות שגיאות במימוש המערכת. אין כאן כל התייחסות למשתמש או לכל פרמטר אחר פרט לבדיקת התאימות בין מפרט המערכת לבין המערכת. בדיקות אלו הן למעשה צעד משלים לביקורות שנערכו באופן "יבש" על המערכת.
    בדיקות סטטיסטיות: בדיקות אלה משמשות לכל המטרות שהשמטנו בכוונה עד כה. כאן נבדק אופן העבודה של המשתמשים עם המערכת, מהימנותה ויעילותה. הבדיקות לוקחות בחשבון את התנאים האמיתיים בהם תפעל המערכת ומדמים אותם במעבדה, לעתים עם משתמשים אמיתיים כדי לבחון את התנהגות המערכת בתנאי אמת.

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

    במקביל לבדיקות התכנה מתבצע תהליך ניפוי שגיאות, העוסק בתיקון שגיאות שהתגלו במערכת, בדרך כלל על ידי הבדיקות השונות.
    הנה תרשים כללי של תהליך הניפוי:



    שים לב שתהליך ניפוי השגיאות אינו חלק מתהליך האימות והתיקוף. הדבר מודגם היטב כאשר נותנים את הדעת מיהם האנשים העוסקים בשני התהליכים האלו:
    את הבדיקות מבצע צוות בדיקות. אנשים אלו אינם אנשי פיתוח תכנה, או לפחות אינם נמנים על צוות הפיתוח של המערכת הנבדקת. ההקפדה על כלל זה חשובה מכיון שתופעה מוכרת מתרחשת כאשר צוות הפיתוח (ולא רק בתחום התוכנה, אגב) בודק את יצירתו הוא: הכל עובד באופן תקין. הסיבה לכך היא שמפתחי המערכת יודעים כיצד היא פועלת, והם מכוונים (במודע או שלא במודע) את בדיקותיהם לאשר את התהליכים המוכרים להם. רק בודק לא משוחד מסוגל לבחון תרחישים הגיוניים ובלתי הגיוניים באופן שווה.
    את ניפוי השגיאות, לעומת זאת, מבצע צוות הפיתוח. מדובר במעבר יסודי על הקוד, בדרך כלל בעזרת כלים יעודיים המאפשרים למפתחים לבחון את מצב המערכת בתרחיש בו התגלתה בעיה בתפקוד המערכת.

    לתחילת הדף תכנון אימות ותיקוף
    ©איתן 2003. כל הזכויות שמורות למערכת המידע איתן