טכניקת החלף מצבים, היא טכניקה רבת עוצמה ממשפחת בדיקות הקופסה השחורה. בטכניקה זאת אנו בודקים את היכולת של התוכנה להיכנס ולצאת ממצב נתון דרך מעברים חוקיים ולא חוקיים.
בחלק מהמערכות, התנהגותה הנכונה של המערכת תלויה לא רק באירוע המתרחש בזמן אמת, כי אם גם באירועים שהתרחשו עד כה. מדובר בעצם במערכות בעלות התנהגות תלוית-מצבים.
שימוש
טכניקת החלף מצבים שימושית בכל תוכנה שיש בה מצבים מוגדרים ואירועים שיכולים ליצור מעברים בין המצבים הללו (למשל: שינויי סטטוס וכד')
הטכניקה יכולה להיות בשימוש בכל רמות הבדיקה ויכולה להיות מאוד רלוונטית במערכות משובצות, מערכות Web וכל מערכת שמכילה טרנזקציות שמשתנות.
ניתן לעקוב אחרי מצבי בדיקה בטכניקה זאת באמצעות שתי שיטות:
שמציגות את כל המצבים האפשריים בתוכנה, כיצד ניתן להיכנס למצב, לצאת ממנו ולעבור בין מצבים אחרים. הדיאגרמה תתייחס למעברים תקפים (Valid Transitions)
כיצד בונים דיאגרמת מצבים?
דוגמא לדיאגרמת מצבים ברמזור:
מתוך הדיאגרמה קל לנו לעצב מערך של בדיקות פונקציונליות כאשר הכללים הם פשוטים:
רמות כיסוי מצבים
קיימות מספר רמות כיסוי לעצי מצבים:
(מנק' ההתחלה לנק' הסיום)
ניתן לתכנן בדיקות שיכסו רצף אופייני של מצבים, להפעיל את כל המצבים יחד, לבדוק רק את המעברים בין מצב אחד למשנהו או לנסות לגרום למעברים בין מצבים שאינם תקפים.
טבלאות מצבים
לרוב, דיאגרמות STD יציגו רק מעברים של אירועים חוקיים במצב נתון כמו בדוגמא של הרמזור. לעומתם טבלאות של מעבר בין מצבים מאפשרות לך כבודק, לעקוף מגבלה זו על ידי שילוב של כל מצב מוכר עם כל שילוב של אירוע/תנאי אפשרי שעלול להתרחש וכך תוכל לחשוף גם מצבי בדיקה שליליים
וגם מצבים שאין להם מסלול סופי ואז יש לך פוטנציאל גבוה לתקלה.
דוגמא לטבלת מצבים במערכת ניהול תקלות:
לפנינו 24 מצבי בדיקה, 6 מתוכן חוקיות והשאר לא חוקיות.
אתגרים
בטכניקה זאת קביעה ואיתור של המצבים השונים יכולה להיות משימה קשה במידה והתוכנה מורכבת ומכילה מסכים רבים ומצבים מגוונים.
יש לקבוע במהלך התכנון איזה רמת כיסוי מתבקשת כשכיסוי של 100% יכלול ביקור בכל מצב ומצב אפשרי. לעיתים קרובות מהלך כזה יצריך מאיתנו לחזור שוב על אחד או יותר מהמעברים כמו בדוגמה שלפנינו:
כאשר כיסוי של 0 - Switch יצריך מאיתנו את המסלול הבא: A, B, E, B, C, F, D
לסיכום
טכניקת החלף בין מצבים היא טכניקה רבת עוצמה לבדיקות קופסה שחורה.
הטכניקה מאפשרת לעלות בצורה מיטבית על בעיות בתהליכי הזרימה של המערכת ופערי אפיון הקשורים לתהליכים העסקיים שלא הוגדרו או שחסרה להם תוצאת סיום.