כלי בדיקת איכות תוכנה - יסמין פאנוס
Download
Report
Transcript כלי בדיקת איכות תוכנה - יסמין פאנוס
סמינר בהנדסת תוכנה
כלים אוטומטים לבדיקות תוכנה
WinRunner
סמינר בהנדסת תוכנה
ד"ר אביב יצחק
יסמין פאנוס
300398310
סדר המצגת
מבוא
בדיקות תוכנה
תפקיד בודקי תוכנה
רמות בדיקה
בדיקות אוטומטיות
כלי בדיקות קיימים
איך מתחילים?
GUI Map
תכנות באמצעות TSL
הגדרת פונקציות TSL
הרצת התסריט ודיווח תוצאות
ביצוע הבדיקות
דיווח ומעקב תקלות
איך נדווח על תוצאות ההרצה
כיצד יודעים מתי לסיים את
הבדיקות?
דוגמאות
סיכום
מבוא
בעבר היו בדיקות התוכנה תחום חובבני שבוצע על ידי התוכניתנים עצמם או על ידי
סטודנטים חסרי הכשרה .היום הנדסת בדיקות תוכנה היא מקצוע נלמד ,ובדיקות התוכנה
כוללות כתיבת תסריטי בדיקות תוכנה ושימושים מתקדמים בכלי בדיקה אוטומטים.
WinRunnerהוא כלי לבדיקת פונקציונליות בצורה אוטומטית של תוכנה.
נראה כי ה WinRunnerיכול לקצר באפן משמעותי את זמן הבדיקות באמצעות תהליך
אוטומציה הכולל את השלבים הבאים:
למידת האובייקטים של היישום הנבדק.
הקלטת התסריט הידני Record and Playbackוהוספת פונקציות ופעולות נוספות
באמצעות שפת ה .TSL
.Debugging
הרצה וניתוח התוצאות.
דיווח על תקלות.
בדיקות תוכנה
בדיקות תוכנה זהו תהליך הנועד לאפשר לבעלי העניין במוצר לקבל מדד לאיכותו ועמידתו
בדרישות שהוצבו לו.
בדיקות תוכנה הם אוסף התהליכים המבוצעים במטרה לנקות את התוכנה מבאגים קריטיים
ועל מנת להבטיח ,במידת האפשר ,את פעולתה התקינה של התוכנה בהתאם לכוונת
המפתחים.
בדיקות תוכנה מהוות חלק אינטגרלי מתהליכי הנדסת תוכנה.
תפקיד בודקי תוכנה
תפקידו של איש הבדיקות הוא לעבור על כלל חלקיה של התוכנה ,דרך הממשק או בתוך
שורות הקוד,לבדוק באילו חלקים ישנן תקלות ולהצביע עליהן בפני המתכנתים.
על בודק התוכנה מוטלות פעולות חשיבה וסוגי אחריות מרובים מלבד בדיקה יבשה .כגון
חשיבה על עיצוב ,יעילות נוחות ,ממשק וכד'.
את הממצאים מחזיר הבודק לאנשים הקשורים בדבר כגון מנהל המוצר והמעצבים.
בודק תוכנה נקרא QA-Quality Assuranceאו QC-Quality Control
המושג בקרת איכות מגיע מעולם הייצור ,אולם בתחום המחשבים מדובר בהפקה של
תוכנות.
עולם בודקי התוכנה מתחלק ל 4רמות:
רמה גבוהה -בודקי תוכנה שעובדים ישירות מול הקוד.
סוג זה של עבודה נקרא קופסא לבנה ( )White Boxודורש עבודה מול שורות קוד ,כולל
קריאה מלאה של הקוד ולעיתים תיקונים בקוד .כדי לבצע בדיקת תוכנה ברמה כזו יש צורך
לדעת תכנות ברמה סבירה.
סוג נוסף של בודקי תוכנה ,היא כתיבת תוכנות שבודקות תוכנית אחרת .זהו למעשה תכנות
לכל דבר .המתכנת בונה סביבה שתבדוק את הרכיב הספציפי אותו הוא מתכוון לבחון.
רמה בינונית -בדיקת תוכנה ללא התעסקות בקוד.
סוג זה של עבודה נקרא קופסא שחורה ( )Black Boxמשום שהתוכנה הנה כמו קופסה
שחורה ואטומה בפני הבודק שלא נכנס לקרביה .לצורך סוג זה של עבודה נדרש ידע
טכנולוגי ברמה טובה ,אולם לא נדרש ידע בתכנות.
בודק התוכנה סורק את כל התוכנה ע"י שימוש במקשים והזנה בשדות השונים ,עליו לחפש
היכן התוכנית מתרסקת ומהם הבעיות הקיימות.
רמה נמוכה -בדיקה אוטומטית
ישנה עבודה בבדיקת תוכנה בעזרת תוכנות בדיקה אוטומטיות המיוצרות לצורך העניין
ודורשות ידע מסוים בתפעול תוכנת הבדיקה ובתכנון הבדיקה.
תוכנות בדיקה מהסוג הן .Win Runner, Record View, Load Runner :ניסיון בעבודה
עם תוכנות מהסוג הוא יתרון אולם בד"כ אינו חובה לעבודה בתחום.
בכירים -ישנם בעולם בודקי התוכנה תפקידים בכירים כמהנדס או ראש צוות.
מהנדס בדיקות תוכנה אינו אדם שהוא בהכרח מהנדס ,אלא אדם מנוסה יחסית בתחום ,עם
ידע בכלי בדיקה שונים ובתכנות.
בדיקות הליכים
בדיקות מודולים
בדיקות שילוב תוכנה
בדיקות לתיקוף תוכנה
בדיקות לשילוב
מערכת
בדיקות לתיקוף
מערכת
בדיקות קבלה
אלפא
בדיקות ביטא
בדיקת יחידות
)(Unit Testing
בדיקות שילוב (אינטגראציה)
בדיקות לתיקוף דרישות
בדיקות אוטומטיות
בודקי תוכנה אוטומטיות נמצאות בשימוש בעיקר בפרויקטים גדולים וזאת מפני שהזמן
שנדרש על מנת ללמוד ולהטמיע את כלי הבדיקות האוטומטיות גבוה ,ומשתלם בעיקר
בפרויקטים בהם נדרשות כמות בדיקות מרובה.
בדיקות אוטומטיות נפוצות הן לדוגמה:
מנתחי קוד -בודקים את שלמות הקוד ואת התחביר ()Syntax
מנתחי זיכרון -בודקים את ניצול הזיכרון בתוכנה ,ובודקים שאין זליגת זיכרון..
בודקי עומסים -בודקים את עמידות התוכנה/חומרה בפני עומסים שונים.
בדיקות - Webבודקות שהלינקים נכונים ,שקוד HTMLנכון ,שתוכנות השרת עובדות
ושהגלישה בטוחה.
כלי בדיקות קיימים
בשוק קיום ישנם מספר רב של כלי עזר לתהליך הבדיקות ,כמו:
•כלי לניהול ומעקב אחר תקלות.
•כלי לניהול הבדיקות.
•כלי לבקרת קוד.
•כלי למעקב כיסוי שורות קוד.
•כלי לביצוע בדיקות אוטומטיות.
•כלי לסימולציה של עומסים.
להלן שמות של מספר כלי בדיקות אוטומטיות כמו:
שם הכלי
TestDirectionמרקורי
WinRunner / QTPמרקורי
LoadRunnerמרקורי
חברה
תיאור
כלי לניהול הדביקות
ודיווח ומעקב תקלות.
כלי לביצוע בדיקות
פונקציונליות אוטומטיות.
כלי ליצירת סימולציה של
משתמשים.
שם התוכנהWinRunner 2000 :
היצרןMercury Interactive Corp. :
סביבת היעד :מחשבMF AS/400 :
סביבת העבודה :מחשבPC :
נציג בארץ :מרקורי אינטראקטיב (ישראל) בע"מ
ארץ המקור :קליפורניה ,ארה"ב
מערכת הפעלה :כל מערכת הפעלה
מערכת הפעלהWindows 3.1,95,NT :
הפעלת התוכנה אינה מותנית בביצוע שלבים קודמים על ידי תוכנה אחרת.
קטגוריות
אוטומציה בהרצת מבדקי
רגרסיה
פונקציות עיקריות
סביבת בדיקות ידידותית שפת בדיקות מניפולציה
בתאריכים אימות ) (verificationאוטומטי
וגמיש דוחות
29. GUI Spy
28. Left Ctrl+F3
30. Copy
& Paste
14. GUI Map Editor
31.
Learn
32. Double click
15. Move
33.
1. Application
Under Test
2. capture
3. WinRunner
Recording
21. object
recognition
22. GUI Map
Configuration
26. defaults
17.
6. object
references
16.
7. Temp.
GUI Map
4. Script
code
generated
19.
12. Perm.
GUI Map
20.
25. Paste
script lines
18. Merge
5. Scripts
10. control
8. References
11. References
9. Run
13. load
איך מתחילים?
מפעילים את תוכנית התקנת WinRunner
עם פתיחת התוכנה נקבל שתי אפשרויות לבחירה:
אם ברצוננו לפתוח תסריט חדש נבחר ב New Test
אם ברצוננו לפתוח תסריט קיים נבחר ב Open Test
כדי להתחיל בדיקות ,עליך להזין תבנית סקריפט:
באמצעות מסך זה ניתן לראות את התסריט שהקלטנו ,וניתן לבצע שינויים ותיקונים לתסריט
קיים .בנוסף ,מסך זה ישמש אותנו על מנת לבצע הרצה של התסריט ומעקב אחר התקדמות
התסריט.
הצבעים השונים בתוך התסריט ,ישמשו אותנו על מנת להבדיל בין סוגים שונים של טקסט:
טקסט בצבע כחול :מציין פונקציות של שפת ה .TSL
טקסט בצבע ירוק :מציין בד"כ שמות של אובייקטים.
טקסט בצבע שחור :מציין בד"כ ערכים של אובייקטים ושמות משתנים.
טקסט בצבע אדום :מציין הערות (התו הראשון בשורה הוא .)#
סרגלי הכלים מכילים סוגים שונים של iconsהמשמשים להקלטה ,הרצה ו .Debugging
לדוגמא:
.1כפתור ההקלטה .Record
.2כפתור הרצה (מתחילת התסריט).
.3כפתור הרצה .Step By Step
ה GUI Map
ה ,WinRunnerבדיוק כמו כלים מקובלים אחרים לבדיקות רגרסיה ,הוא בראש ובראשונה
כלי לבדיקות אוטומטיות באמצעות ה .GUI- Graphic User Interface
כשאנו אומרים ,GUIהכוונה היא לממשק הגרפי בו אנו משתמשים על מנת לתפעל את
היישום אותו ברצוננו לבדוק או להריץ ,או במילים פשוטות -השדות ,הכפתורים ושאר
האובייקטים הקיימים על המסך (תחת מערכת ההפעלה Microsoft Windowsלצורך
העניין).
ההנחה (הנכונה בד"כ) היא שרוב בדיקות המשתמש הן למעשה בדיקות -GUIאנחנו
לוחצים על כפתור <המשך> ומצפים לעבור למסך הבא ,אנחנו בוחרים לסמן אפשרות
מסוימת ב Checkboxמסוים ומצפים לתגובה בעקבות בחירה זו ,וכך הלאה .מניסיון ידוע
לנו ,כי בדיקות משתמש ברמת ה GUIהן פשוטות מצד אחד (אין צורך להבין ממה ואיך
היישום מורכב) אך מצד שני הסיכוי למצוא תקלות (או יותר נכון את כל התקלות) הוא גדול
מאוד.
מסיבות אלה ,ה WinRunnerעוזר לנו לבצע בדיקות בכך שבשלב ראשון הוא יודע לזהות
את האובייקטים הגרפיים המוצגים על המסך (כפתורים,Checkboxes ,
Radio buttonsועוד).
באמצעות זיהוי האובייקטים ניתן להקליט תסריט ,המדמה את פעולות המשתמש (למשל:
לחיצה על כפתור< )>OKולהריץ אותו שוב ושוב.
ה WinRunnerמבצע את הזיהוי של כל אובייקט ואובייקט באמצעות זיהוי של התכונות
Propertiesשלו ,כפי שהן מתבטאות בתקשורת בין היישום לבין מערכת ההפעלה
. Windowsזיהוי התכונות הוא זיהוי חד חד ערכי ומינימאלי -כלומר ,נלמדות התכונות
המייחדות אובייקט אחד מסוים מכל האחרים ,ורק התכונות האלה.
הלמידה של האובייקטים מתבצעת באמצעות ה GUI Spyושמירתם של האובייקטים
מתבצעת בקבצים הנקראים . GUI Mapsתכונה זו היא ייחודית ל( WinRunnerלעומת
כלי בדיקה אחרים) ומאפשרת למשתמש ב " WinRunnerללמד" אותו גם אובייקטים
מיוחדים ועוד אפשרויות למידה מתקדמות אחרות ,כפי שהן מתבטאות בפעולת
ה .GUI Map Configuration
הקלטת תסריטים Recording Scripts
באמצעות הקלטה ,אנו יכולים בקלות ובמהירות יחסית ,ליצור תסריט שישמש אותנו
בהמשך להרצה חוזרת שלו .בד"כ ,נבצע הקלטה של תסריט פשוט ,שיכלול פונקציות TSL
המתאימות לתסריט שהקלטנו ,ולאחר מכן נוסיף לו פונקציות בעזרת שפת ה .TSL
שוב ,לא נשכח ,כי הקלטה אוטומטית תבוצע רק לאחר שהכנו מראש את התסריט הידני
המתאים לה .ללא הכנה מראש ,קשה מאוד לבצע אוטומציה של תהליך הבדיקות.
ה WinRunnerמאפשר לנו להקליט בשני אופנים:
Context Sensitive Mode .1ההקלטה וזיהוי האובייקטים מתבצעת ע"י זיהוי התכונות
של אותו אובייקט .המשמעות היא ,שהזזת אובייקט (למשל ,כפתור פעולה) ושינוי מיקומו
לא משפיעה על זיהויו ,כלומר -התסריט המקורי "ירוץ" ללא כל בעיה ,גם אם הזזנו
אובייקטים על פני אותו חלון.
Analog Mode .2ההקלטה מסתמכת על המיקום המדויק (קואורדינאטות על המסך) של
הפעולה ,כפי שהיא מתבטאת בהזזת העכבר על המסך .משום כך ,הקלטה כזו היא הרבה
פחות שכיחה ,ומשתמשת בד"כ רק להקלטות של תרשימים ,חתימות וכד'.
תכנות באמצעות
TSL-Test Script Language
ה WinRunnerמשתמש בשפת ה TSLעל מנת ליצור את תסריטי הבדיקות שאני
מקליטים .זוהי שפה ייחודית ,אך "מאחוריה" למעשה עומד תסריט בשפת .Cהתסריטים
עצמם נכתבים ומוצגים ב TSLלשם הפשטות והנוחות ,ועל מנת שלא נצטרך לטפל בבעיות
מורכבות כגון הקצאת משתנים ,הקצאת מקום בזיכרון וכד'.
יחד עם זאת ,לעיתים אנו נזקקים להוסיף לתסריט שהקלטנו גם לוגיקה פנימית ,פונקציות
בקרה ,לולאות וכד'.
if..else להלן דוגמא לבקרה על זרימת התסריט באמצעות
if )win_exists )“Flight Reservation Message”,1)==E_OK)
{
set_window )“Flight Reservation System”(;
button_press )“OK”(;
set_window )“Open Order”(;
button_press )“Cancel”(;
tl_step )flight_data, FAIL, couldn’t_open_by_date(;
}
# verifying that order table came up.
Else if )win_exists )“Search Results”,5)==E_OK){. . . .
:for באמצעות פונקציהloop "להלן דוגמא ליצירת "לולאה
Loc=1;
For (loc=0;loc<=1;loc++){ . . .
TSL הגדרת פונקציות
function function_name([parameter1,[parameter2,[parameter3…]]]](
{
<function body>
}
: פונקציות שימושיות3 תיאור קצר ל
. ביצוע התוכניתsystem() .1
. מחרוזת להצגה בדוח הבדיקהReport_msg() .2
. C בשפתsprintf דומה לSprintf() .3
הגדרת פונקציות TSL
זיהוי האובייקט מתבצע במסגרת החלון לו הוא שייך(במקרה זה ,החלון הוא .)loginמשום
כך לפני כל שימוש באובייקט כלשהו בתסריט ,אנחנו צריכים להגדיר מהו החלון אליו אנחנו
מתכוונים .הגדרה זו מתבצעת באמצעות הפונקציה ). set_window ("login",1
הרצת התסריט ודיווח תוצאות ההרצה
לאחר שסיימנו את תהליך הפיתוח וה Debuggingשל התסריט ,אנו יכולים לבצע הרצה
ולבחון את התוצאות.
מכיוון שהתסריט נכתב על מנת לעשות בו שימוש חוזר (בדיקה רגרסיה) ,אנחנו צריכים
אפשרות להריץ ולקבל תוצאות לגרסאות שונות של היישום הנבדק .נעשה זאת באמצעות
מתן שם לכל הרצה .Test Run
יש לשים לב שה WinRunnerמאפשר לנו הרצה ב 3מצבים:
Debug , Verify , Update
במצב של Debugנשתמש כאשר התסריט עדיין בשלב ה .Debuggingמכיוון שה
WinRunnerיוצר ספריות שונות עבור כל הרצה והרצה ,בבחירת Debugאנחנו
"דורסים" בכל פעם את תוצאות ההרצה הקודמת ,אך חוסכים בפתיחת ספריות מיותרות.
לאחר שהתסריט מוכן ,נשתמש ב Verify Modeעל מנת להריץ ולשמור את תוצאות
ההרצה לכל גרסה בנפרד ,ע"י בחירה בשם משמעותי לכל ( Test Runתאריך או מספר
גרסה ,בד"כ).
במצב של Updateאנו מאפשרים הרצה ועדכון כך שהתוצאות הצפויות יהיו שוות לתוצאות
בפועל.
ביצוע הבדיקות
בשלב זה מוקמת סביבת הבדיקות ומבוצעות ("מורצות") הבדיקות באופן מיידי ובהתאם
לעדיפויות עפ"י תיקי הבדיקות המפורטים.
תוצאות הבדיקות נרשמות ע"ג טפסי תקלה ומועברים לגורמים המתאימים לתיקון הליקויים.
תהליך ביצוע הבדיקות הנו תהליך איטרטיבי והוא מבוצע מספר פעמים עד לתיקון מלא של
כל הליקויים שאותרו.
דיווח ומעקב תקלות
בתהליך דיווח ומעקב התקלות מוודאים שכל התקלות שאותרו דווחו באופן ברור לגורם
המתאים לטיפול ,וטופלו על ידיו .לאחר מכן נבדקו שוב ונמצאו תקינות .שלב זה מבוצע
לאורך כל מהלך הבדיקות .כלים לדיווח ומעקב תקלות מאפשרים למנהל הבדיקות ולצוות
הבדיקות לאתר בכל נקודת זמן את מצבה של כל תקלה ,קצב התקדמות תיקון התקלות
וקבלת דיווחים סטטיסטיים שונים על מוקדי "ריבוי תקלות" ,תקלות בעייתיות שלא נפתרות
לאורך זמן ,הספקי תיקון תקלות ע"י המתכננים ועוד.
28
איך נדווח על תוצאות ההרצה?
הפונקציה הנוחה והשימושית ביותר לשם דיווח על התוצאות (הצלחה וכישלון) היא
ה .tl_step
לדוגמא:
;)rc = button_check_info)“OK”,”enabled”,1
)If (rc
{
(”tl_step )“button OK”,1,”is disables
}
- button OKהוא שם הפעולה
1מצביע על כך שאנו מעוניינים להציג את ההודעה ככישלון (הודעה אדומה).
0מצביע על כך שאנו מעוניינים להציג את ההודעה כהצלחה (הודעה ירוקה).
is disablesהיא ההודעה עצמה.
את התוצאות של הרצת התסריט נוכל לראות במסך התוצאות ,באמצעות לחיצה
על iconהמתאים (בצד הימני של המסך הראשי).
כיצד יודעים מתי לסיים את הבדיקות?
קשה לייצר תוכנה גדולה ללא באגים ,וכיוון שרבות מהתוכנות כיום מסובכות ומופעלות
בסביבות שונות ,בלתי אפשרי פעמים רבות לבצע בדיקה מושלמת.
הבדיקה מסתיימת ,אם כן ,בהתאם לאחת מכמה אפשרויות:
תאריכי יעד להפצת המוצר או להפסקת הבדיקות.
רמת התקלות ירדה מרמה מסוימת.
מספר וסוג הבדיקות הגיעו לרמה מסוימת שנקבעה קודם לכן.
נגמר תקציב הבדיקה.
חלון תוצאות הבדיקה מופיע מיד לאחר סיום הרצת התסריט
דוגמאות
סיכום
תוכנת ה WinRunner
עם הזמן פתחו תוכנות חדשות ויעילות יותר מה WinRunnerכמו תוכנת QTP
בדיקות אוטומטיות מהוות חלק חשוב בתחום -בדיקה מקיפה ,מקצועית ,וחוסכת הרבה
עבודה ידנית.