בדיקות יחידה

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

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

יתרונות

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

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

מגבלות

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

גישות שונות של בדיקות יחידה

קיימות מספר גישות לביצוע של בדיקות יחידה.

קופסה לבנה, קופסה שחורה

בדיקות ידניות מול בדיקות אוטומטיות

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

בדיקות יחידה בתחום התוכנה

הנדסת תוכנה
ערך זה שייך לקטגוריית הנדסת תוכנה
פעילויות ושלבים
דרישותניתוחאפיוןארכיטקטורהעיצובתכנותניפוי שגיאותבדיקהאימותבנייהפריסהתפעולתחזוקה
מתודולוגיות
זריזותמפל המיםתכנת ותקןCrystal ClearScrumUnified ProcessExtreme Programmingאינטגרציה רציפהDevOps
תחומים תומכים
ניהול פרויקטיםניהול תצורהתיעודהבטחת איכותProfiling
כלים
מהדרמקשרמפרשIDEניהול גרסאותאוטומציית בנייה

בדיקות יחידה לתוכנה היו בשימוש מאז ימיו הראשונים של התכנות הפרוצדורלי. המתכנת היה כותב לעיתים תוכנית בדיקה שאינה חלק מהיישום על מנת לבדוק נכונות של פרוצדורה. השיטה הייתה ישימה גם בתכנות מודולרי ובכל פרדיגמת תכנות נפוצה מאז, אך חסרונה המרכזי היה נעוץ בקושי לערוך סדרת בדיקות מקיפה המורצת באופן אוטומטי. החל מהעשור הראשון של המאה ה-21 גבר השימוש בחבילות עזר לבדיקות יחידה (Unit testing frameworks), שאיפשרו יצירת תבנית אחידה לכל בדיקת יחידה. ספריות עזר נוספות איפשרו את הגברת הבידוד של כל בדיקה והרצתה בהקשר עצמאי לחלוטין, ללא תלות ביחידות אחרות או בתלויות חיצוניות אחרות דוגמת בסיס נתונים.

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

Extreme programming

בדיקות יחידה קשורות קשר הדוק ל-Extreme programming, למרות שהן היו בשימוש עוד קודם. פיתוח מונחה בדיקות הוא חלק חשוב ב-Extreme programming ובמסגרתו מפותחת תוכנה במחזורים קצרים בהם נכתבת בדיקת יחידה עבור כל תכונה חדשה ומיד אחריה נכתב קוד התכונה עצמה..

ראו גם