top of page

מבוא לבדיקות תוכנה

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

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

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

בדיקות תוכנה ותהליכי הבטחת איכות תוכנה באים לידי ביטוי באופנים שונים במתודולוגיות שונות. בחלק ממתודולוגיות פיתוח התוכנה, מקומם של הבדיקות הוא בסוף תהליך הפיתוח (דוגמה מפל-המים). באחרות, משימות הבטחת איכות משולבות לאורך מחזור הפיתוח השלם של היישום. דוגמה לכך הוא מודל ה-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) - בדיקות הפקדים והשדות במסך. התנהגות תקינה, פורמט של שדות, בהתאם לחוקיות המוגדרת ברמת המסך ולא הלוגיקה העיסקית. לדוגמה: בדיקת מינימום ומקסימום תווים בשדה.
בדיקות עומס (Load) - בדיקות המדמות עומס על המערכת הנבדקת. בסוג בדיקות זה נבדקת יכולת התגובה של צד השרת במערכות שרת/לקוח בהן צפויים משתמשים רבים בו זמנית. בדיקות אלו מתמקדות במדידת זמני התגובה ובמציאת "נקודת השבירה" של המערכת. מלבד עומס הנובע מ"משתמשים וירטואלים" מדומים גם עומסים הנובעים מטרנזקציות וג'ובים המורצים ברקע, שלא כתוצאה ישירה מתהליכים עיסקיים. בשוק קיימים מספר כלים המאפשרים לדמות משתמשים רבים. לדוגמה: LoadRunner, ‏WebLoad, ‏TeamSystem.
בדיקות ביצועים (Performance) - בדיקת ביצועים של המוצר בקונפיגורציות ורמות עומס שונות, ומדידת הביצועים לצורך תיעוד/השוואה לדרישות.
בדיקות נסיגה (Regression) - לאימות פעילות המערכת לאחר שבוצעו בה שינויים. לוודא שמה שעבד לא התקלקל בעקבות העברת גרסה.
בדיקות שילוב מערכת (Compatibility) - לאימות יכולת שילוב התוכנה/רכיב תוכנה במערכת קיימת/חדשה (למשל - תאימות של התוכנה לעדכוני מערכת הפעלה, דפדפנים שונים, תוכנות אחרות שהתוכנה אמורה לעבוד בשילוב עימן, וכדומה).
בדיקות אלפא/בתא (Alpha/Beta) - בדיקות שמבוצעות על ידי קבוצת משתמשים מוגדרת סגורה (אלפא) או פתוחה (בתא) אשר משתמשים במוצר ומדווחים על תקלות הצפות תוך כדי שימוש שוטף.
בדיקות שפיות (Sanity) - בדיקות בסיסיות המאפשרות לזהות במהירות וביעילות אם הפונקציונליות הבסיסית של המוצר פועלת כנדרש, והמוצר במצב יציב.
בדיקות עשן (Smoke) - סוג נוסף של בדיקות הנועד לזהות במהירות את מצב היציבות של המוצר, על ידי גילוי מוקדם של תקלות המראות על כשל חמור ברכיב כלשהו במוצר. בניגוד לבדיקות שפיות, בדיקות עשן בדרך כלל מבוצעות בצורה יותר אינטואיטיבית וגמישה, ולא בהכרח לפי תסריטים קבועים מראש.
בדיקות הרס (Destructive) - בדיקות אלו נעשות במטרה להכשיל ולהרוס חלקים שונים של המערכת הנבדקת ובכך לבדוק את יכולת השרידות שלה, בדיקות אלו נעשות בשלב מאוחר של התהליך כאשר המערכת נמצאת במצב עמיד ויציב. בשוק קיימים מספר כלים המאפשרים לדמות בדיקות הרס.

לדוגמה: Winner

קיימים סוגי בדיקות נוספים המותאמים למאפייני הנדסת תוכנה נוספים (ilities).
 

 

 

Please reload

bottom of page