בדיקות תוכנה

מתוך ויקיפדיה, האנציקלופדיה החופשית
קפיצה אל: ניווט, חיפוש
הנדסת תוכנה
מאמר זה הוא חלק מקטגוריית הנדסת תוכנה

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

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

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

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

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

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

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

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

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

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

בהתאם למודלים של פיתוח תוכנה כגון: מפל המים, מודל V, מודל W ואחרים; קיימים 4 שלבים מרכזיים בבדיקות תוכנה:

  • בדיקות יחידה (Unit) - בדיקות ברמת יחידת תוכנה (מודול). לרוב מבוצעות על ידי מפתח התוכנה.
  • בדיקות אינטגרציה (Integration) - בדיקת שילוב יחידות תוכנה בהיקפים שונים, החל משתי יחידות ועד לכלל היחידות במערכת.
  • בדיקות מערכת (System) - בדיקות המערכת בכללותה, בדרך כלל בראיית המשתמש של יכולות המערכת.
  • בדיקות קבלה (Acceptance) - בדיקות הנעשות על ידי המשתמש או הלקוח במטרה לוודא כי המערכת פועלת בהתאם לדרישות שהוגדרו במסמך הדרישות המקורי ובשינויי דרישה (change request) שהועברו במהלך מחזור חיי הפיתוח.

בנוסף מקובל לסווג את בדיקות גם לפי החלוקה שמתבססת על אופי הבנת המערכת ורמת הירידה של הבודק לפרטים:

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

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

  • בדיקות פונקציונליות (Functional) - לאימות פעילות המערכת. בדיקות אלו מבוססות על מסמך הדרישות ומסמך האפיון ומטרתן לבדוק כי המערכת עושה את מה שהיא צריכה ולא עושה את מה שאינה צריכה לעשות (valid and invalid testing)
  • בדיקות לא פונקציונליות (Non functional) - בדיקות אלו בודקות איך פועלת המערכת וכוללות בדיקות עומסים, ביצועים, שימושיות וסוגי בדיקות רבים נוספים (שחלקם מפורטים למטה).
  • בדיקות שימושיות (Usability) - בדיקות נוחות השימוש ויעילות העיצוב של האפליקציה ונגישות לבעלי מוגבלויות. לדוגמה: נוחות השימוש בתפריטים, ניווט נוח והתמצאות באתר.
  • בדיקות בינלאומיות (Internationalization) - בדיקות המתמקדות בשימוש בתוכנה בממשקים בשפות שונות. למשל - אתרי אינטרנט רבים (כמו ויקיפדיה) בהם יש דפים בשפות שונות, מבצעים בדיקות מהסוג הזה. 
  • בדיקות ממשק לקוח (GUI) - בדיקות הפקדים והשדות במסך. התנהגות תקינה, פורמט של שדות, בהתאם לחוקיות המוגדרת ברמת המסך ולא הלוגיקה העיסקית. לדוגמה: בדיקת מינימום ומקסימום תווים בשדה.
  • בדיקות שילוב מערכת (Compatibility) - לאימות יכולת שילוב התוכנה/רכיב תוכנה במערכת קיימת/חדשה (למשל - תאימות של התוכנה לעדכוני מערכת הפעלה, דפדפנים שונים, תוכנות אחרות שהתוכנה אמורה לעבוד בשילוב עימן, וכדומה).
  • בדיקות אלפא/בתא (Alpha/Beta) - בדיקות שמבוצעות על ידי קבוצת משתמשים מוגדרת סגורה (אלפא) או פתוחה (בתא) אשר משתמשים במוצר ומדווחים על תקלות הצפות תוך כדי שימוש שוטף.
  • בדיקות שפיות (Sanity) - בדיקות בסיסיות המאפשרות לזהות במהירות וביעילות אם הפונקציונליות הבסיסית של המוצר פועלת כנדרש, והמוצר במצב יציב.
  • בדיקות עשן (Smoke) - סוג נוסף של בדיקות הנועד לזהות במהירות את מצב היציבות של המוצר, על ידי גילוי מוקדם של תקלות המראות על כשל חמור ברכיב כלשהו במוצר. בניגוד לבדיקות שפיות, בדיקות עשן בדרך כלל מבוצעות בצורה יותר אינטואיטיבית וגמישה, ולא בהכרח לפי תסריטים קבועים מראש.
  • בדיקות הרס (Destructive) - בדיקות אלו נעשות במטרה להכשיל ולהרוס חלקים שונים של המערכת הנבדקת ובכך לבדוק את יכולת השרידות שלה, בדיקות אלו נעשות בשלב מאוחר של התהליך כאשר המערכת נמצאת במצב עמיד ויציב. בשוק קיימים מספר כלים המאפשרים לדמות בדיקות הרס. לדוגמה: Winner.
  • קיימים סוגי בדיקות נוספים המותאמים למאפייני הנדסת תוכנה נוספים (ilities).
  • בדיקת תאימות (Protability) - בדיקות הבודקות שהתוכנה יכולה להתאים את עצמה למערכות הפעלה שונות כמו Windows 7/8/XP או אם האתר תומך בדפדפנים שונים כמו Chrome/Firefox/Explorer.
  • בדיקת תחזוקתיות ׁ(Maintainability) - בדיקה שבודקת שאפשר לעדכן או לתקן את התוכנה אחרי הוצאתה לאור, בדיקה זו בודקת גם אם הקוד כתוב בצורה פשוטה
  • בדיקת ביצועים (Efficiency) - בסוג בדיקות זה נבדקת יכולת התגובה של צד השרת במערכות שרת/לקוח בהן צפויים משתמשים רבים בו זמנית. בדיקות אלו מתמקדות במדידת זמני התגובה ובמציאת "נקודת השבירה" של המערכת. מלבד עומס הנובע מ"משתמשים וירטואלים" מדומים גם עומסים הנובעים מטרנזקציות וג'ובים המורצים ברקע, שלא כתוצאה ישירה מתהליכים עיסקיים. בשוק קיימים מספר כלים המאפשרים לדמות משתמשים רבים. לדוגמה: LoadRunner, ‏WebLoad, ‏TeamSystem. בבדיקת ביצועים יש שלוש סוגי בדיקות LOAD AND STRESS AND VOLUME, בLOAD בודקים אם המערכת עובדת עם מס' משתמשים רגיל, STRESS בבדיקה זו בודקים אם המערכת עובדת עם מס' משתמשים יותר מהרגיל, VOLUME היא בדיקה שבודקת אם המערכת עובדת מהר כשיש יותר נתונים במערכת.
  • בדיקת מבניות (Structural) - ערך חסר
  • בדיקות הקשורות לשינויים - בבדיקה זו יש שתי סוגי בדיקות Regression , Regression AND Reus - בדיקה חוזרת על מקומות שכבר נבדקו בהצלחה(גם איפה שאף פעם לא היה תקלה), Reus - בדיקה חוזרת על מקום ספציפי לשם בדיקת תיקון תקלה.

אופי הבדיקות[עריכת קוד מקור | עריכה]

  • בדיקות תוכנה ידניות (Manual Testing) - בדיקות תוכנה הנעשות על ידי עובד שהוכשר לכך בדרך כלל על פי תוכנית בדיקות מסודרת ומוסכמת.
  • בדיקות תוכנה ממוכנות (Automation Testing) - בדיקות תוכנה הנעשות בצורה מכנית, רצוי עם מינימום התערבות אנושית.

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

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