וזה בדוק

Program testing can be used to show the presence of bugs, but never to show their absence! — Edsger Dijkstra

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

אז בדיקות תוכנה הם תחום מאוד חשוב, ועוד יותר יצירת תוכנות עם מערכות בדיקות משלהם, הבעיה היא אבל כאשר חושבים שערכת בדיקות, גם עם 100,000 בדיקות מוכיחה אי קיום של באגים. וזו טעות מאוד נפוצה.

בדיקות מראות קיום באגים של מה שנבדק באופן בו הוא נבדק בלבד. מספיק שסדר פעולות מסויים מעט שונה, או משהו בפועל משתבש שלא חשבו עליו בשביל שזה ישתנה.

מה הכוונה ? ובכן נגיד ואנחנו כותבים דפדפן אינטרנט. עכשיו אנחנו כותבים בדיקות לרמת ה TCP שאנחנו משתמשים בו, אנחנו עולים לרמת HTTP, אח"כ בודקים את מפרש ה DOM שלנו עבור HTML ולרוב גם XML, אח"כ יוצרים מערכת שתבדוק את מפרשי ה JS, וה CSS והרשימה עוד ארוכה.

אבל מה קורה כאשר המידע שמגיע אלינו, מגיע מכתובת שלא כולה נכנסה לרשומות ה DNS. כלומר http://www.example.com קיים, אבל images.example.com לא קיים ברשומה שיש לנו נגישות אליה ? אז צריך לבדוק פתאום מה קורה כאשר באמצע טעינה ה DNS לא קיים, גם אם לפני שנייה היה קיים (אולי הרישום בדיוק התעדכן למשהו אחר, נגיד ירד לגמרי או שינה כתובת IP) ?

בכלל מה קורה כאשר אני מספק DNS שהוא ב IPv6 כאשר שאר הכתובות הן ב IPv4 ? כלומר יש כל כך הרבה פרמטרים שצריך לבדוק, ולא תמיד אפשר לחשוב על הכל.

אבל רגע, הרי יש מתולוגיות של קודם כותבים בדיקה שבהכרח תיכשל ורק אז את הקוד שיגרום לה לעבור, ואז בטוח שאין באגים נכון ? ובכן לא. מה קורה כאשר הקוד שלי משתמש בספרייה משותפת בגרסה 1.0.2 בבדיקה שלי וזה עובר, אבל בגרסה 1.5.6 הAPI בספרייה שונה קצת בצורה שהוא פועל בפנים, ואם מקודם הייתי מעביר קוד ANSI, עכשיו הוא חייב לדעת במפורש שמדובר בקוד כזה ? הרי הבדיקות שלי בייחוד אם זה באנגלית סביר להניח שימשיכו לעבוד אם בברירת מחדל הוא כרגע יתמוך ב UTF8, אבל אם אח"כ אתחיל לכתוב מחרוזת בעברית, יפנית או משהו שלא נבדק לפני זה, וזה ישבר, הבדיקה המקרוית עדיין תעבור.

כך שתוכנה, ללא קשר לכמות הבדיקות שיש לה, אינה יכולה לתת תעודת הכשר שאין בה באגים, אלא רק תעודת הכשר שהיא נבדקה על סט מאוד מוגדר של בדיקות, ורק אליהן עד כמה שיודעים היא לא מכילה את הבאגים השונים, עד שהמצב ישתנה מסיבה כלשהי, גם אם הקוד מעולם לא שונה.

כתיבת תגובה

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

הלוגו של WordPress.com

אתה מגיב באמצעות חשבון WordPress.com שלך. לצאת מהמערכת / לשנות )

תמונת Twitter

אתה מגיב באמצעות חשבון Twitter שלך. לצאת מהמערכת / לשנות )

תמונת Facebook

אתה מגיב באמצעות חשבון Facebook שלך. לצאת מהמערכת / לשנות )

תמונת גוגל פלוס

אתה מגיב באמצעות חשבון Google+ שלך. לצאת מהמערכת / לשנות )

מתחבר ל-%s