הבדיקות ב-AVG, במחלקה שלנו, כוללות בדיקות על מערכות הפעלה רבות (מ-XP ועד ל-WIN8) ודפדפנים רבים (כל ה-IE, שלוש גרסאות FF ושתי גרסאות Chrome).
מצד אחד הרצת מלוא הבדיקות על פני כל הווריאנטים שלמעלה יצרו צוואר בקבוק צר בבדיקות הרגרסיה. מצד שני, יש לנו עשרות מיליוני משתמשים. אנחנו לא יכולים להרשות להשאיר למשתמשים, כולל כאלה שיש להם XPx64, באגים, בעיקר באגים חמורים שעלולים למנוע מהם פעילות חלקה (מקרים כגון תקיעת הדפדפן למשל). אז מה עושים?
החלטנו לפתור את הסוגייה הזו כך:
מתוך הרגרסיות עשינו מיפוי וסידור לפי חשיבות של תסריטי בדיקה:
1. תסריטי בדיקה קריטיים. למשל כאלה שאנחנו לא יכולים לחיות עם בעייה בהם, כמו איבוד קשר עם המשתמשים, וכאלה שיש להם פוטניאל פגיעה במשתמשים. בנוסף הוצאנו ממערכת מעקב התקלות שלנו את הבאגים לפי מסמכי הבדיקה, וסימנו את אלה שמייצרים לנו את מירב הבאגים. בנוסף, בדקנו כמה באגים התגלו רק באחד מהקונפיגורציות (למשל באג שקורה רק ב-IE8).
2. תסריטים חשובים.
3. תסריטים בעלי חשיבות משנית.
בשלב ראשון לא נגענו במסמכים מהמעלה הראשונה. לעומת זאת בשאר טיפלנו. ערכנו את המסמכים וסימנו ברגרסיה איזה subset של צעדים שבודק את הדברים הקריטיים ביותר, כלומר דברים שאם לא יעבדו הבאגים שיפתחו כתוצאה מכך לא יהיה פחותים מקריטיים. קראנו להם Sanity.
כשאנחנו מחלקים את הבדיקות להרצה אנו שמים לבדיקות מהמעלה השנייה שלש מופעים של דפדפנים כרגרסיה מלאה - איד IE, אחד FF ואחד ב-CH, ועדיף או הגירסה הנפוצה לשהם, או הבטא. כל השאר מקבלים את מסמכי ה-Sanity. במערכות הפעלה אנו מסיינים (עושים assign) את זו הפופולרית ואולי עוד אחת כרגרסיה מלאה.
האם אנו מפספסים באגים? אני יכול לומר בוודאות שכן, אבל אילו אינם באגים קריטיים. האם המחיר שווה את היעילות? אני מאמין שכן. הרגרסיות שלנו ברמת הקליינט מסתכמים בהרבה ימי אדם, ואנו חייבים להריץ את כולם כמעט בכל גרסה (הייתה חשיבה בנושא והגענו למסקנה שאין אנו יכולים לעשות הנחות כפי שהיינו רוצים). כמובן שאין מניעה בזמנים "מתים" להתרכז בקונפיגורציות הפחות נבדקות.
מצד אחד הרצת מלוא הבדיקות על פני כל הווריאנטים שלמעלה יצרו צוואר בקבוק צר בבדיקות הרגרסיה. מצד שני, יש לנו עשרות מיליוני משתמשים. אנחנו לא יכולים להרשות להשאיר למשתמשים, כולל כאלה שיש להם XPx64, באגים, בעיקר באגים חמורים שעלולים למנוע מהם פעילות חלקה (מקרים כגון תקיעת הדפדפן למשל). אז מה עושים?
החלטנו לפתור את הסוגייה הזו כך:
מתוך הרגרסיות עשינו מיפוי וסידור לפי חשיבות של תסריטי בדיקה:
1. תסריטי בדיקה קריטיים. למשל כאלה שאנחנו לא יכולים לחיות עם בעייה בהם, כמו איבוד קשר עם המשתמשים, וכאלה שיש להם פוטניאל פגיעה במשתמשים. בנוסף הוצאנו ממערכת מעקב התקלות שלנו את הבאגים לפי מסמכי הבדיקה, וסימנו את אלה שמייצרים לנו את מירב הבאגים. בנוסף, בדקנו כמה באגים התגלו רק באחד מהקונפיגורציות (למשל באג שקורה רק ב-IE8).
2. תסריטים חשובים.
3. תסריטים בעלי חשיבות משנית.
בשלב ראשון לא נגענו במסמכים מהמעלה הראשונה. לעומת זאת בשאר טיפלנו. ערכנו את המסמכים וסימנו ברגרסיה איזה subset של צעדים שבודק את הדברים הקריטיים ביותר, כלומר דברים שאם לא יעבדו הבאגים שיפתחו כתוצאה מכך לא יהיה פחותים מקריטיים. קראנו להם Sanity.
כשאנחנו מחלקים את הבדיקות להרצה אנו שמים לבדיקות מהמעלה השנייה שלש מופעים של דפדפנים כרגרסיה מלאה - איד IE, אחד FF ואחד ב-CH, ועדיף או הגירסה הנפוצה לשהם, או הבטא. כל השאר מקבלים את מסמכי ה-Sanity. במערכות הפעלה אנו מסיינים (עושים assign) את זו הפופולרית ואולי עוד אחת כרגרסיה מלאה.
האם אנו מפספסים באגים? אני יכול לומר בוודאות שכן, אבל אילו אינם באגים קריטיים. האם המחיר שווה את היעילות? אני מאמין שכן. הרגרסיות שלנו ברמת הקליינט מסתכמים בהרבה ימי אדם, ואנו חייבים להריץ את כולם כמעט בכל גרסה (הייתה חשיבה בנושא והגענו למסקנה שאין אנו יכולים לעשות הנחות כפי שהיינו רוצים). כמובן שאין מניעה בזמנים "מתים" להתרכז בקונפיגורציות הפחות נבדקות.