בדיקות יחידה

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

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

יתרונות[עריכת קוד מקור | עריכה]

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

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

מגבלות[עריכת קוד מקור | עריכה]

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

גישות שונות של בדיקות יחידה[עריכת קוד מקור | עריכה]

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

קופסה לבנה, קופסה שחורה[עריכת קוד מקור | עריכה]

בדיקות ידניות מול בדיקות אוטומטיות[עריכת קוד מקור | עריכה]

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

בדיקות יחידה בתחום התוכנה[עריכת קוד מקור | עריכה]

הנדסת תוכנה
מאמר זה הוא חלק מקטגוריית הנדסת תוכנה

Coding Shots Annual Plan high res-5.jpg
מתכנת בעבודתו

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

Crystal Clear | Scrum | Unified Process | Extreme Programming | Continuous integration

תחומים תומכים
ניהול פרויקטים | ניהול תצורה | תיעוד | הבטחת איכות | Profiling
כלים
מהדר | מקשר | מפרש | IDE | ניהול גרסאות | אוטומציית בנייה

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

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

Extreme programming[עריכת קוד מקור | עריכה]

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

ראו גם[עריכת קוד מקור | עריכה]