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

מתוך ויקיפדיה, האנציקלופדיה החופשית
קפיצה אל: ניווט, חיפוש

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

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

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

קיימות 2 גישות מרכזיות לאוטומציה:

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

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

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

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

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

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

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

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

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

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

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

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

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

  • אי תלות של פלטפורמות ומערכות הפעלה
  • היכולת המונעת על ידי נתונים (קלט, פלט, נתוני-על)
  • דיווח שניתן לאפיון (DB Access, ‏Crystal reports)
  • ניפוי שגיאות ותיעוד יומן בצורה קלה
  • שליטה ידידותית בגרסאות – קבצים בינאריים מינימליים
  • בר הרחבה ובר התאמה (API חופשיים כדי שיהיה אפשר לשלב עם כלים אחרים)
  • דרייבר נפוץ (לדוגמא IDE עבור JAVA). זה מאפשר ביצוע אינטגרציה בין בדיקות לזרימת העבודה של המפתחים.
  • תמיכה בהרצת בדיקות לא-מטופלות לצורך אינטגרציה עם תהליכי build ואצווה. שרתים של אינטגרציה מתמשכת דורשים זאת.
  • הודעות אימייל (הודעה אוטומטית במקרה של כישלון או השגת רף כלשהו). מריץ הבדיקות מבצע זאת.
  • תמיכה בסביבת הרצה מחולקת.
  • תמיכה באפליקציה מחולקת.

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

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

הגדרת גבולות בין מסגרת אוטומציה וכלי בדיקה[עריכת קוד מקור | עריכה]

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

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

  1. בדיקות מונעות-נתונים
  2. בדיקות מונעות-מודלוריות
  3. בדיקות מונעות-מילות מפתח
  4. בדיקות כלאיים
  5. בדיקות מבוססות-מודל
  6. בדיקות מונעות-קוד

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

שם הכלי פותח ע"י גרסה אחרונה
AutoIt Jonathan Bennett & AutoIt Team 3.3.8.1
Cucumber קוד פתוח 1.0.2
eggPlant TestPlant 2012
EiffelStudio AutoTest Eiffel Software 7.1, Jun 2012
FitNesse קוד פתוח v20111026
HP QuickTest Professional HP Software Division 11.5
IBM Rational Functional Tester IBM Rational 8.3.0
LabVIEW National Instruments 2011
Maveryx Maveryx 1.3.1
Oracle Application Testing Suite Oracle Corporation 12.1
QF-Test Quality First Software GmbH 3.5.0
Ranorex Ranorex GmbH 4.0.3
Rational robot IBM Rational 2003
Robot Framework קוד פתוח 2.7.5
Selenium קוד פתוח 2.33.0
Sikuli קוד פתוח X 1.0
SilkTest Borland 14.0
TestComplete SmartBear Software 9.1
Testing Anywhere Automation Anywhere 8.0
TestPartner Micro Focus 6.3
Test Studio Telerik 2012
Time Partition Testing (TPT) PikeTec GmbH 4.2
TOSCA Testsuite TRICENTIS Technology & Consulting 7.5.0
Visual Studio Test Professional Microsoft 2012
Watir קוד פתוח 3.0

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

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

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