© 1999-2001, ד"ר עמיר תומר מבוא להנדסת תוכנה קידוד ובדיקות יחידה - 1 קידוד ובדיקות יחידה Coding and Unit Testing (CUT) מקורות: S. R. Schach: Chapter 13.

Slides:



Advertisements
Similar presentations
Object Oriented 33 MCSD DORON AMIR
Advertisements

ממיבחניםC שאלות ++.
תוכנה 1 סמסטר א ' תשע " ב תרגול מס ' 7 * מנשקים, דיאגרמות וביטים * לא בהכרח בסדר הזה.
מבוא למדעי המחשב לתעשייה וניהול
בתרגול הקודם הורשה: –ניתן להרחיב רק מחלקה אחת –כל מה שלא private – עובר בהורשה –המילה השמורה super –יצירת היררכיה –Object היא שורש ההיררכיה –דריסה אופרטור.
1 Formal Specifications for Complex Systems (236368) Tutorial #4 Refinement in Z: data refinement; operations refinement; their combinations.
©Silberschatz, Korth and Sudarshan4.1Database System Concepts סכימה לדוגמא.
Map-Reduce Input: a collection of scientific articles on different topics, each marked with a field of science –Mathematics, Computer Science, Biology,
© , ד"ר עמיר תומר שיטות בהנדסת תוכנה (234321) אודות הקורס - 1 שיטות בהנדסת תוכנה Introduction to Software Engineering מרצה: פרופ’ שמואל.
מכונת מצבים תרגול מס' 4 Moshe Malka.
דוד שוורץ, עידן זק, נטע צור וחיה כהן. הפונקציונאליות : המשתמש יבחר קובץ שעליו הוא רוצה לבצע את האנליזה, וילחץ עליו עם כפתור ימני בעכבר. יפתח תפריט ובו.
מודלים של מחזור חיי תוכנה Software Life-Cycle Models
משטר דינמי המשך – © Dima Elenbogen :55 חידה שכדאי לעבור עליה: 2011/ho/WCFiles/%D7%97%D7%99%D7%93%D7%94%20%D7%A2%D7%9D%20%D7%91%D7%95%D7%A0%D7%95%D7%A1.doc.
שאלות חזרה לבחינה. שאלה דיסקים אופטיים מסוג WORM (write-once-read-many) משמשים חברות לצורך איחסון כמויות גדולות של מידע באופן קבוע ומבלי שניתן לשנותו.
תכנות תרגול 2 שבוע : שבוע שעבר כתבו תוכנית המגדירה שלושה משתנים מאתחלת אותם ל 1 2 ו 3 ומדפיסה את המכפלה שלהם את ההפרש שלהם ואת הסכום שלהם.
חורף - תשס " ג DBMS, צורות נורמליות 1 צורה נורמלית שלישית - 3NF הגדרה : תהי R סכמה רלציונית ותהי F קבוצת תלויות פונקציונליות מעל R. R היא ב -3NF.
Map-Reduce Input: a collection of scientific articles on different topics, each marked with a field of science –Mathematics, Computer Science, Biology,
מבוא להנדסת תוכנה דרישות - 1 הגדרת דרישות וניהולן Requirements Definition and Management.
A. Frank File Organization Indexed-Sequential File Introduction Thanks to Tamar Barnes.
1 Formal Specifications for Complex Systems (236368) Tutorial #5 Refinement in Z: data refinement; operations refinement; their combinations.
מרצה: פרופסור דורון פלד
עיבוד תמונות ואותות במחשב אלכסנדר ברנגולץ דואר אלקטרוני : שיטות קידוד שיטות קידוד אורך מלת קוד ואנטרופיה אורך מלת קוד ואנטרופיה קידוד.
© , ד"ר עמיר תומר מבוא להנדסת תוכנה קידוד ובדיקות יחידה - 1 קידוד ובדיקות יחידה Coding and Unit Testing (CUT) מקורות: S. R. Schach: Chapter 13.
Formal Specifications for Complex Systems (236368) Tutorial #6 appendix Statecharts vs. Raphsody 7 (theory vs. practice)
תכנות תרגול 6 שבוע : תרגיל שורש של מספר מחושב לפי הסדרה הבאה : root 0 = 1 root n = root n-1 + a / root n-1 2 כאשר האיבר ה n של הסדרה הוא קירוב.
דוד שוורץ, עידן זק, נטע צור וחיה כהן. הפונקציונאליות:  המשתמש בוחר קובץ שעליו הוא רוצה לבצע את האנליזה, ולוחץ עליו עם כפתור ימני בעכבר.  נפתח תפריט.
מנפה שגיאות - DEBUGGER מבוא למדעי המחשב (234114) רועי מלמד
Questions are the Answer Penick&all H ISTORY R ELATIOINSHIPS A PPLICATION S PECULATION E XPLANATION.
Backpatching 1. תזכורת מתרגול קודם קוד ביניים - שפת הרביעיות שיטות לייצור קוד ביניים –שימוש בתכונת code –כתיבה ישירה ל-buffer של פקודות שיטות לתרגום מבני.
תהליכים  מהו תהליך ?  מבני הנתונים לניהול תהליכים.  החלפת הקשר.  ניהול תהליכים ע " י מערכת ההפעלה.
מבוא כללי למדעי המחשב תרגול 3. לולאות while לולאות while while (condition) { loop body } במקרה של קיום התנאי מתבצע גוף הלולאה ברגע שהתנאי לא מתקיים נצא.
מבוא להנדסת תוכנה אימות ותקפות - 1 אימות ובדיקות Verification & Testing מקורות: S. R. Schach: Chapter 6 R. S. Pressman: Chapter ד. גלין ו-ז. בלובבנד,
Data Structures, CS, TAU, Perfect Hashing 1 Perfect Hashing בעיה : נתונה קבוצה S של n מפתחות מתחום U השוואה ל - Hash : * טבלה קבועה (Hash רגיל - דינאמי.
© , ד"ר עמיר תומר מבוא להנדסת תוכנה תחזוקה - 1 תחזוקה והנדסה-מחדש Maintenance and Reengineering מקורות: S. R. Schach: Chapter 15 R. S. Pressman:
1 Data Structures, CS, TAU, Perfect Hashing בעיה: נתונה קבוצה S של n מפתחות מתחום U השוואה ל- Hash : * טבלה קבועה (Hash רגיל - דינאמי) * רוצים זמן קבוע.
משטר דינמי – © Dima Elenbogen :14. הגדרת cd ו -pd cd - הזמן שעובר בין הרגע שראשון אותות הכניסה יוצא מתחום לוגי עד אשר אות המוצא יוצא מתחום.
עקרון ההכלה וההדחה.
מערכות הפעלה ( אביב 2006) חגית עטיה © 1 סיכום הקורס.
תכנות מונחה עצמים Object Oriented Programming (OOP) אתגר מחזור ב' Templates תבניות.
מבוא למדעי המחשב תרגול 3 שעת קבלה : יום שני 11:00-12:00 דוא " ל :
מבוא למדעי המחשב, סמסטר א ', תשע " א תרגול מס ' 1 נושאים  הכרת הקורס  פסאודו - קוד / אלגוריתם 1.
© , ד"ר עמיר תומר שיטות בהנדסת תוכנה (234321) אודות הקורס - 1 שיטות בהנדסת תוכנה Introduction to Software Engineering מרצה : פרופ ’ שמואל.
A. Frank File Organization Introduction to Pile File.
מערכות הפעלה ( אביב 2004) חגית עטיה © 1 תהליכים  מהו תהליך ?  מבני הנתונים לניהול תהליכים.  החלפת הקשר.  ניהול תהליכים ע " י מערכת ההפעלה.
מה היום ? - - חזרה מהירה. - קריאה וכתיבה לקבצים. - בניית תוכנית כתיבה low-level - בניית ערוץ גלובלי והדגמה מול חומרה - low-level DAQ, פולימורפיזם וטריגר.
Safari On-line books. מה זה ספארי ספארי זו ספריה וירטואלית בנושא מחשבים היא כוללת יותר מ כותרים כל הספרים הם בטקסט מלא ניתן לחפש ספר בנושא מסוים.
Text to speech In Mobile Phones איתי לוי. הקדמה שימוש בהודעות טקסט על המכשירים הסלולארים היא דרך תקשורת מאוד פופולארית בימינו אשר משתמשים בה למטרות רבות,
11 Introduction to Programming in C - Fall 2010 – Erez Sharvit, Amir Menczel 1 Introduction to Programming in C תרגול
CCN CCN Central Control Network Part A presentation Winter & Spring 2002/03 Student : Kormas Tal Guide : Gerber Alex.
פיתוח מערכות מידע Class diagrams Aggregation, Composition and Generalization.
Methods public class Demonstrate { public static void main (String argv[]) { public static void main (String argv[]) { int script = 6, acting = 9, directing.
Practice session 3 תחביר ממשי ( קונקרטי ) ותחביר מופשט ( אבסטרקטי ) שיטות חישוב : Applicative & Normal Evaluation Partial Evaluation.
1 המרכז להוראת המדעים © האוניברסיטה העברית בירושלים עוברים לג ' אווה.
מבוא למדעי המחשב לתעשייה וניהול הרצאה 7. סברוטינות subroutines.
Practice session 3.  תחביר ממשי ( קונקרטי ) ותחביר מופשט ( אבסטרקטי )  שיטות חישוב : Applicative & Normal Evaluation.
Costs and Filters Dr. Avi Rosenfeld Department of Industrial Engineering Jerusalem College of Technology
שיאון שחוריMilOSS-il מוטיבציה  python זה קל ו C זה מהיר. למה לא לשלב?  יש כבר קוד קיים ב C. אנחנו רוצים להשתמש בו, ולבסס מעליו קוד חדש ב python.
תכנות מכוון עצמים ושפת ++C וויסאם חלילי. TODAY TOPICS: 1. Function Overloading & Default Parameters 2. Arguments By Reference 3. Multiple #include’s 4.
מבוא למדעי המחשב לתעשייה וניהול הרצאה 6. מפעל השעווה – לולאות  עד עכשיו  טיפלנו בייצור נרות מסוג אחד, במחיר אחיד  למדנו להתמודד עם טיפול במקרים שונים.
דוח אמצע סמסטר אביב תשס"ב 2002 שם הפרויקט :סביבת בדיקה ל PCIX PCIX environment מנחה : איתי אדר מגישים : שמיל ניסימוב גוילי יואב הטכניון.
Formal Specifications for Complex Systems (236368) Tutorial #1
SQL בסיסי – הגדרה אינדוקטיבית
מערכות בסיסי נתונים ספרות Database System Concepts/ Korth, Siberschatz
תכן UML in Design מקורות: S. R. Schach: Chapter 12
עבודה עם נתונים באמצעות ADO.NET
היכרות עם שפת התכנות JAVA
בעיות נוספות ב-NPC.
Shell Scripts בסביבת UNIX
Computer Programming תרגול 3 Summer 2016
Engineering Programming A
Presentation transcript:

© , ד"ר עמיר תומר מבוא להנדסת תוכנה קידוד ובדיקות יחידה - 1 קידוד ובדיקות יחידה Coding and Unit Testing (CUT) מקורות: S. R. Schach: Chapter 13 (14, in 5 th edition) R. S. Pressman: Chapter 17,22 ד. גלין ו-ז. בלובבנד, הבטחת איכות תוכנה, “אופוס”, 1995

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

© , ד"ר עמיר תומר מבוא להנדסת תוכנה קידוד ובדיקות יחידה - 3 מה עומד על הפרק? בחירת שפת התיכנותבחירת שפת התיכנות –משמעות הבחירה של שפת התכנות –משמעות השימוש במחוללי יישומים עקרונות לקידוד נכוןעקרונות לקידוד נכון בדיקות יחידהבדיקות יחידה –טכניקות לבדיקת מודולים –בדיקות מונחות-עצמים

© , ד"ר עמיר תומר מבוא להנדסת תוכנה קידוד ובדיקות יחידה - 4 שפות התכנות דורות של שפותדורות של שפות –דור ראשון: שפת מכונה –דור שני: אסמבלר –דור שלישי (3GL): שפות עליות - ++COBOL, FORTRAN, C –דור רביעי (4GL): מחוללי יישומים משפט בשפה עלית = 5-10 משפטי אסמבלי משפט במחולל יישומים = משפטי אסמבלי תבניות (paradigms)תבניות (paradigms) –תכנות פרוצדורלי: C, Pascal –תכנות מונחה עצמים: C++, Java –תכנות בסיסי-נתונים: SQL –תכנות לוגי: Prolog –תכנות פונקציונלי: LISP, ML

© , ד"ר עמיר תומר מבוא להנדסת תוכנה קידוד ובדיקות יחידה - 5 מחוללי יישומים הציפיות ממחולל-יישומיםהציפיות ממחולל-יישומים –בנייה מואצת של יישומים –עריכת קלה ומהירה של שינויים הקטנת הוצאות האחזקה –debugging פשוט –שפה ידידותית מובילה לתכנות-עצמי ע”י המשתמש הציפיות היו מתממשות, אילו מחוללי היישומים היוהציפיות היו מתממשות, אילו מחוללי היישומים היו – שפות גבוהות-מאד –ידידותיות למשתמש –לא-פרוצדורליות for every surveyor if rating is excellent add 6500 to salary

© , ד"ר עמיר תומר מבוא להנדסת תוכנה קידוד ובדיקות יחידה - 6 דוגמאות יצירה ושימוש במסד נתוניםיצירה ושימוש במסד נתונים –DB2 או Oracle –כולל שפה להגדרת שאילתות –משולב עם מערכת "רגילה" מייצר דו"חות Excelמייצר דו"חות Excel יצירת קוד אוטומטי מתיאור ב- UMLיצירת קוד אוטומטי מתיאור ב- UML –מבוסס על class diagrams –יוצר שלד: הכרזות וכותרות למטודות, בלי גוף המטודות

© , ד"ר עמיר תומר מבוא להנדסת תוכנה קידוד ובדיקות יחידה - 7 משמעות השימוש במחולל-יישומים בעיותבעיות –מחסור בשיטות תכן –מחסור בשיטות ניהול תמיכהתמיכה –אין אף מחולל-יישומים השולט בשוק –מספר גדול של מחוללי-יישומים (מאות) –חלקם הגדול נתמך בעיקר ע”י קבוצות משתמשים הסיבההסיבה –לאף מחולל-יישומים אין את כל התכונות הנדרשות נדרשת תשומת-לב רבה בבחירת מחולל-יישומים מתאים

© , ד"ר עמיר תומר מבוא להנדסת תוכנה קידוד ובדיקות יחידה - 8 עקרונות לקידוד נכון תוכנית מחשב נועדה לקריאה ע”י בני-אנושתוכנית מחשב נועדה לקריאה ע”י בני-אנוש –שמות שמות משמעותיים עקביות במתן שמות –מבנה עריכה חזותית של הקוד –כתיבה מדורגת (indented) –שורות ריקות מבנים ברורים וברי-עקיבה –מבני בקרה –מבני נתונים –הערות (comments) הבהרות של כל מה שלא מובן מאליו

© , ד"ר עמיר תומר מבוא להנדסת תוכנה קידוד ובדיקות יחידה - 9 שימוש נכון בשמות שמות משמעותייםשמות משמעותיים –קשר בין השם לבין מה שהוא מייצג שמות מלאים, אך ללא סירבול מיותרשמות מלאים, אך ללא סירבול מיותר The_DataBase_Capacity_Counter = The_DataBase_Capacity_Counter + 1; חד משמעיותחד משמעיות –מה מייצג המשתנה fstpt? first point? (first_point, frstpnt, point1) file start pointer? (file_start_ptr) fast prototype? (fastPT) שמירה על עקביותשמירה על עקביות –דוגמה גרועה: ייצוג המונח תדירות (frequency) באופנים שונים freqAverage, frequencyMaximum, minFr, frqncyTotl

© , ד"ר עמיר תומר מבוא להנדסת תוכנה קידוד ובדיקות יחידה - 10 משפטי תנאי ברורים if (latitude > 30 && longitude > 120) { if (latitude <= 60 && longitude <= 150) mapSquareNo = 1; else if (latitude <= 90 && longitude <= 150) mapSquareNo = 2; else System.out.println(“Not on the map”); } else System.out.println(“Not on the map”); if (longitude > 120) && longitude <= 150 && latitude > 30 && latitude <= 60) mapSquareNo = 1; else if (longitude > 120 & longitude <= 150 && latitude > 60 && latitude <= 90) mapSquareNo = 2; else System.out.println(“Not on the map”);

© , ד"ר עמיר תומר מבוא להנדסת תוכנה קידוד ובדיקות יחידה - 11 משפטי תנאי ברורים - עקרונות משפטי תנאי מקוננים - קשים לקריאהמשפטי תנאי מקוננים - קשים לקריאה –if-if –if-else-if בדרך כלל יש שקילות בין שני המבנים:בדרך כלל יש שקילות בין שני המבנים: if if && כלל אצבע:כלל אצבע: –יש להמנע ממשפטי תנאי מקוננים בעומק של יותר מ-3 רמות.

© , ד"ר עמיר תומר מבוא להנדסת תוכנה קידוד ובדיקות יחידה - 12 נוהלי תכנות יכולים להיות ברכה, או קללהיכולים להיות ברכה, או קללה דוגמה:דוגמה: –“כל מודול יכיל 35 עד 50 משפטי ביצוע” עלול לגרום לפיצול מלאכותי ולכפילויות ניסוח עדיף:ניסוח עדיף: –“התכנת יוועץ במוביל התוכנה לפני יצירת מודול בן פחות מ-35 או יותר מ-50 משפטי ביצוע” אין נהלים יישימים באופן גורף!

© , ד"ר עמיר תומר מבוא להנדסת תוכנה קידוד ובדיקות יחידה - 13 הערות נוספות לגבי נהלי תכנות יכולים לעזור בניתוח אוטומטי של הקוד: זיהוי insertיכולים לעזור בניתוח אוטומטי של הקוד: זיהוי insert הנהלים צריכים להיות ניתנים לבדיקה באופן אוטומטיהנהלים צריכים להיות ניתנים לבדיקה באופן אוטומטי דוגמאות לנהלים “טובים”דוגמאות לנהלים “טובים” –משפטי if לא יקוננו לעומק של יותר מ-3, אלא באישור מוביל התוכנה –מודולים יכילו משפטי ביצוע, פרט לאישור מוקדם של מוביל התוכנה. –יש להמנע משימוש ב-goto. למרות זאת ניתן להשתמש, באישור מוביל התוכנה, ב-goto קדימה, לצורך טיפול בשגיאות. מטרת הנהלים - להקל על אחזקת התוכנה ולהגביר אחידותמטרת הנהלים - להקל על אחזקת התוכנה ולהגביר אחידות –אם הם מקשים על הפיתוח - יש לשנותם, ויש לאפשר חריגות לפעמים –האחידות משפרת את הטיפול בשינויים אסור שנוכל לזהות "זה הקוד של יוסי..." מסגנון הכתיבהאסור שנוכל לזהות "זה הקוד של יוסי..." מסגנון הכתיבה

© , ד"ר עמיר תומר מבוא להנדסת תוכנה קידוד ובדיקות יחידה - 14 הערות בגוף הקוד (comments) כותרת המודול תכיל, לפחות, את המידע הבא:כותרת המודול תכיל, לפחות, את המידע הבא: –שם המודול –תאור קצר - מה המודול עושה –שם התכנת –תאריך יצירה –תאריך ושם המאשר –תאור הפרמטרים –משתנים ותפקידיהם - בסדר א”ב –קבצים בשימוש המודול (קריאה, עדכון) –קלט / פלט –טיפול בשגיאות –שם קובץ נתוני בדיקות (עבור regression testing) –רשימת שינויים: מהות, כותב, תאריך –באגים ידועים

© , ד"ר עמיר תומר מבוא להנדסת תוכנה קידוד ובדיקות יחידה - 15 עוד על הערות בגוף הקוד... מתי להוסיף הערהמתי להוסיף הערה –כאשר הקוד לא קריא מאליו אין קוד כזה –דקויות ההבנה הקיימות בזמן הכתיבה, לא יהיו מובנות מאליהן בשלבים מאוחרים יותר, או ע”י אנשים אחרים! –כאשר הקוד “מתוחכם” או לא שגרתי הערות לא נועדו לשם...הערות לא נועדו לשם... –קידוד-מחדש בשפה אחרת X = X+1; /* add 1 to X */ –חיפוי על קידוד גרוע XBZ132 = G5_A3*BBZZZ; /* compute rectangle area */

© , ד"ר עמיר תומר מבוא להנדסת תוכנה קידוד ובדיקות יחידה - 16 על שילוב תנאים מהמפרט Checker = מטודה\נוהל לבדיקת תנאי לוגי של מצב המערכתChecker = מטודה\נוהל לבדיקת תנאי לוגי של מצב המערכת התגובה לאי-קיום התנאי: בהתאם לשפת התיכנות ולהחלטת תיכנוןהתגובה לאי-קיום התנאי: בהתאם לשפת התיכנות ולהחלטת תיכנון –לרשום ב-log –לזרוק exception –לחזור עם דגל מיוחד –לעצור את הביצוע, עם הודעה מיוחדת לפעמים מופעל רק בשלב debuggingלפעמים מופעל רק בשלב debugging לפעמים נשאר במוצר המוגמר: %10 מהקודלפעמים נשאר במוצר המוגמר: %10 מהקוד

© , ד"ר עמיר תומר מבוא להנדסת תוכנה קידוד ובדיקות יחידה - 17 סוגי התנאים Preconditions : קריאה ל-checker בתחילת המטודה (ולא "מבחוץ" לפני הקריאה)Preconditions : קריאה ל-checker בתחילת המטודה (ולא "מבחוץ" לפני הקריאה) Postconditions : קריאה ל-checker בסוף המטודה (ולרוב מוצא מהקוד הנמסר ללקוח)Postconditions : קריאה ל-checker בסוף המטודה (ולרוב מוצא מהקוד הנמסר ללקוח) שמורה למחלקה: ה-checker מופעל לפני ואחרי כל מטודה במחלקהשמורה למחלקה: ה-checker מופעל לפני ואחרי כל מטודה במחלקה נטייה חדשה: להשאיר הרבה checkers לצורך אבחנה מרחוק ותיחזוקנטייה חדשה: להשאיר הרבה checkers לצורך אבחנה מרחוק ותיחזוק לפעמים יש פקודות assert משולבות במטודותלפעמים יש פקודות assert משולבות במטודות

© , ד"ר עמיר תומר מבוא להנדסת תוכנה קידוד ובדיקות יחידה - 18 טכניקות לבדיקת מודולים קופסה לבנה (white box, glass box)קופסה לבנה (white box, glass box) –בחינת המבנה הפנימי של המודול מסלולי החישוב נכונות החישובים נכונות ההחלטות הלוגיות קופסה שחורה (black box)קופסה שחורה (black box) –בחינת התפקוד של המודול בתוך המערכת נכונות הפלט מהירות התגובה נתוני בחינה (test data)נתוני בחינה (test data) –קבצי נתונים לבדיקת המקרים השונים

© , ד"ר עמיר תומר מבוא להנדסת תוכנה קידוד ובדיקות יחידה - 19 האם ניתן לבדוק את כל המקרים? “התפוצצות קומבינטורית”“התפוצצות קומבינטורית” –בתרשים זרימה זה יש מסלולים שונים! loop <= 18 times

© , ד"ר עמיר תומר מבוא להנדסת תוכנה קידוד ובדיקות יחידה - 20 סוגי כיסוי: מה רוצים לבדוק? כל הפקודות (all instructions)כל הפקודות (all instructions) –בעיה: אם יש מספר דרכים לסיים if או do, לא כל המסלולים יבדקו כל ההתפצלויות (all branches) בכל כיווןכל ההתפצלויות (all branches) בכל כיוון –שונה מ"כל הפקודות" כשיש if בלי else כל קטע קוד בלי התפצלויות (basic block)כל קטע קוד בלי התפצלויות (basic block) כל מסלול מהגדרת ערך לשימוש בערך (definition-use paths)כל מסלול מהגדרת ערך לשימוש בערך (definition-use paths) מסלולי בסיס (נראה בהמשך)מסלולי בסיס (נראה בהמשך) לקבוע: איזה סוג כיסוי, איך נבנה את הבדיקותלקבוע: איזה סוג כיסוי, איך נבנה את הבדיקות

© , ד"ר עמיר תומר מבוא להנדסת תוכנה קידוד ובדיקות יחידה - 21 בדיקת מסלולי-בסיס (Base Path testing) שיטה קלאסית לבדיקת “קופסה לבנה”שיטה קלאסית לבדיקת “קופסה לבנה” בניית גרף זרימה (flow graph) של המודולבניית גרף זרימה (flow graph) של המודול –צומת - יחידת חישוב ללא הסתעפות –קשת - הסתעפות בחישוב מסלול בלתי-תלוימסלול בלתי-תלוי –מסלול מהתחלה לסיום, הכולל לפחות צומת אחד חדש, לעומת מסלולים אחרים מדד לסיבוכיות הבדיקה (Cyclomatic Complexity)מדד לסיבוכיות הבדיקה (Cyclomatic Complexity) –המספר המקסימלי של מסלולים בלתי תלויים V(G) = E - N + 2 (E = קשתות, N = צמתים) (McCabe, 1976)

© , ד"ר עמיר תומר מבוא להנדסת תוכנה קידוד ובדיקות יחידה - 22 בדיקת מסלולי-בסיס - דוגמה 1: do while records remain read record; 2: if record field 1 = 0 3: then process record; store in buffer; increment counter; 4: elseif record field 2 = 0 5: then reset counter; 6: else process record; store in file; 7a: endif endif 7b: enddo 8: end a7a 7b7b 8 a procedure in PDL flow graph path 1: path 2: b path 3: a - 7b path 4: a - 7b base paths

© , ד"ר עמיר תומר מבוא להנדסת תוכנה קידוד ובדיקות יחידה - 23 ביצוע סימבולי ליצירת התנאי למעבר במסלול חישוב נגדיר ביטוי השווה לערך של כל משתנה במונחים של ערכי המשתנים בתחילת המסלולנגדיר ביטוי השווה לערך של כל משתנה במונחים של ערכי המשתנים בתחילת המסלול נעבור על פקודות המסלול לפי הסדר, ונחשב את הביטויים בכל מקום במסלולנעבור על פקודות המסלול לפי הסדר, ונחשב את הביטויים בכל מקום במסלול נשתמש בביטויים הצמודים להופעת בדיקת תנאי כדי לרשום את התנאים למעבר במסלול, במונחים של הערכים בתחילת המסלולנשתמש בביטויים הצמודים להופעת בדיקת תנאי כדי לרשום את התנאים למעבר במסלול, במונחים של הערכים בתחילת המסלול נשתמש בפותר אי-שוויונות למצוא ערכי בדיקהנשתמש בפותר אי-שוויונות למצוא ערכי בדיקה

© , ד"ר עמיר תומר מבוא להנדסת תוכנה קידוד ובדיקות יחידה - 24 דוגמה לביצוע סימבולי Read (x, y, z) ; (X, Y, Z)Read (x, y, z) ; (X, Y, Z) x = x + 2 y ; (X + 2 Y, Y, Z)x = x + 2 y ; (X + 2 Y, Y, Z) z = x + y ; ?z = x + y ; ? y = 2 x – z; ?y = 2 x – z; ? if ( 2 z > 10) { y = 1};if ( 2 z > 10) { y = 1}; if ( x = y) { x = y + z};if ( x = y) { x = y + z}; Write(x, y, z);Write(x, y, z); ניתן לחשב תוצאות החישוב, לסדרות בלי לולאות או קריאות חיצוניותניתן לחשב תוצאות החישוב, לסדרות בלי לולאות או קריאות חיצוניות

© , ד"ר עמיר תומר מבוא להנדסת תוכנה קידוד ובדיקות יחידה - 25 כלים ליצירת הבדיקות בניית גרף מהקודבניית גרף מהקוד ניתוח הגרף ע"י אלגוריתמים מתורת הגרפיםניתוח הגרף ע"י אלגוריתמים מתורת הגרפים חישוב תנאי לערכי משתני המצב בתחילת מסלול שיבטיח ביצוע שיעבור דרך המסלולחישוב תנאי לערכי משתני המצב בתחילת מסלול שיבטיח ביצוע שיעבור דרך המסלול פותר לאוסף של אי-שוויונותפותר לאוסף של אי-שוויונות שימוש ב-dataflow לזהות מסלולי def-useשימוש ב-dataflow לזהות מסלולי def-use קיימים כלים COTS להגדרת מקרי בדיקה ובדיקת כיסויקיימים כלים COTS להגדרת מקרי בדיקה ובדיקת כיסוי

© , ד"ר עמיר תומר מבוא להנדסת תוכנה קידוד ובדיקות יחידה - 26 בדיקות למערכת מונחית-עצמים על פיעל פי The Unified Software Development Process אמצעי הגדרת הבדיקותאמצעי הגדרת הבדיקות –מקרה בדיקה (test cases) –שגרות בדיקה (test procedures) –רכיבי בדיקה (test components)

© , ד"ר עמיר תומר מבוא להנדסת תוכנה קידוד ובדיקות יחידה - 27 Test Case הגדרת דרך אחת לבדיקת המערכתהגדרת דרך אחת לבדיקת המערכת –מה בודקים עם כל קלט / פלט? קבוצת דרישות אשר יישומן מצדיק בדיקה –הבדיקה אפשרית –בהשקעה סבירה –באילו תנאים בודקים? –נוצר לבדוק דרישה או תרחיש מ-use-case –נוצר לבדוק מעבר במסלול חישוב כמימוש תרחיש

© , ד"ר עמיר תומר מבוא להנדסת תוכנה קידוד ובדיקות יחידה - 28 שגרות בדיקה test procedures הוראות מפורטות לביצוע בדיקותהוראות מפורטות לביצוע בדיקות –test case אחד –כמה test cases –חלקים של test cases אפשרות “מיחזור”אפשרות “מיחזור” –ניתן להשתמש באותו test procedures עבור test cases שונים הוראות מפורטות למפעילהוראות מפורטות למפעיל –הפעלה ידנית –הפעלה / שילוב של אמצעי בדיקה אוטומטיים

© , ד"ר עמיר תומר מבוא להנדסת תוכנה קידוד ובדיקות יחידה - 29 רכיבי בדיקה test components רכיב תוכנה לביצוע אוטומטי של שגרת בדיקהרכיב תוכנה לביצוע אוטומטי של שגרת בדיקה –תכנית בשפת תכנות –script –בדיקה “מוקלטת” באמצעי בדיקה אוטומטי משולב בביצועמשולב בביצוע –מייצר קלט –בקרה ומעקב אחר הביצוע של הרכיב הנבדק –דיווח / בחינה של התוצאות לשימוש חוזר אחרי שינויים: regression testלשימוש חוזר אחרי שינויים: regression test

© , ד"ר עמיר תומר מבוא להנדסת תוכנה קידוד ובדיקות יחידה - 30 כלי לארגון בדיקות: JUnit לבדיקות יחידה ב-Javaלבדיקות יחידה ב-Java במקור, בשימוש ל-XP, היום לשימוש כלליבמקור, בשימוש ל-XP, היום לשימוש כללי חבילה עם מחלקות Java שהמשתמש מרחיב לסביבת בדיקה אוטומטיתחבילה עם מחלקות Java שהמשתמש מרחיב לסביבת בדיקה אוטומטית כל בדיקה: אוביקטכל בדיקה: אוביקט "מריץ בדיקות" מפעיל את הבדיקות, ומסכם תוצאות"מריץ בדיקות" מפעיל את הבדיקות, ומסכם תוצאות מעודד בדיקות חוזרות לאחר שינויים (regression testing)מעודד בדיקות חוזרות לאחר שינויים (regression testing)

© , ד"ר עמיר תומר מבוא להנדסת תוכנה קידוד ובדיקות יחידה - 31 גישות חדשות לבדיקת תוכנה בדיקות מונחות מודלים (model-based testing)בדיקות מונחות מודלים (model-based testing) –בודק אם המימוש מתאים לדיאגרמת מצבים –מכיל בדיקות שליליות, למעברים שאינם במודל בדיקת מודלים לתוכנה (software model checking)בדיקת מודלים לתוכנה (software model checking) –ניתוח הקוד כדי להוכיח שלכל ריצה אפשרית, מתקיימות התכונות הנחוצות מהדרישות –בשימוש לפרוטוקולים ולתוכנה חיונית (safety critical)

© , ד"ר עמיר תומר מבוא להנדסת תוכנה קידוד ובדיקות יחידה - 32 אז מה היה לנו...? 4בחירת שפת התיכנות 4משמעות הבחירה של שפת התכנות 4משמעות השימוש במחוללי יישומים 4עקרונות לקידוד נכון 4בדיקות יחידה 4טכניקות לבדיקת מודולים 4בדיקות מונחות-עצמים

© , ד"ר עמיר תומר מבוא להנדסת תוכנה קידוד ובדיקות יחידה - 33 וכעת נעבור ל... אספקטים