במקום לכתוב כל בדיקה מאפס, תוכלו להשתמש ב-Copilot כדי להציע גופי בדיקות מלאים, לייצר נתוני בדיקה (Mock Data) מורכבים, לזהות מקרי קצה שאולי פספסתם, ואפילו להסביר או לשפר בדיקות קיימות. היכולת שלו להבין את ההקשר של הקוד שלכם מאפשרת לו לייצר בדיקות רלוונטיות ומדויקות, המותאמות לפונקציות ולמחלקות שבניתם.
בתרגול זה נתמקד בשימוש ב-Copilot וב-Copilot Chat כדי לייצר, להבין ולשפר בדיקות יחידה. נלמד כיצד לבקש ממנו לכתוב בדיקות לפונקציה קיימת, לייצר נתונים מגוונים, ולחקור את יכולותיו בהבנת קוד קיים.
הדוגמאות בתרגול הזה מופיעות ב-Python, אך הן אגנוסטיות לחלוטין לשפת הפיתוח. אם אתם מעדיפים לעבוד בשפה אחרת – ניתן להשתמש ב Chat Ask (או כל Chat app חיצוני) על מנת לתרגם כל קטע קוד בקלות לשפת הנדרשת.
שימו לב – תרגול זה מובנה מאוד והוא מהווה בסיס למחקר וללימוד דרך ״לכלוך הידיים״ בהמשך הדרך. חשוב להכיר את החלקים השונים בתרגול ובמערכת. עם זאת – בכל פרק וסעיף, הרגישו חופשי לחקור יותר לעומק ולסקור גם מושגים שונים ואפשרויות שונות שלא הוזכרו במפורש. נתקעתם? לא נורא – חזרו להוראות המקוריות, ותמיד אפשר להתחיל פרויקט חדש ונקי, ולהתנסות מראש הפרק הנוכחי.
בהצלחה!
1. יצירת בדיקות יחידה (Unit Tests)
בפרק זה ניקח פונקציה פשוטה ונשתמש ב-Copilot Chat כדי לייצר עבורה סט של בדיקות יחידה.
- הכנה:
- צרו קובץ חדש בשפת התכנות המועדפת עליכם (לדוגמה, `utils.py` עבור פייתון או `utils.js` עבור JavaScript).
- הדביקו בקובץ את הפונקציה הבאה:
def calculate_average_grade(students): if not students: return 0 total_grade = 0 valid_students = 0 for student in students: if "grade" in student and isinstance(student["grade"], (int, float)): total_grade += student["grade"] valid_students += 1 if valid_students == 0: return 0 return total_grade / valid_students
- תרגיל 1 – יצירת בדיקות בסיסיות:
- סמנו את כל קוד הפונקציה שיצרתם.
- פתחו את Copilot Chat או Inline.
- בחלון הצ'אט שנפתח, הקלידו את הבקשה הבאה ולחצו Enter:
/tests Generate unit tests for the selected code - בחנו את הבדיקות ש-Copilot הציע. שימו לב כיצד הוא מזהה את מבנה הנתונים (מערך של אובייקטים) ומייצר בדיקה שתואמת לו.
- צרו קובץ בדיקות חדש (למשל `test_utils.py`) והדביקו בו את הקוד ש-Copilot יצר.
- תרגיל 2 – בקשה למקרי קצה (Edge Cases):
- לאחר שקיבלתם את הבדיקות הראשוניות, בקשו מ-Copilot Chat להוסיף בדיקות למקרי קצה.
- הקלידו בחלון הצ'אט את הבקשה הבאה:
Now, add more tests for edge cases, such as an empty list, a list with students without a grade, and a list where all grades are invalid. - התבוננו כיצד Copilot מייצר בדיקות שמכסות את המקרים שבהם הפונקציה עלולה להיכשל או להחזיר תוצאות לא צפויות.
- שלבו את הבדיקות החדשות בקובץ הבדיקות שלכם.
2. יצירת נתוני בדיקה (Mock Data)
לעתים קרובות, חלק מייגע בכתיבת בדיקות הוא יצירת נתונים מגוונים ומציאותיים. Copilot יכול לעזור לנו לייצר כמויות גדולות של נתונים בקלות.
- תרגיל 1 – יצירת מערך נתונים פשוט:
- בקובץ הבדיקות שיצרתם, פתחו שורה חדשה.
- כתבו הערה המתארת את הנתונים שאתם רוצים לייצר.
- לדוגמה, בפייתון, כתבו את ההערה הבאה והמתינו להשלמה האוטומטית של Copilot:
# Create a list of 10 student objects. Each student should have a name, an ID, and a grade between 40 and 100.
- אשרו את הצעת ההשלמה של Copilot (באמצעות מקש Tab) ובדקו את המערך שהוא יצר עבורכם.
- תרגיל 2 – יצירת נתונים מורכבים באמצעות הצ'אט:
- נניח שאנחנו צריכים נתונים מורכבים יותר עבור בדיקה אחרת.
- פתחו את Copilot Chat וכתבו את הבקשה הבאה:
Generate a JSON array of 5 user objects. Each object must have a UUID for 'id', a 'firstName', a 'lastName', a 'joinDate' within the last year, and an 'isActive' boolean property. - העתיקו את הנתונים שנוצרו והשתמשו בהם לפי הצורך בבדיקות שלכם. שימו לב לרמת הדיוק של הנתונים שנוצרו בהתאם לבקשה.
3. תרגול פתוח
כעת, לאחר שהתנסיתם ביצירת בדיקות ונתונים, הגיע הזמן "ללכלך את הידיים" ולהתנסות באופן חופשי.
- שיפור בדיקות קיימות: מצאו קובץ בדיקות קיים בפרויקט אמיתי (או צרו אחד מורכב). סמנו את הקוד ובקשו מ-Copilot Chat להציע שיפורים. נסו פרומפטים כמו:
Refactor these tests to be more readable. Are there any missing test cases here? - שימוש ב-`/explain`: מצאו בדיקה מורכבת שאינכם מבינים עד הסוף. השתמשו בפקודת `/explain` ב-Copilot Chat כדי לקבל הסבר מפורט על הלוגיקה, המבנה והמטרה של הבדיקה.
- בדיקות אינטגרציה: כתבו שתי פונקציות שתלויות זו בזו ובקשו מ-Copilot לכתוב בדיקת אינטגרציה שבודקת את שתיהן יחד.
- התאמה לספריית בדיקות (Framework): אם אתם עובדים עם ספריית בדיקות ספציפית כמו Jest, PyTest, או NUnit, ציינו זאת במפורש בבקשות שלכם. לדוגמה:
Write Jest tests for this React component.
בתרגול זה ראינו כיצד GitHub Copilot הוא כלי עזר רב עוצמה לכתיבת בדיקות.
למדנו לייצר בדיקות יחידה ומקרי קצה, ליצור נתוני בדיקה מורכבים ולהשתמש בצ'אט כדי להבין ולשפר קוד קיים. שילוב Copilot בשגרת העבודה יכול לא רק לחסוך זמן יקר אלא גם לשפר את איכות וכיסוי הבדיקות בפרויקטים שלכם.