בדיקות יחידה
| ערך זה זקוק לעריכה: הסיבה לכך היא: שנדרש להבדיל בין בדיקות יחידה למרכיבים של כל מערכת, לבין בדיקות יחידה לתוכנה בפרט. | |||
| אתם מוזמנים לסייע ולתקן את הבעיות, אך אנא אל תורידו את ההודעה כל עוד לא תוקן הדף. אם אתם סבורים כי אין בדף בעיה, ניתן לציין זאת בדף השיחה. | |||
במחקר ופיתוח, בדיקות יחידה הן בדיקות ברמת יחידת המערכת הקטנה ביותר (מודול) שמאמתות את פעילותה התקינה של היחידה. הבדיקות נערכות לרוב לאחר הכנת המודול או לאחר שבוצעו בו שינויים, אך קיימות גם שיטות בהן מורצות בדיקות יחידה בטרם הכנת המודול. הרעיון הוא ליצור קבוצה של בדיקות, אשר תכסה את כל פעילות המודול, והצלחתה תוכיח בוודאות סבירה כי המודול תקין. סוג זה של בדיקות מבוצע בדרך כלל על ידי אנשי הפיתוח ולא על ידי משתמשי הקצה.
תוכן עניינים |
יתרונות [עריכה]
מטרת בדיקות היחידה היא לבודד כל חלק (מודול), ולהראות שכל חלק כזה עובד באופן תקין כאשר הוא עצמאי. בדיקות היחידה מספקות סיכום חד משמעי שהמודול עומד בתנאים בהם הוא אמור לעמוד. התוצאה של בדיקות היחידה מביאה לכמה יתרונות:
- תהליך שינוי
- ניתן לבצע שיפורים ושדרוגים למודול תוך שימוש בבדיקות היחידה לצורך ווידוא הנכונות, ואי הפגיעה ביכולות קודמות.
- פישוט תהליך השילוב
- רק לאחר שכל החלקים עובדים טוב, יש טעם לעבור אל בדיקות השילוב הבוחנות את כל המערכת. בדיקות השילוב הן מורכבות משום שהן עוסקות בכל המערכת. לאחר ביצוע בדיקות יחידה אנו מצמצמים את הבעיות בהן ניתקל בשלב זה לבעיות שילוב, לאחר שמובטח לנו כי כל יחידה כשלעצמה עובדת בצורה תקינה.
- תיעוד
- בדיקות היחידה מהוות סוג של תיעוד למודול. לעתים כדי להבין את יכולתיו של מודול ספציפי, ניתן להסתכל על בדיקות היחידה שהוא עומד בהם.
- הפרדת ממשק ממימוש
- בדיקות היחידה מאלצת את מפתחים לשמור על ממשקים אחידים כלפי שאר המערכת. אחידות זו תורמת לתאימות של המודול אל כלל המערכת, וליכולת לחלק את עבודת הפיתוח של מודולים שונים לצוותים שונים, וכך גם את עבודת הבדיקות.
מגבלות [עריכה]
בדיקות יחידה לא מבטיחות מערכת תקינה. הן אינן עוסקות בבעיות שילוב, בעיות ביצועים, ובעיות מערכתיות נוספות. כמו כן, בדיקות היחידה לא ישמו בהכרח דגש על קלטים סבירים מצד משתמש הקצה, משום שהן מתוכננות, כאמור, על ידי המפתח. לסיכום, בדיקות אלה יעילות במיוחד אם משתמשים בהן כחלק מפרויקט פיתוח, כהכנה לשלבי בדיקות אינטגרציה ובדיקות מערכת, אך גם במקרה זה מציאתן של בעיות רבות אינה יכולה לשלול את קיומן האפשרי של בעיות נוספות ברמת האינטגרציה וברמת המערכת.
גישות שונות של בדיקות יחידה [עריכה]
קיימות מספר גישות לביצוע של בדיקות יחידה.
קופסה לבנה, קופסה שחורה [עריכה]
- בדיקות קופסה לבנה – בדיקות הכוללות סקירה של המבנה הפנימי והארכיטקטורה של המודול
- בדיקות קופסה שחורה – בדיקות של פעילות המערכת על ידי השוואת הקלט והפלט המתקבל לתוצרים הצפויים.
בדיקות ידניות מול בדיקות אוטומטיות [עריכה]
בביצוע בדיקות יחידה ניתן להשתמש בכלים אוטומטים המדמים את תנאי הסביבה של המודול, והם מאפשרים ביצוע בדיקות בלחיצת כפתור. לא תמיד מבוצעת ההשקעה הנדרשת בסביבה אוטומטית, ולעתים ההשקעה אינה משתלמת - וכך נעשה עדיין שימוש בבדיקות ידניות. ראוי להדגיש כי בכל מקרה הגדרת הבדיקות ומימושן הראשוני לא יכול להיות אוטומטי, והוא ספציפי לכל מודול.
בדיקות יחידה בתחום התוכנה [עריכה]
| הנדסת תוכנה |
|---|
| מאמר זה הוא חלק מקטגוריית הנדסת תוכנה |
| פעילויות ושלבים |
| דרישות | ניתוח | ארכיטקטורה | עיצוב | תכנות | בדיקה | אימות | בנייה | תפעול | תחזוקה |
| מתודולוגיות |
| זריזות | מפל המים | תכנת ותקן
Crystal Clear | Scrum | Unified Process | XP |
| תחומים תומכים |
| ניהול פרויקטים | ניהול תצורה | תיעוד |
בדיקות יחידה לתוכנה היו בשימוש מאז ימיו הראשונים של התכנות הפרוצדורלי. המתכנת היה כותב לעתים תוכנית בדיקה שאינה חלק מהיישום על מנת לבדוק נכונות של פרוצדורה. השיטה הייתה ישימה גם בתכנות מודולרי ובכל פרדיגמת תכנות נפוצה מאז, אך חסרונה המרכזי היה נעוץ בקושי לערוך סדרת בדיקות מקיפה המורצת באופן אוטומטי. החל מהעשור הראשון של המאה ה-21 גבר השימוש בחבילות עזר לבדיקות יחידה (Unit testing frameworks), שאיפשרו יצירת תבנית אחידה לכל בדיקת יחידה. ספריות עזר נוספות איפשרו את הגברת הבידוד של כל בדיקה והרצתה בהקשר עצמאי לחלוטין, ללא תלות ביחידות אחרות או בתלויות חיצוניות אחרות דוגמת בסיס נתונים.
בניית בדיקות היחידה באמצעות חבילות העזר מאפשרת אוטמציה מלאה של ההרצה שלהן. בדיקת היחידה נכתבת באמצעות שרותי ספרייה של החבילה המאפשרים לסמן האם הבדיקה הצליחה או נכשלה. כך ניתן להריץ סדרה של בדיקות ולוודא שכולן מצליחות. בשלב ראשון יכולים מתכנתים להריץ בפקודה אחת סדרה של בדיקות השייכות למודולים הנוגעים להם. בשלב הבא ניתן להריץ את כל בדיקות היחידה שנכתבו עבור מערכת במסגרת תהליך בנייה (build) מרכזי. ניתן אף להכשיל בנייה מרכזית במידה ואחת מבדיקות היחידה נכשלת.
Extreme programming [עריכה]
בדיקות יחידה קשורות קשר הדוק ל-Extreme programming, למרות שהן היו בשימוש עוד קודם. פיתוח מונחה בדיקות הוא חלק חשוב ב-Extreme programming ובמסגרתו מפותחת תוכנה במחזורים קצרים בהם נכתבת בדיקת יחידה עבור כל תכונה חדשה ומיד אחריה נכתב קוד התכונה עצמה.