האנציקלופדיה לבדיקות | קובי יונסי

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

בחלק מהמערכות, התנהגותה הנכונה של המערכת תלויה לא רק באירוע המתרחש בזמן אמת, כי אם גם באירועים שהתרחשו עד כה. מדובר בעצם במערכות בעלות התנהגות תלוית-מצבים.

שימוש

טכניקת החלף מצבים שימושית בכל תוכנה שיש בה מצבים מוגדרים ואירועים שיכולים ליצור מעברים בין המצבים הללו (למשל: שינויי סטטוס וכד')

הטכניקה יכולה להיות בשימוש בכל רמות הבדיקה ויכולה להיות מאוד רלוונטית במערכות משובצות, מערכות Web וכל מערכת שמכילה טרנזקציות שמשתנות.

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

  1. דיאגרמות מעבר בין מצבים מסוג STD (State Transition Diagrams)

שמציגות את כל המצבים האפשריים בתוכנה, כיצד ניתן להיכנס למצב, לצאת ממנו ולעבור בין מצבים אחרים. הדיאגרמה תתייחס למעברים תקפים  (Valid Transitions)

  1. טבלאות מצבים אשר מאפשרות לבודק להציב בטבלה את כל המעברים התקפים והלא תקפים (Valid and Invalid Tranisions) באופן זה הטבלה לוקחת בחשבון גם את מצבי ה"לא יכול לקרות" ו"לא צריך לקרות".

 

כיצד בונים דיאגרמת מצבים?

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

דוגמא לדיאגרמת מצבים ברמזור:

מתוך הדיאגרמה קל לנו לעצב מערך של בדיקות פונקציונליות כאשר הכללים הם פשוטים:

  • יש לעבור על כל מצב שמופיע בתרשים
  • לכסות כל מעבר אפשרי בתרשים
  • לוודא שאין לנו מצבים שלא ניתן להגיע אליהם או לצאת מהם

 

רמות כיסוי מצבים

קיימות מספר רמות כיסוי לעצי מצבים:

  • 0-Switch – בדיקות מעבר יחיד בין מצב אחד למצב אחר (חץ אחד)
  • 1-Switch – בדיקות 2 מעברים (2 חיצים) בין כל המצבים
  • 2-Switch – בדיקות 3 מעברים (3 חיצים) בין כל המצבים
  • N-Switch – בדיקת (N-1) מעברים בין כל המצבים האפשריים מקצה לקצה

(מנק' ההתחלה לנק' הסיום)

 

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

 

טבלאות מצבים

 

לרוב, דיאגרמות STD יציגו רק מעברים של אירועים חוקיים במצב נתון כמו בדוגמא של הרמזור. לעומתם טבלאות של מעבר בין מצבים מאפשרות לך כבודק, לעקוף מגבלה זו על ידי שילוב של כל מצב מוכר עם כל שילוב של אירוע/תנאי אפשרי שעלול להתרחש וכך תוכל לחשוף גם מצבי בדיקה שליליים

וגם מצבים שאין להם מסלול סופי ואז יש לך פוטנציאל גבוה לתקלה.

דוגמא לטבלת מצבים במערכת ניהול תקלות:

לפנינו 24 מצבי בדיקה, 6 מתוכן חוקיות והשאר לא חוקיות.

 

אתגרים

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

יש לקבוע במהלך התכנון איזה רמת כיסוי מתבקשת כשכיסוי של 100% יכלול ביקור בכל מצב ומצב אפשרי. לעיתים קרובות מהלך כזה יצריך מאיתנו לחזור שוב על אחד או יותר מהמעברים כמו בדוגמה שלפנינו:

כאשר כיסוי של   0 - Switch יצריך מאיתנו את המסלול הבא: A, B, E, B, C, F, D

 

לסיכום

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

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