בדיקות יחידה

מתוך ויקיפדיה, האנציקלופדיה החופשית
קפיצה אל: ניווט, חיפוש
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 ובמסגרתו מפותחת תוכנה במחזורים קצרים בהם נכתבת בדיקת יחידה עבור כל תכונה חדשה ומיד אחריה נכתב קוד התכונה עצמה..

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