מדוע בדיקות ויזואליות נתקעות בבדיקות ידניות
שינוי ברכיב משותף — כפתור, שדה קלט, כרטיס מוצר — יוצא לגרסה ומפרק את הפריסה בעשרות עמודים בבת אחת. המפתח בודק שלושה-ארבעה מסכים שבהם הרכיב גלוי, אבל הוא נשבר דווקא במקום שבו הוטמע לפני שנה עם מרווח לא סטנדרטי. רגרסיית פריסה כזו צפה ועולה רק לאחר ההפצה, והראשונים שרואים אותה הם המשתמשים.
פערי ממשק כמעט אף פעם לא נראים במסך ה"ממוצע" — הם מתחבאים בקבוצה צרה של מצבים: רשימה ריקה, שם ארוך, שגיאת ולידציה, גלישת טבלה. לעבור על המצבים האלה ידנית בכל הרזולוציות והתפקידים זה בלתי אפשרי, ולכן בדיקות פריסה ידניות מכסות רק חלק קטן משילובים אמיתיים.
בשלב הבא נכנסת קליטת הגרסה: המעצב והאנליסט פותחים את העיצובים ומשווים עמוד אחר עמוד מרווחים, צבעים ושבירת שורות בעין. בדיקת העיצובים לפני שחרור נמתחת על פני ימים, מקומות שנויים במחלוקת נבחנים מחוץ לתור — והשחרור נדחה.
זהו צוואר בקבוק בקליטת הגרסה, ולא תקלה חד-פעמית: ככל שיש יותר עמודים, כך קטן הסיכוי להספיק לעבור על הכול בעין.
נסביר איך זה נסגר: צילום של כל עמוד וכל מצב בכל שינוי, השוואה אוטומטית לתמונת ייחוס ודוח רק על אזורי הממשק שהשתנו בפועל. תהליך כזה — למשל, ב-Chromatic — מסיר מקליטת הגרסה את הסקירה הידנית ומשאיר לאדם החלטה לגבי פערים שנויים במחלוקת.
מה נותנת השוואה קבועה של בניות ממשק
השוואת כל בנייה לתמונת ייחוס בסיסית של הממשק נותנת שלושה אפקטים מדידים: גילוי מוקדם של פערים, זמן קליטה צפוי לגרסה ועומס קטן יותר על תמיכת הממשק. כולם תוצאה של מנגנון אחד: סטייה מתמונת הייחוס נרשמת בשינוי מסוים, ולא ברגע שבו הלקוח כבר פתח את העמוד.
כמה פערים נתפסים לפני שחרור
כאשר ספי סובלנות ומסכות לאזורים דינמיים — תאריכים, מונים, אווטארים, תוספות פרסומיות — מוגדרים, רעש ההשוואה יורד פי כמה, והזזות אמיתיות נשארות בולטות. לפני השחרור מצליחים לתפוס כתשעה פערים מתוך עשרה: הזזת רשת במסכים צרים, טקסט חתוך בלוקליזציה, בלוק 'שזז' אחרי עריכת רכיב משותף.
השאר — מצבים נדירים כמו תוצאות ריקות או שמות ארוכים, ואותם מכסים בתרחישים נפרדים. סוג התקלות בפריסה יוצא מהשחרור אל היסטוריית הבנייה, שבה כל סטייה מציגה את מחבר השינוי והתאריך.
זמן קליטה והחמצת מועדי שחרור
כאשר בדיקת הפערים עומדת בצינור הבנייה, קליטת הגרסה מתקצרת מימים אחדים לשעות: במקום מעבר רציף על כל העמודים, הצוות מסתכל על רשימה קצרה של סטיות עם הדגשת ההבדל. מועדי השחרור מפסיקים להיכשל בגלל ממצאים ביום האחרון — מקומות שנויים במחלוקת צפים בשלב השינוי, כשמתקנים אותם בדקות.
העומס על תמיכת הממשק יורד: פניות מהסוג 'בטלפון הכפתור נפל על הטקסט' מפסיקות להגיע במקבצים אחרי כל עדכון.
בסך הכול השוואה קבועה של בניות משנה את הכלכלה של השחרור עצמו: פחות בדיקה ידנית, מחזור קליטה קצר יותר, תמיכת ממשק צפויה.
השוואת גישות לבדיקות ויזואליות
בחירת הגישה מסתכמת בשאלה היכן נתפס הפער וכמה עבודה ידנית נשארת לצוות. האוטומציה בנויה על השוואת צילומי ממשק, ו-Chromatic סוגר את החיבור 'בנייה — תמונת ייחוס — דוח'. להלן ארבע חלופות שביניהן בוחרים.
| מסלול | מתי מתאים | מגבלות |
|---|---|---|
| צילומים בשלב הבנייה | פריסה יציבה, שחרורים תכופים | דורש תחזוקת תמונות ייחוס ונתונים דינמיים נקיים |
| בדיקה בסביבות דפדפן שונות | קהל רחב, פריסה מורכבת | ההרצה ארוכה יותר, חלק מהפערים — ארטיפקטים של רינדור |
| סקירה ידנית לפי רשימה | מסכים חדשים, אנימציות, מצבים בלי עיצוב | לא מתרחב: פספוסים בעמודים משניים |
| מצב משולב | מוצר בוגר עם תרחישים קריטיים | דרושה משמעת: ספים, סדרי עדיפויות, טיפול בתור |
היכן עובר הגבול של ערכי הסף
הסף קובע את שיעור הנקודות השונות, שמתחתיו הצילום נחשב תואם. עבור בלוקי טקסט משאירים אותו מינימלי, עבור כרטיסים עם תמונות — גבוה יותר, אחרת ההרצה מרעישה בהחלקה. בדיקה ברזולוציות שונות דורשת סט נפרד של תמונות ייחוס: מה שלא מורגש במסך רחב שובר את הפריסה במסך צר.
עדכון תמונות ייחוס בלי לעצור שחרורים
מצב אישור תמונות ייחוס מפעילים באופן ממוקד: צילום חדש מתקבל כתמונת ייחוס לאחר בירור סיבת הפער. העדכון נעשה בשינוי נפרד ואינו מכבה את הבדיקה כולה — אחרת הבקרה נעלמת דווקא במקום שבו בוצעו שינויים בפריסה.
סדר ההטמעה: מניתוח עיצובים ועד מסירה לצוות
הטמעת בדיקות ויזואליות היא לא חיבור שירות, אלא בניית תהליך: בלי תמונות ייחוס וכללים לעדכונן, הבדיקות הופכות במהירות לזרם של פערי שווא שהצוות מפסיק לקרוא. אנחנו עובדים בשלבים — עד למסירה נשאר נוהל עבודה פעיל, ולא הגדרות חד-פעמיות.
הכנת תמונות ייחוס ומיפוי מצבים
- מיפוי עמודים ומצבים: אוספים רשימה של נתיבים, רזולוציות מסך ווריאציות ממשק — חלונות מודאליים, שגיאות ולידציה, רשימות ריקות, מצב אורח ומצב מחובר. את הכיסוי מתעדים בטבלה, כדי שמסכים חדשים לא יישארו מחוץ לבדיקות.
- צילומי ייחוס מצלמים מבנייה מאומתת על נתונים קבועים, ולא מהסביבה הנוכחית: אחרת בסיס ההשוואה מקבל שינויים של אחרים ותוכן אקראי.
- הפעלת בדיקות בבנייה: את ההשוואה דרך Chromatic מטמיעים בצינור כך שהיא תרוץ על כל שינוי בענף ותחסום מיזוג בעת פער, והדוח עם הדגשת ההבדלים ייפתח ישירות מתוך המשימה.
סינון התראות שווא
- פערי שווא מנתחים לפי סיבות: אנימציות, טעינת גופנים, תאריכים, נתונים אקראיים, טעינה מדורגת של תמונות. בלוקים לא יציבים ממסכים, זמן ואנימציות מקבעים, ודינמיקה מחליפים בנתונים צפויים.
- נוהל עדכון תמונות ייחוס: מי רשאי לעדכן צילום, מתי מדובר בשינוי פריסה מודע ולא בהשתקת שגיאה, ואיך הסיבה מתועדת בהיסטוריה.
- הדרכת הצוות: מפתחים ובודקים קוראים את הדוח בעצמם ומבדילים בין פער שווא לבין פגם אמיתי.
התוצאה — בדיקות רצות על כל שינוי, שיעור התראות השווא יורד לאחוזים בודדים, ותמונות הייחוס מתעדכנות לפי כלל, ולא לפי סיכום בצ'אט.
ארטיפקטים במאגר: קונפיגורציות, סכמות, נהלים
ההטמעה לא מסתיימת בדוח עבודה, אלא בסט קבצים במאגר שלפיהם הצוות ממשיך לבדוק את הממשק בלעדינו. הכול נמצא לצד הקוד ומנוהל בגרסאות יחד איתו — במעבר או בהחלפת ספק אין צורך לשחזר דבר מהתכתבות.
- קובץ קונפיגורציה של הבדיקות: אילו בניות מושוות, עם איזו סובלנות ובאילו תנאים הפער חוסם מיזוג שינויים.
- מפת כיסוי עמודים ומצבים — טבלה שבה עבור כל נתיב מסומן אילו רזולוציות מסך, ערכות נושא ווריאציות נתונים נכנסות להשוואה.
- סט צילומי ייחוס עם קישור לענף ולתג גרסה: חזרה לגרסה קודמת לא דורשת צילום מחדש.
- הוראות עדכון תמונות ייחוס — מי ובאיזה סדר מאשר מצב ממשק חדש.
- נוהל בירור פערים: איך להבדיל בין שבירת פריסה אמיתית לרעש של אנימציות, גופנים וטעינת נתונים.
- סכמת הרשאות: למי פתוחה צפייה בדוחות, ולמי — אישור תמונות ייחוס.
- צ'ק-ליסט לחיבור אזור חדש: מה להוסיף למפת הכיסוי כדי שהעמוד לא יישאר בלי בדיקות.
מדיניות גישה לדוחות ולתמונות ייחוס
צפייה בדוחות פתוחה לכל הצוות — את הפער רואה גם המפתח וגם הבודק. לאשר תמונות ייחוס יכולים רק האחראים על הממשק, אחרת מצב שנוי במחלוקת ייקבע בשקט כנורמה. ההרשאות ניתנות דרך קבוצות קיימות במערכת בקרת הגרסאות, ולא בחשבונות נפרדים: כשאדם עוזב, הגישה נסגרת אוטומטית.
נוהל עדכון תמונות ייחוס
תמונות ייחוס משתנות באותו שינוי קוד שבו משתנה הממשק — אחרת הבדיקה נשברת במיזוג הבא. פער שנוי במחלוקת לא מאושר תוך כדי תנועה, אלא נבחן לפי הצ'ק-ליסט שלמעלה; עדכון המוני מוגש כשינוי נפרד עם הסבר הסיבה.
מקרה בוחן: הסרנו פערי שווא אחרי שינוי פריסה
מה היה לפני: סקירה ידנית ופגמים שהוחמצו
הפרויקט — חנות מקוונת עם קטלוג, סל קניות ואזור אישי: 40 מסכים מרכזיים וכמה מצבים בכל אחד. לפני השחרור שני מהנדסים עברו עליהם בעין לפי צ'ק-ליסט — זה ארך 3-4 שעות והשאיר שטחים מתים: התנהגות אחרי שגיאת ולידציה, שמות מוצרים ארוכים, סל ריק.
ברבעון נכנסו לשחרור שישה פגמי פריסה: רשת כרטיסים שבורה במסכים צרים, כפתור שנפל על טקסט בתוויות מתורגמות, בלוק מחיר חתוך. הסקירה הידנית לא התרחבה — ככל שהוסיפו יותר מסכים, כך נשאר פחות זמן לכל אחד.
מה קרה אחר כך: כיסוי וזמן קליטה
חיברנו את Chromatic לבנייה: כל קומיט אוסף צילומים של רכיבים ועמודים בסביבה מבודדת, והפערים מגיעים לסקירה עם שכבות 'לפני/אחרי'. הכיסוי גדל משני עשרות מצבים שאדם הספיק לבדוק ל-180 צילומים — כולל מצבי טעינה, שגיאות ורוחבי מסך שונים.
עבודה נפרדת — התראות שווא. בשבועות הראשונים הצילומים 'רעדו' בגלל אנימציות וטעינת גופנים; כיבינו אנימציות בזמן הצילום, קבענו גופנים ומסכנו בלוקים דינמיים כמו מונה מוצרים בסל. שיעור התראות השווא נשאר מתחת ל-5% — המהנדס פותח את הפער ורואה מיד אם זה פגם או רעש.
זמן קליטת הגרסה התקצר מ-3-4 שעות ל-40 דקות, ופגמי הפריסה שהוחמצו בשחרור — משישה ברבעון לאפס בשלושת השחרורים האחרונים. אם אין פערים, הגרסה יוצאת בלי מעבר ידני.
מה לעשות אם בדיקות הממשק כבר מוגדרות
בדיקות מוגדרות חלקית — מצב נפוץ: הבדיקות הוויזואליות רצות, אבל מכסות שירות אחד או כמה מסכים מרכזיים, ותמונות הייחוס נאספו ידנית. חלק מהצילומים התיישנו, סף ההפעלה מטושטש, ואת התוצאה קוראים 'בעין'.
הצעד הבא תלוי בשיעור הכיסוי ובמידה שבה תמונות הייחוס משקפות את מצב הממשק הנוכחי.
| מסלול | מתי מתאים | מגבלות ועלות המעבר |
|---|---|---|
| הרחבת כיסוי | תרחישי בסיס כבר ירוקים, צריך מצבים: חלונות מודאליים, רשימות ריקות וגדושות, שגיאות ולידציה | מספר הצילומים גדל — נדרשים קיבוץ לפי רכיבים וכללי סובלנות להבדלים |
| העברת הבדיקות לבנייה | את הבדיקות מריצים ידנית או כמשימה נפרדת אחרי השחרור | יש לייצב את הסביבה ולכבות אנימציות, ותמונות הייחוס יצטרכו להתקבל מחדש |
| בנייה מחדש מאפס | תמונות הייחוס התיישנו, יש יותר הבדלים מאשר התאמות, ואין אמון בתוצאות | מעבר מלא על מסכים ומצבים, אבל מסירים את חוב התראות השווא |
הגירת תמונות ייחוס היא החלק הכבד ביותר בכל אחד מהמסלולים: צילומים שנלקחו בסביבה אחרת, בגודל חלון אחר או עם גופנים אחרים יוצרים פערים על מקום ריק. ב-Chromatic הצילומים קשורים לבנייה, ולכן בשינוי מצב רינדור תמונות הייחוס מתקבלות מחדש — זו עבודה חד-פעמית, אבל צריך לתכנן אותה.
מתחילים במיפוי: אילו מסכים ומצבים מכוסים, אילו הבדלים מסומנים כמותרים, והיכן הספים כבויים. לפיו בוחרים מסלול ומקבעים נקודות שבהן הבדיקה הופכת לחובה לשחרור.
ספקות טכניים: רעש, יציבות, תמיכה
בדיקות ויזואליות נשברות לא בהרצה הראשונה, אלא בעשירית: הצילומים מתחילים ליפול בגלל תאריכים וסליידרים, והצוות מפסיק לתת בהם אמון. להלן חמישה ספקות שצפים לפני ההטמעה, ואיך אנחנו סוגרים אותם.
תוכן דינמי יוצר רעש — איך להתמודד?
בלוקים עם תאריכים, מונים, סליידרים ואווטארים מוסתרים במסכה — ההשוואה נעשית לפי שאר הפריסה. אנימציות וקרוסלות מושבתות ברגע הצילום, והנתונים מוזנים קבועים.
העיצוב מתעדכן לעתים קרובות — צריך לשכתב תמונות ייחוס ידנית?
לא. צילומים חדשים מתקבלים כגרסה חדשה של תמונת הייחוס ונכנסים לבדיקה יחד עם הקוד — רואים אילו שינויי עיצוב אושרו במודע ואילו עברו בטעות.
האם צריך סביבה נפרדת להרצות?
בדרך כלל מספיקה סביבה יציבה עם נתוני בדיקה קבועים וסט גופנים אחד, כדי שהצילום לא יהיה תלוי במחשב של המפתח. נתונים משירותים חיצוניים מוחלפים בתחליפים.
היכן נשמרות תמונות הייחוס ומה קורה איתן בעת יצירת ענפים?
תמונות הייחוס נמצאות במאגר לצד הקוד ומקושרות לקומיט, ולכן חזרה לאחור בענף מחזירה גם את הצילומים. היסטוריית הגרסאות נשארת שקופה: רואים מי ומתי אישר את השינוי.
מי מתחזק את זה אחרי המסירה?
אנחנו מוסרים קונפיגורציה, מוסכמות שמות וניתוח תקלות אופייניות, ומדריכים את הצוות. בהמשך ההרצות מנוהלות על ידי המהנדסים שלכם באופן עצמאי — או שאנחנו נשארים בתמיכה.
נדון במשימה ונחזור עם הערכה ותוכנית
תארו את המשימה — נחזור עם הערכה ותוכנית. כדי שהערכת היקף העבודה תהיה עניינית ולא 'לפי תחושה', מספיק לשלוח גישה למאגר, תיאור סביבות ורשימת עמודים קריטיים; את השאר נבהיר בשיחה.
- גישה למאגר במצב קריאה ופקודת בנייה — זה מספיק כדי להבין איך מופעלות הבדיקות;
- תיאור סביבות: היכן נפרסים ענפים, איזו סביבה נחשבת לסביבת שחרור ואיך נכנסים אליהן נתונים;
- רשימת עמודים ומצבים קריטיים: התחברות, רשימות ריקות וגדושות, שגיאות טופס, חלונות מודאליים, טקסטים ארוכים;
- כללי קליטה נוכחיים: מי מאשר שינויי ממשק ועל מה מסתכל לפני הפרסום;
- נקודות כאב ידועות: היכן הפריסה שונה בין דפדפנים ומה נשבר לרוב בעדכונים;
- בקשות לגבי דוחות: לאן לשלוח פערים ומי מטפל בהם ראשון.
בתשובה נשלח הרכב הכיסוי — אילו מסכים ומצבים תכסה הבדיקה הוויזואלית ואילו יישארו לבדיקה ידנית — סכמת שלבי הטמעת הבדיקות ותוכנית עבודה עם סדר קליטת התוצאה.
את הבדיקות מתקינים על Chromatic ומפעילים קודם כול בשירות אחד: מסירים רעש מבלוקים דינמיים, מסכימים על סף הפערים, ורק אחר כך מרחיבים את הכיסוי. כך התוצאה הראשונה מורגשת מהר, ואין צורך לשכתב את כללי הקליטה תוך כדי תנועה.







