Visual Basic for Applications:
כתיבת בדיקות
איך לעשות:
למרות ש-Visual Basic for Applications (VBA) אינו כולל מערכת בדיקה פנימית הדומה לאלה הזמינות בשפות כמו Python או JavaScript, ניתן עדיין ליישם פרוצדורות בדיקה פשוטות כדי לבדוק את שלמות הקוד שלך. הנה דוגמה להמחשה:
נניח שיש לך פונקציה ב-VBA שמוסיפה שני מספרים:
Function AddNumbers(x As Integer, y As Integer) As Integer
AddNumbers = x + y
End Function
כדי לבדוק את הפונקציה הזו, אתה יכול לכתוב פרוצדורה נוספת שמאמתת את התוצאה שלה לעומת תוצאות מצופות:
Sub TestAddNumbers()
Dim result As Integer
result = AddNumbers(5, 10)
If result = 15 Then
MsgBox "הבדיקה עברה!", vbInformation
Else
MsgBox "הבדיקה נכשלה. ציפיתי ל-15 אך קיבלתי " & result, vbCritical
End If
End Sub
הפעלת TestAddNumbers
תציג תיבת הודעה המציינת אם הבדיקה עברה או נכשלה בהתבסס על תוצאת הפונקציה. למרות שזהו תרחיש מפושט, ניתן לבנות בדיקות מורכבות יותר על ידי הטמעת לולאות, ערכי קלט שונים, ובדיקה של מספר פונקציות.
טבילה עמוקה
הגישה לכתיבת בדיקות ב-VBA המוצגת כאן היא ידנית וחסרה את התכונות של מסגרות בדיקה מתוחכמות יותר הזמינות בסביבות תכנות אחרות, כמו הפעלות בדיקה אוטומטיות, פרוצדורות הכנה/פירוק, ודיווח משולב של תוצאות בדיקה. לפני הקבלה הרחבה של מסגרות בדיקת יחידות ופיתוח מונע בדיקות (TDD), פרוצדורות בדיקה ידניות דומות לזו שתוארה היו נפוצות. למרות ששיטה זו פשוטה ויכולה להיות יעילה לפרויקטים קטנים או למטרות למידה, היא אינה ניתנת להרחבה או יעילה לפרויקטים גדולים או צוותים.
בסביבות שתומכות בערכות כלים לפיתוח מעשירות יותר, מתכנתים לעיתים קרובות פונים למסגרות כמו NUnit עבור יישומי .NET או JUnit עבור יישומי Java, המספקות כלים מקיפים לכתיבה והרצת בדיקות באופן מסודר. מסגרות אלה מציעות תכונות מתקדמות כמו הצהרה על תוצאות בדיקה, הכנת אובייקטים מדומים, ומדידת כיסוי קוד.
למפתחי VBA המחפשים יכולות בדיקה מתקדמות יותר, האלטרנטיבה הקרובה ביותר עשויה להיות שימוש בכלים חיצוניים או אינטגרציה עם סביבות תכנות אחרות. חלק מהמפתחים משתמשים ב-VBA בשילוב עם Excel כדי לתעד תרחישי בדיקה ותוצאות באופן ידני. למרות שהשיטות אינן נוחות או אוטומטיות כמו שימוש במסגרת בדיקה מוקדשת, הן יכולות לגשר חלקית על הפער, ולעזור לשמור על אמינות פתרונות VBA ביישומים מורכבים או קריטיים.