33
© 1999-2001, י"י ייי י יייי יייי יייייי ייייי- ייייי ייייייי ייייי1 ההההה ההההההה ההההה ההההה ההההההה הההההCoding and Unit Testing Coding and Unit Testing (CUT) (CUT) יייייי יייייי: : S. R. Schach: Chapter 13 (14, in 5 S. R. Schach: Chapter 13 (14, in 5 th th edition) edition) R. S. Pressman: Chapter 17,22 R. S. Pressman: Chapter 17,22 י. ייייייי,- י. יייי יי. ייייייי,- י. יייי י ההההה ההההה ההההה ההההה ההההה ההההה, , “ייייי”, “ייייי”,1995 1995

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

  • View
    233

  • Download
    3

Embed Size (px)

Citation preview

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

© 1

999-

2001

, מ

תור

מיע

ר ד"

ר

1 קידוד ובדיקות יחידה - מבוא להנדסת תוכנה

קידוד ובדיקות יחידהקידוד ובדיקות יחידהCoding and Unit Testing (CUT)Coding and Unit Testing (CUT)

::מקורותמקורות

S. R. Schach: Chapter 13 (14, in 5S. R. Schach: Chapter 13 (14, in 5thth edition) edition)

R. S. Pressman: Chapter 17,22R. S. Pressman: Chapter 17,22

19951995, “אופוס”, , “אופוס”, הבטחת איכות תוכנההבטחת איכות תוכנהד. גלין ו-ז. בלובבנד, ד. גלין ו-ז. בלובבנד,

Page 2: © 1999-2001, ד"ר עמיר תומר מבוא להנדסת תוכנה קידוד ובדיקות יחידה - 1 קידוד ובדיקות יחידה Coding and Unit Testing (CUT) מקורות:

© 1

999-

2001

, מ

תור

מיע

ר ד"

ר

2 קידוד ובדיקות יחידה - מבוא להנדסת תוכנה

שיטות בהנדסת תוכנה - תוכנית שיטות בהנדסת תוכנה - תוכנית הקורסהקורס

מבואמבוא

מודלים של מחזור חיי תוכנהמודלים של מחזור חיי תוכנה

הגדרת דרישות וניהולןהגדרת דרישות וניהולן

ניתוח קלאסיניתוח קלאסי

ניתוח מונחה-עצמיםניתוח מונחה-עצמים

תכןתכן

אימות ותקפותאימות ותקפות

קידוד ובדיקות יחידהקידוד ובדיקות יחידה

מימוש ושילובמימוש ושילוב

אחזקה והנדסה מחדשאחזקה והנדסה מחדש

הבטחת איכות תוכנההבטחת איכות תוכנה

Page 3: © 1999-2001, ד"ר עמיר תומר מבוא להנדסת תוכנה קידוד ובדיקות יחידה - 1 קידוד ובדיקות יחידה Coding and Unit Testing (CUT) מקורות:

© 1

999-

2001

, מ

תור

מיע

ר ד"

ר

3 קידוד ובדיקות יחידה - מבוא להנדסת תוכנה

מה עומד על הפרק?מה עומד על הפרק?בחירת שפת התיכנותבחירת שפת התיכנות•

משמעות הבחירה של שפת התכנות–משמעות השימוש במחוללי יישומים–

עקרונות לקידוד נכוןעקרונות לקידוד נכון•בדיקות יחידהבדיקות יחידה•

טכניקות לבדיקת מודולים–בדיקות מונחות-עצמים–

Page 4: © 1999-2001, ד"ר עמיר תומר מבוא להנדסת תוכנה קידוד ובדיקות יחידה - 1 קידוד ובדיקות יחידה Coding and Unit Testing (CUT) מקורות:

© 1

999-

2001

, מ

תור

מיע

ר ד"

ר

4 קידוד ובדיקות יחידה - מבוא להנדסת תוכנה

שפות התכנותשפות התכנותדורות של שפותדורות של שפות•

דור ראשון: שפת מכונה–דור שני: אסמבלר– ,COBOL, FORTRAN++): שפות עליות - 3GLדור שלישי (–

C

): מחוללי יישומים4GLדור רביעי (–משפט בשפה עלית =

משפטי אסמבלי5-10

משפט במחולל יישומים =

משפטי אסמבלי30-50

))paradigmsparadigmsתבניות (תבניות (•C, Pascalתכנות פרוצדורלי: –C++, Javaתכנות מונחה עצמים: –SQLתכנות בסיסי-נתונים: –Prologתכנות לוגי: –LISP, MLתכנות פונקציונלי: –

Page 5: © 1999-2001, ד"ר עמיר תומר מבוא להנדסת תוכנה קידוד ובדיקות יחידה - 1 קידוד ובדיקות יחידה Coding and Unit Testing (CUT) מקורות:

© 1

999-

2001

, מ

תור

מיע

ר ד"

ר

5 קידוד ובדיקות יחידה - מבוא להנדסת תוכנה

מחוללי יישומיםמחוללי יישומיםהציפיות ממחולל-יישומיםהציפיות ממחולל-יישומים•

בנייה מואצת של יישומים–עריכת קלה ומהירה של שינויים –

הקטנת הוצאות האחזקה•

–debuggingפשוט שפה ידידותית–

מובילה לתכנות-עצמי ע”י המשתמש•

הציפיות היו מתממשות, אילו מחוללי היישומים היוהציפיות היו מתממשות, אילו מחוללי היישומים היו• שפות גבוהות-מאד–ידידותיות למשתמש–לא-פרוצדורליות–

for every surveyor

if rating is excellent

add 6500 to salary

Page 6: © 1999-2001, ד"ר עמיר תומר מבוא להנדסת תוכנה קידוד ובדיקות יחידה - 1 קידוד ובדיקות יחידה Coding and Unit Testing (CUT) מקורות:

© 1

999-

2001

, מ

תור

מיע

ר ד"

ר

6 קידוד ובדיקות יחידה - מבוא להנדסת תוכנה

דוגמאותדוגמאות

יצירה ושימוש במסד נתוניםיצירה ושימוש במסד נתונים•–DB2 או Oracle כולל שפה להגדרת שאילתות–משולב עם מערכת "רגילה"–

ExcelExcelמייצר דו"חות מייצר דו"חות •

UMLUMLיצירת קוד אוטומטי מתיאור ב- יצירת קוד אוטומטי מתיאור ב- • class diagramsמבוסס על –יוצר שלד: הכרזות וכותרות למטודות, בלי גוף –

המטודות

Page 7: © 1999-2001, ד"ר עמיר תומר מבוא להנדסת תוכנה קידוד ובדיקות יחידה - 1 קידוד ובדיקות יחידה Coding and Unit Testing (CUT) מקורות:

© 1

999-

2001

, מ

תור

מיע

ר ד"

ר

7 קידוד ובדיקות יחידה - מבוא להנדסת תוכנה

משמעות השימוש במחולל-יישומיםמשמעות השימוש במחולל-יישומיםבעיותבעיות•

מחסור בשיטות תכן–מחסור בשיטות ניהול–

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

הסיבההסיבה•לאף מחולל-יישומים אין את כל התכונות הנדרשות–

נדרשת תשומת-לב רבה

בבחירת מחולל-יישומים

מתאים

Page 8: © 1999-2001, ד"ר עמיר תומר מבוא להנדסת תוכנה קידוד ובדיקות יחידה - 1 קידוד ובדיקות יחידה Coding and Unit Testing (CUT) מקורות:

© 1

999-

2001

, מ

תור

מיע

ר ד"

ר

8 קידוד ובדיקות יחידה - מבוא להנדסת תוכנה

עקרונות לקידוד נכוןעקרונות לקידוד נכוןתוכנית מחשב נועדה לקריאה ע”י בני-אנושתוכנית מחשב נועדה לקריאה ע”י בני-אנוש•

שמות–שמות משמעותיים•עקביות במתן שמות•

מבנה–עריכה חזותית של הקוד•

)indentedכתיבה מדורגת (–

שורות ריקות–

מבנים ברורים וברי-עקיבה•מבני בקרה–

מבני נתונים–

)commentsהערות (–הבהרות של כל מה שלא מובן מאליו•

Page 9: © 1999-2001, ד"ר עמיר תומר מבוא להנדסת תוכנה קידוד ובדיקות יחידה - 1 קידוד ובדיקות יחידה Coding and Unit Testing (CUT) מקורות:

© 1

999-

2001

, מ

תור

מיע

ר ד"

ר

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

Page 10: © 1999-2001, ד"ר עמיר תומר מבוא להנדסת תוכנה קידוד ובדיקות יחידה - 1 קידוד ובדיקות יחידה Coding and Unit Testing (CUT) מקורות:

© 1

999-

2001

, מ

תור

מיע

ר ד"

ר

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”);

Page 11: © 1999-2001, ד"ר עמיר תומר מבוא להנדסת תוכנה קידוד ובדיקות יחידה - 1 קידוד ובדיקות יחידה Coding and Unit Testing (CUT) מקורות:

© 1

999-

2001

, מ

תור

מיע

ר ד"

ר

11 קידוד ובדיקות יחידה - מבוא להנדסת תוכנה

משפטי תנאי ברורים - עקרונותמשפטי תנאי ברורים - עקרונותמשפטי תנאי מקוננים - קשים לקריאהמשפטי תנאי מקוננים - קשים לקריאה•

–if-if–if-else-if

בדרך כלל יש שקילות בין שני המבנים:בדרך כלל יש שקילות בין שני המבנים:•if <condition1>

if <condition2>

if <condition1> && <condition2>

כלל אצבע:כלל אצבע:•יש להמנע ממשפטי תנאי מקוננים בעומק של –

רמות.3יותר מ-

Page 12: © 1999-2001, ד"ר עמיר תומר מבוא להנדסת תוכנה קידוד ובדיקות יחידה - 1 קידוד ובדיקות יחידה Coding and Unit Testing (CUT) מקורות:

© 1

999-

2001

, מ

תור

מיע

ר ד"

ר

12 קידוד ובדיקות יחידה - מבוא להנדסת תוכנה

נוהלי תכנותנוהלי תכנותיכולים להיות ברכה, או קללהיכולים להיות ברכה, או קללה•

דוגמה:דוגמה:• משפטי ביצוע”50 עד 35“כל מודול יכיל –

עלול לגרום לפיצול מלאכותי ולכפילויות•

ניסוח עדיף:ניסוח עדיף:•“התכנת יוועץ במוביל התוכנה לפני יצירת מודול –

משפטי ביצוע”50 או יותר מ-35בן פחות מ-

אין נהלים יישימים

באופן גורף!

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

© 1

999-

2001

, מ

תור

מיע

ר ד"

ר

13 קידוד ובדיקות יחידה - מבוא להנדסת תוכנה

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

, אלא באישור מוביל התוכנה3 לא יקוננו לעומק של יותר מ-ifמשפטי – משפטי ביצוע, פרט לאישור מוקדם של מוביל 35-50מודולים יכילו –

התוכנה.. למרות זאת ניתן להשתמש, באישור מוביל gotoיש להמנע משימוש ב-–

קדימה, לצורך טיפול בשגיאות.gotoהתוכנה, ב-

ולהגביר אחידות ולהגביר אחידות מטרת הנהלים - להקל על אחזקת התוכנהמטרת הנהלים - להקל על אחזקת התוכנה•אם הם מקשים על הפיתוח - יש לשנותם, ויש לאפשר חריגות לפעמים–האחידות משפרת את הטיפול בשינויים–

אסור שנוכל לזהות "זה הקוד של יוסי..." מסגנון הכתיבהאסור שנוכל לזהות "זה הקוד של יוסי..." מסגנון הכתיבה•

Page 14: © 1999-2001, ד"ר עמיר תומר מבוא להנדסת תוכנה קידוד ובדיקות יחידה - 1 קידוד ובדיקות יחידה Coding and Unit Testing (CUT) מקורות:

© 1

999-

2001

, מ

תור

מיע

ר ד"

ר

14 קידוד ובדיקות יחידה - מבוא להנדסת תוכנה

))commentscommentsהערות בגוף הקוד (הערות בגוף הקוד (כותרת המודול תכיל, לפחות, את המידע הבא:כותרת המודול תכיל, לפחות, את המידע הבא:•

שם המודול–

תאור קצר - מה המודול עושה–

שם התכנת–

תאריך יצירה–

תאריך ושם המאשר–

תאור הפרמטרים–

משתנים ותפקידיהם - בסדר א”ב–

קבצים בשימוש המודול (קריאה, עדכון)–

קלט / פלט–

טיפול בשגיאות–

)regression testingשם קובץ נתוני בדיקות (עבור –

רשימת שינויים: מהות, כותב, תאריך–

באגים ידועים–

Page 15: © 1999-2001, ד"ר עמיר תומר מבוא להנדסת תוכנה קידוד ובדיקות יחידה - 1 קידוד ובדיקות יחידה Coding and Unit Testing (CUT) מקורות:

© 1

999-

2001

, מ

תור

מיע

ר ד"

ר

15 קידוד ובדיקות יחידה - מבוא להנדסת תוכנה

עוד על הערות בגוף הקוד...עוד על הערות בגוף הקוד...מתי להוסיף הערהמתי להוסיף הערה•

כאשר הקוד לא קריא מאליו–אין קוד כזה•

דקויות ההבנה הקיימות בזמן הכתיבה, לא יהיו מובנות –מאליהן בשלבים מאוחרים יותר, או ע”י אנשים אחרים!

כאשר הקוד “מתוחכם” או לא שגרתי–

הערות לא נועדו לשם...הערות לא נועדו לשם...•קידוד-מחדש בשפה אחרת–

X = X+1; /* add 1 to X */

חיפוי על קידוד גרוע–XBZ132 = G5_A3*BBZZZ; /* compute rectangle area */

Page 16: © 1999-2001, ד"ר עמיר תומר מבוא להנדסת תוכנה קידוד ובדיקות יחידה - 1 קידוד ובדיקות יחידה Coding and Unit Testing (CUT) מקורות:

© 1

999-

2001

, מ

תור

מיע

ר ד"

ר

16 קידוד ובדיקות יחידה - מבוא להנדסת תוכנה

על שילוב תנאים מהמפרטעל שילוב תנאים מהמפרט•CheckerChecker מטודה\נוהל לבדיקת תנאי לוגי = מטודה\נוהל לבדיקת תנאי לוגי =

של מצב המערכתשל מצב המערכתהתגובה לאי-קיום התנאי: בהתאם לשפת התגובה לאי-קיום התנאי: בהתאם לשפת •

התיכנות ולהחלטת תיכנוןהתיכנות ולהחלטת תיכנון logלרשום ב-– exceptionלזרוק –לחזור עם דגל מיוחד–לעצור את הביצוע, עם הודעה מיוחדת–

debuggingdebuggingלפעמים מופעל רק בשלב לפעמים מופעל רק בשלב • מהקוד מהקוד%10%10לפעמים נשאר במוצר המוגמר: לפעמים נשאר במוצר המוגמר: •

Page 17: © 1999-2001, ד"ר עמיר תומר מבוא להנדסת תוכנה קידוד ובדיקות יחידה - 1 קידוד ובדיקות יחידה Coding and Unit Testing (CUT) מקורות:

© 1

999-

2001

, מ

תור

מיע

ר ד"

ר

17 קידוד ובדיקות יחידה - מבוא להנדסת תוכנה

סוגי התנאיםסוגי התנאים•PreconditionsPreconditions -קריאה ל- : קריאה ל : checkerchecker בתחילת בתחילת

המטודה (ולא "מבחוץ" לפני הקריאה)המטודה (ולא "מבחוץ" לפני הקריאה)

•PostconditionsPostconditions-קריאה ל- : קריאה ל : checkerchecker בסוף בסוף המטודה (ולרוב מוצא מהקוד הנמסר ללקוח)המטודה (ולרוב מוצא מהקוד הנמסר ללקוח)

מופעל לפני מופעל לפני checkercheckerשמורה למחלקה: ה-שמורה למחלקה: ה-•ואחרי כל מטודה במחלקהואחרי כל מטודה במחלקה

checkerscheckersנטייה חדשה: להשאיר הרבה נטייה חדשה: להשאיר הרבה •לצורך אבחנה מרחוק ותיחזוקלצורך אבחנה מרחוק ותיחזוק

משולבות משולבות assertassertלפעמים יש פקודות לפעמים יש פקודות •במטודותבמטודות

Page 18: © 1999-2001, ד"ר עמיר תומר מבוא להנדסת תוכנה קידוד ובדיקות יחידה - 1 קידוד ובדיקות יחידה Coding and Unit Testing (CUT) מקורות:

© 1

999-

2001

, מ

תור

מיע

ר ד"

ר

18 קידוד ובדיקות יחידה - מבוא להנדסת תוכנה

טכניקות לבדיקת מודוליםטכניקות לבדיקת מודולים))white box, glass boxwhite box, glass boxקופסה לבנה (קופסה לבנה (•

בחינת המבנה הפנימי של המודול–מסלולי החישוב•נכונות החישובים•נכונות ההחלטות הלוגיות•

))black boxblack boxקופסה שחורה (קופסה שחורה (•בחינת התפקוד של המודול בתוך המערכת–

נכונות הפלט•מהירות התגובה•

))test datatest dataנתוני בחינה (נתוני בחינה (•קבצי נתונים לבדיקת המקרים השונים–

Page 19: © 1999-2001, ד"ר עמיר תומר מבוא להנדסת תוכנה קידוד ובדיקות יחידה - 1 קידוד ובדיקות יחידה Coding and Unit Testing (CUT) מקורות:

© 1

999-

2001

, מ

תור

מיע

ר ד"

ר

19 קידוד ובדיקות יחידה - מבוא להנדסת תוכנה

האם ניתן לבדוק את כל המקרים?האם ניתן לבדוק את כל המקרים?“התפוצצות קומבינטורית”“התפוצצות קומבינטורית”•

מסלולים שונים!1012בתרשים זרימה זה יש –

loop <= 18times

Page 20: © 1999-2001, ד"ר עמיר תומר מבוא להנדסת תוכנה קידוד ובדיקות יחידה - 1 קידוד ובדיקות יחידה Coding and Unit Testing (CUT) מקורות:

© 1

999-

2001

, מ

תור

מיע

ר ד"

ר

20 קידוד ובדיקות יחידה - מבוא להנדסת תוכנה

סוגי כיסוי: מה רוצים לבדוק?סוגי כיסוי: מה רוצים לבדוק?))all instructionsall instructions(( כל הפקודותכל הפקודות•

, לא do או ifבעיה: אם יש מספר דרכים לסיים –כל המסלולים יבדקו

בכל כיוון בכל כיוון))all branchesall branches((כל ההתפצלויות כל ההתפצלויות • else בלי ifשונה מ"כל הפקודות" כשיש –

))basic blockbasic block((כל קטע קוד בלי התפצלויות כל קטע קוד בלי התפצלויות •כל מסלול מהגדרת ערך לשימוש בערך כל מסלול מהגדרת ערך לשימוש בערך •

))definition-use pathsdefinition-use paths((מסלולי בסיס (נראה בהמשך) מסלולי בסיס (נראה בהמשך) •לקבוע: איזה סוג כיסוי, איך נבנה את לקבוע: איזה סוג כיסוי, איך נבנה את •

הבדיקותהבדיקות

Page 21: © 1999-2001, ד"ר עמיר תומר מבוא להנדסת תוכנה קידוד ובדיקות יחידה - 1 קידוד ובדיקות יחידה Coding and Unit Testing (CUT) מקורות:

© 1

999-

2001

, מ

תור

מיע

ר ד"

ר

21 קידוד ובדיקות יחידה - מבוא להנדסת תוכנה

))Base Path testingBase Path testingבדיקת מסלולי-בסיס (בדיקת מסלולי-בסיס (

שיטה קלאסית לבדיקת “קופסה לבנה”שיטה קלאסית לבדיקת “קופסה לבנה”•) של המודול) של המודולflow graphflow graphבניית גרף זרימה (בניית גרף זרימה (•

צומת - יחידת חישוב ללא הסתעפות–קשת - הסתעפות בחישוב–

מסלול בלתי-תלוימסלול בלתי-תלוי•מסלול מהתחלה לסיום, הכולל לפחות צומת –

אחד חדש, לעומת מסלולים אחרים

))Cyclomatic ComplexityCyclomatic Complexity((מדד לסיבוכיות הבדיקה מדד לסיבוכיות הבדיקה •

המספר המקסימלי של מסלולים בלתי תלויים–V(G) = E - N + 2 (E = קשתות , N = צמתים)

(McCabe, 1976)(McCabe, 1976)

Page 22: © 1999-2001, ד"ר עמיר תומר מבוא להנדסת תוכנה קידוד ובדיקות יחידה - 1 קידוד ובדיקות יחידה Coding and Unit Testing (CUT) מקורות:

© 1

999-

2001

, מ

תור

מיע

ר ד"

ר

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

1

2

34

6 5

7a

7b

8

a procedure in PDL flow graph

path 1: 1 - 8path 2: 1 - 2 - 3 - 7b - 1 - 8path 3: 1 - 2 - 4 - 5 - 7a - 7b - 1 - 8path 4: 1 - 2 - 4 - 6 - 7a - 7b - 1 - 8

base paths

Page 23: © 1999-2001, ד"ר עמיר תומר מבוא להנדסת תוכנה קידוד ובדיקות יחידה - 1 קידוד ובדיקות יחידה Coding and Unit Testing (CUT) מקורות:

© 1

999-

2001

, מ

תור

מיע

ר ד"

ר

23 קידוד ובדיקות יחידה - מבוא להנדסת תוכנה

ביצוע סימבולי ליצירת התנאי למעבר ביצוע סימבולי ליצירת התנאי למעבר במסלול חישובבמסלול חישוב

נגדיר ביטוי השווה לערך של כל משתנה נגדיר ביטוי השווה לערך של כל משתנה •במונחים של ערכי המשתנים בתחילת המסלולבמונחים של ערכי המשתנים בתחילת המסלול

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

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

במונחים של הערכים בתחילת המסלולבמונחים של הערכים בתחילת המסלולנשתמש בפותר אי-שוויונות למצוא ערכי בדיקהנשתמש בפותר אי-שוויונות למצוא ערכי בדיקה•

Page 24: © 1999-2001, ד"ר עמיר תומר מבוא להנדסת תוכנה קידוד ובדיקות יחידה - 1 קידוד ובדיקות יחידה Coding and Unit Testing (CUT) מקורות:

© 1

999-

2001

, מ

תור

מיע

ר ד"

ר

24 קידוד ובדיקות יחידה - מבוא להנדסת תוכנה

דוגמה לביצוע סימבולידוגמה לביצוע סימבולי

•Read (x, y, z) ;Read (x, y, z) ; (X, Y, Z) (X, Y, Z) •x = x + 2 y ;x = x + 2 y ; (X + 2 Y, Y, Z) (X + 2 Y, Y, Z) •z = x + yz = x + y; ; ? ? •y = 2 x – zy = 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);;

ניתן לחשב תוצאות החישוב, לסדרות בלי לולאות ניתן לחשב תוצאות החישוב, לסדרות בלי לולאות •או קריאות חיצוניותאו קריאות חיצוניות

Page 25: © 1999-2001, ד"ר עמיר תומר מבוא להנדסת תוכנה קידוד ובדיקות יחידה - 1 קידוד ובדיקות יחידה Coding and Unit Testing (CUT) מקורות:

© 1

999-

2001

, מ

תור

מיע

ר ד"

ר

25 קידוד ובדיקות יחידה - מבוא להנדסת תוכנה

כלים ליצירת הבדיקותכלים ליצירת הבדיקותבניית גרף מהקודבניית גרף מהקוד•

ניתוח הגרף ע"י אלגוריתמים מתורת הגרפיםניתוח הגרף ע"י אלגוריתמים מתורת הגרפים•

חישוב תנאי לערכי משתני המצב בתחילת חישוב תנאי לערכי משתני המצב בתחילת •מסלול שיבטיח ביצוע שיעבור דרך המסלולמסלול שיבטיח ביצוע שיעבור דרך המסלול

פותר לאוסף של אי-שוויונותפותר לאוסף של אי-שוויונות•

def-usedef-use לזהות מסלולי לזהות מסלולי dataflowdataflowשימוש ב-שימוש ב-•

להגדרת מקרי בדיקה להגדרת מקרי בדיקה COTSCOTSקיימים כלים קיימים כלים •ובדיקת כיסויובדיקת כיסוי

Page 26: © 1999-2001, ד"ר עמיר תומר מבוא להנדסת תוכנה קידוד ובדיקות יחידה - 1 קידוד ובדיקות יחידה Coding and Unit Testing (CUT) מקורות:

© 1

999-

2001

, מ

תור

מיע

ר ד"

ר

26 קידוד ובדיקות יחידה - מבוא להנדסת תוכנה

בדיקות למערכת מונחית-עצמיםבדיקות למערכת מונחית-עצמים

על פיעל פי•The Unified Software Development Process

אמצעי הגדרת הבדיקותאמצעי הגדרת הבדיקות•)test casesקרה בדיקה (מ–)test proceduresשגרות בדיקה (–)test componentsרכיבי בדיקה (–

Page 27: © 1999-2001, ד"ר עמיר תומר מבוא להנדסת תוכנה קידוד ובדיקות יחידה - 1 קידוד ובדיקות יחידה Coding and Unit Testing (CUT) מקורות:

© 1

999-

2001

, מ

תור

מיע

ר ד"

ר

27 קידוד ובדיקות יחידה - מבוא להנדסת תוכנה

Test CaseTest Caseהגדרת דרך אחת לבדיקת המערכתהגדרת דרך אחת לבדיקת המערכת•

מה בודקים עם כל קלט / פלט?–קבוצת דרישות אשר יישומן מצדיק בדיקה•

הבדיקה אפשרית–בהשקעה סבירה–

באילו תנאים בודקים?– use-caseנוצר לבדוק דרישה או תרחיש מ-–ימוש מוב כשוצר לבדוק מעבר במסלול חינ–

יש חתר

Page 28: © 1999-2001, ד"ר עמיר תומר מבוא להנדסת תוכנה קידוד ובדיקות יחידה - 1 קידוד ובדיקות יחידה Coding and Unit Testing (CUT) מקורות:

© 1

999-

2001

, מ

תור

מיע

ר ד"

ר

28 קידוד ובדיקות יחידה - מבוא להנדסת תוכנה

test procedurestest proceduresשגרות בדיקה שגרות בדיקה הוראות מפורטות לביצוע בדיקותהוראות מפורטות לביצוע בדיקות•

–test caseאחד test casesכמה –test casesחלקים של –

אפשרות “מיחזור”אפשרות “מיחזור”• עבורtest proceduresניתן להשתמש באותו –

test casesשונים

הוראות מפורטות למפעילהוראות מפורטות למפעיל•הפעלה ידנית–הפעלה / שילוב של אמצעי בדיקה אוטומטיים–

Page 29: © 1999-2001, ד"ר עמיר תומר מבוא להנדסת תוכנה קידוד ובדיקות יחידה - 1 קידוד ובדיקות יחידה Coding and Unit Testing (CUT) מקורות:

© 1

999-

2001

, מ

תור

מיע

ר ד"

ר

29 קידוד ובדיקות יחידה - מבוא להנדסת תוכנה

test componentstest componentsרכיבי בדיקה רכיבי בדיקה רכיב תוכנה לביצוע אוטומטי של שגרת רכיב תוכנה לביצוע אוטומטי של שגרת •

בדיקהבדיקהתכנית בשפת תכנות––scriptבדיקה “מוקלטת” באמצעי בדיקה אוטומטי–

משולב בביצועמשולב בביצוע•מייצר קלט–בקרה ומעקב אחר הביצוע של הרכיב הנבדק–דיווח / בחינה של התוצאות–

regression testregression testלשימוש חוזר אחרי שינויים: לשימוש חוזר אחרי שינויים: •

Page 30: © 1999-2001, ד"ר עמיר תומר מבוא להנדסת תוכנה קידוד ובדיקות יחידה - 1 קידוד ובדיקות יחידה Coding and Unit Testing (CUT) מקורות:

© 1

999-

2001

, מ

תור

מיע

ר ד"

ר

30 קידוד ובדיקות יחידה - מבוא להנדסת תוכנה

JUnitJUnitכלי לארגון בדיקות: כלי לארגון בדיקות:

JavaJavaלבדיקות יחידה ב-לבדיקות יחידה ב-•

, היום לשימוש כללי , היום לשימוש כלליXPXPבמקור, בשימוש ל-במקור, בשימוש ל-•

שהמשתמש שהמשתמש JavaJavaחבילה עם מחלקות חבילה עם מחלקות •מרחיב לסביבת בדיקה אוטומטיתמרחיב לסביבת בדיקה אוטומטית

כל בדיקה: אוביקטכל בדיקה: אוביקט•

"מריץ בדיקות" מפעיל את הבדיקות, ומסכם "מריץ בדיקות" מפעיל את הבדיקות, ומסכם •תוצאותתוצאות

מעודד בדיקות חוזרות לאחר שינויים מעודד בדיקות חוזרות לאחר שינויים •))regression testingregression testing((

Page 31: © 1999-2001, ד"ר עמיר תומר מבוא להנדסת תוכנה קידוד ובדיקות יחידה - 1 קידוד ובדיקות יחידה Coding and Unit Testing (CUT) מקורות:

© 1

999-

2001

, מ

תור

מיע

ר ד"

ר

31 קידוד ובדיקות יחידה - מבוא להנדסת תוכנה

גישות חדשות לבדיקת תוכנהגישות חדשות לבדיקת תוכנה

))model-based testingmodel-based testing((בדיקות מונחות מודלים בדיקות מונחות מודלים •בודק אם המימוש מתאים לדיאגרמת מצבים–מכיל בדיקות שליליות, למעברים שאינם במודל–

software model software model((בדיקת מודלים לתוכנה בדיקת מודלים לתוכנה •checkingchecking ( (

ניתוח הקוד כדי להוכיח שלכל ריצה אפשרית, –מתקיימות התכונות הנחוצות מהדרישות

safety(בשימוש לפרוטוקולים ולתוכנה חיונית –critical(

Page 32: © 1999-2001, ד"ר עמיר תומר מבוא להנדסת תוכנה קידוד ובדיקות יחידה - 1 קידוד ובדיקות יחידה Coding and Unit Testing (CUT) מקורות:

© 1

999-

2001

, מ

תור

מיע

ר ד"

ר

32 קידוד ובדיקות יחידה - מבוא להנדסת תוכנה

אז מה היה לנו...?אז מה היה לנו...?בחירת שפת התיכנותבחירת שפת התיכנות

משמעות הבחירה של שפת התכנותמשמעות השימוש במחוללי יישומים

עקרונות לקידוד נכוןעקרונות לקידוד נכוןבדיקות יחידהבדיקות יחידה

טכניקות לבדיקת מודוליםבדיקות מונחות-עצמים

Page 33: © 1999-2001, ד"ר עמיר תומר מבוא להנדסת תוכנה קידוד ובדיקות יחידה - 1 קידוד ובדיקות יחידה Coding and Unit Testing (CUT) מקורות:

© 1

999-

2001

, מ

תור

מיע

ר ד"

ר

33 קידוד ובדיקות יחידה - מבוא להנדסת תוכנה

וכעת נעבור ל...וכעת נעבור ל...

אספקטים