שאלת מבחן בתכנות מונחה עצמים - אוניברסיטת בר-אילן 2019 - מחלקות
אמיר כותב חבילת קוד המייצגת חנות נעליים, כולל ניהול של המלאי והמכירות. מה מהבאים סביר ביותר שנראה במחלקת בדיקות יחידה (Unit testing) עבור מחלקה המייצגת זוג נעליים במלאי, על פי עקרונות כתיבת הבדיקות ותכנות מונחה עצמים שלמדנו?
1. בדיקה המוודאת כי מכירת הפריט אכן מסירה אותו מרשימת המלאי של החנות.
2. בדיקה המוודאת כי מכירת הפריט אינה משפיעה על פריטים אחרים הנמצאים במלאי.
3. בדיקה המוודאת כי נעליים שאותחלו עם נתונים שקולים יחזירו
4. בדיקה המוודאת כי כל השדות של המחלקה הוגדרו כ-
5. כל התשובות האחרות אינן נכונות
1. בדיקה המוודאת כי מכירת הפריט אכן מסירה אותו מרשימת המלאי של החנות.
2. בדיקה המוודאת כי מכירת הפריט אינה משפיעה על פריטים אחרים הנמצאים במלאי.
3. בדיקה המוודאת כי נעליים שאותחלו עם נתונים שקולים יחזירו
true בקריאה למתודת השוואה (equals או מתודה דומה בשפה אחרת).4. בדיקה המוודאת כי כל השדות של המחלקה הוגדרו כ-
final (או הגדרה דומה בשפה אחרת), בהנחה שמדובר בטיפוס מקובע.5. כל התשובות האחרות אינן נכונות
העתק שאלה
שתף שאלה
סמן כחשוב
סמן כבוצע
אוניברסיטת בר-אילןמועד א2019סמסטר ב
★★★★★
מחלקותאובייקטיםבדיקות יחידה
בדיקת יחידה (Unit test) מתמקדת בבדיקת רכיב קוד בודד (כמו מחלקה) באופן מבודד, בעוד שבדיקת אינטגרציה (Integration test) בודקת את שיתוף הפעולה בין מספר רכיבים.
התשובה הנכונה היא 3.
בדיקות יחידה (Unit Tests) נועדו לבדוק את התנהגותו של רכיב קוד קטן ומבודד - במקרה זה, המחלקה המייצגת זוג נעליים. המטרה היא לוודא שהמחלקה פועלת נכון בפני עצמה, ללא תלות במחלקות אחרות.
ננתח את האפשרויות:
1. בדיקה המוודאת כי מכירת הפריט מסירה אותו מרשימת המלאי: בדיקה זו בוחנת את האינטראקציה בין אובייקט הנעל לבין אובייקט המלאי. היא בודקת שהמערכת הכוללת פועלת נכון, ולכן היא מתאימה יותר להגדרה של בדיקת אינטגרציה (Integration Test), ולא בדיקת יחידה עבור מחלקת הנעליים.
2. בדיקה המוודאת כי מכירת הפריט אינה משפיעה על פריטים אחרים: בדומה לסעיף הקודם, בדיקה זו בוחנת את ההשפעה של פעולה אחת על מצב המערכת הגדולה יותר (המלאי), ולכן גם היא בדיקת אינטגרציה.
3. בדיקה המוודאת כי נעליים שאותחלו עם נתונים שקולים יחזירו `true` בקריאה למתודת השוואה: בדיקה זו מתמקדת באופן בלעדי בהתנהגות הפנימית של מחלקת הנעליים. היא בודקת את הלוגיקה של מתודת ה-
4. בדיקה המוודאת כי כל השדות של המחלקה הוגדרו כ-`final`: זו אינה בדיקה של התנהגות ריצה (runtime behavior). הגדרת שדות כ-
לסיכום, האפשרות היחידה שמתארת בדיקת יחידה טהורה עבור מחלקת הנעליים היא אפשרות 3.
בדיקות יחידה (Unit Tests) נועדו לבדוק את התנהגותו של רכיב קוד קטן ומבודד - במקרה זה, המחלקה המייצגת זוג נעליים. המטרה היא לוודא שהמחלקה פועלת נכון בפני עצמה, ללא תלות במחלקות אחרות.
ננתח את האפשרויות:
1. בדיקה המוודאת כי מכירת הפריט מסירה אותו מרשימת המלאי: בדיקה זו בוחנת את האינטראקציה בין אובייקט הנעל לבין אובייקט המלאי. היא בודקת שהמערכת הכוללת פועלת נכון, ולכן היא מתאימה יותר להגדרה של בדיקת אינטגרציה (Integration Test), ולא בדיקת יחידה עבור מחלקת הנעליים.
2. בדיקה המוודאת כי מכירת הפריט אינה משפיעה על פריטים אחרים: בדומה לסעיף הקודם, בדיקה זו בוחנת את ההשפעה של פעולה אחת על מצב המערכת הגדולה יותר (המלאי), ולכן גם היא בדיקת אינטגרציה.
3. בדיקה המוודאת כי נעליים שאותחלו עם נתונים שקולים יחזירו `true` בקריאה למתודת השוואה: בדיקה זו מתמקדת באופן בלעדי בהתנהגות הפנימית של מחלקת הנעליים. היא בודקת את הלוגיקה של מתודת ה-
equals (או מתודה מקבילה) של המחלקה, מבלי להזדקק למחלקות חיצוניות. זהו מקרה קלאסי של בדיקת יחידה. היא מוודאת שאחד מה"חוזים" הבסיסיים של האובייקט (הגדרת שוויון) ממומש כהלכה.4. בדיקה המוודאת כי כל השדות של המחלקה הוגדרו כ-`final`: זו אינה בדיקה של התנהגות ריצה (runtime behavior). הגדרת שדות כ-
final היא מאפיין של קוד המקור עצמו. אימות של מאפיינים כאלה נעשה בדרך כלל באמצעות כלים לניתוח קוד סטטי (static analysis tools) או בסקירת קוד (code review), ולא באמצעות בדיקת יחידה שמפעילה את הקוד.לסיכום, האפשרות היחידה שמתארת בדיקת יחידה טהורה עבור מחלקת הנעליים היא אפשרות 3.