בדיקת זמן אמת

**בדיקת זמן אמת** (real time testing) היא סוג של בדיקות תוכנה שנכתבו במיוחד לצורך בדיקת מערכות זמן אמת. מערכות זמן אמת הן מערכות שיש אילוצי זמן על תגובות שלהן, ומערכות שהן בעלות התנהגות לא דטרמיניסטית, לדוגמה מערכת שליטה של תנועת מטוסים או מערכת מוניטור רפואית. על מנת לעמוד באילוצי הזמן, מתזמנות מערכות אלו את המשימות שלהן. 

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

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

# **בדיקת המשימה**. כל משימה נבדקת בנפרד בדרכים המקובלות של בדיקה סטטית (static analysis). מטרת השלב הזה היא אך ורק למצוא שגיאות לוגיות או תחביריות בתוכנית. התנהגות התוכנה ועמידתה באילוצי הזמן אינם נבדקים בו.
# **בדיקת התנהגות**. בשלב זה נעשה שימוש במודלי מערכת ובכלי בדיקה אוטומטיים, שמדמים התנהגות של מערכת זמן אמת. 
# **בדיקה של מספר משימות**. לאחר שכל משימה נבדקה בנפרד, ונמצאה נקייה משגיאות בקוד ומבעיות מבחינת התנהגות המערכת, נבדקת עמידת המערכת באילוצי הזמן כאשר כמה משימות פועלות במקביל. שלב זה נועד למצוא שגיאות בתקשורת, ומשימות א-סינכרוניות נבדקות עם פרמטרים שונים .
# **בדיקת המערכת**. בדיקת החיבור בין התוכנה והחומרה, ובדיקת המערכת בכללותה, כדי למצוא שגיאות שנובעות מהחיבור בין החומרה לתוכנה.

## כלים לבדיקת מערכות זמן אמת
### MSC
*[[Message Sequence Chart]]s* זה תקן בינלאומי מקובל לקבלת דרישות. תקן זה מספק שפה דו־ממדית בצורה ציורית המסבירה את הדרישות דרך תרחישי מקרה.
ממוזער|דוגמה ל-MSC

### SDL
*[[Specification and Description Language]]* זה תקן בתחום של עיצוב וניתוח שעוזר בכתיבת דרישות בשפה חד משמעית שלא ניתנת לפירוש בשני פנים ועוזרת לתיאור מערכות מבוזרות. תקן זה תומך בדרישות של מערכות מורכבות ומיושם בצורה רחבה בכל מיני תחומים מתקשורת ואוטומציה ועד פיתוח מערכות כלליות.

### TTCN
*Testing and Test Control Notation* זה תקן בינלאומי רק לשפת בדיקות. מספק יישום רחב יותר בהשוואה לתקנים הקודמים שלו שמתמקדים רק בפרוטוקולים של OSI

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

על מנת לקלוט את מאפייני הזמן של המערכת אותה, אנו בודקים באופן מדויק וכדי להבטיח שעומדים בדרישות ובמודלים שבהם משתמשים ליצירת מידע מתוזמן אשר ניתן לבדיקה, יש צורך שהשפה עצמה (TTCN-3) תהיה מובנת ותכיל עם תחביר עשיר במודלי זמן.

### TTCN-3
#### רקע
TTCN-3 הוא תקן בינלאומי היחידי לשפת בדיקות שזמין כעת. לפני התקן הזה, גרסאות הקודמות של TTCN היו עם פונקציונליות מוגבלת ועם תחום מוגבל רק לפרוטוקולי OSI. אבל התקן הזה, הוא גרסה מתקדמת ובעל יישום רחב ומקיף.
מאפייני התקן:
*יכולת לתאר בדיקות דינמיות מתאימות
*פעולות עבור תקשורת מבוססת הודעות ומבוססת פונקציות
*יכול לתאר מידע ותבניות עם מנגנון התאמה רב כוח
*אפשרות לקבוע את סוג המשתנה וערכו באופן דינמי
*יכולת טיפול וקביעת ערך של תוצאת בדיקה
*מנגנוני בחירת מקרי בדיקה ואפשרות להשמת פרמטרים לחבילות בדיקה

הסיבה לשימוש בתקן זה לצורך בדיקת מערכות זמן אמת הוא בגלל שעוני העצר (timers) שלו. שעוני העצר האלו מוגדרים בפונקציות של חבילות הבדיקה. לא קיים שימוש בשעוני עצר באופן גלובלי בTTCN3. הפעולות שאפשר לעשות עם שעוני עצר אלו הם להתחיל את השעון, לעצור את השעון ולבדוק אותו.
טכנולוגיית סמנטיקה של תצלום-הבזק (Snapshot Semantics) היא טכנולוגיה בתקן TTCN3 (וגם בTTCN2), שבעזרתה מתמודדים עם העברת מסרים בזמן תקשורת בין מערכות או כאשר בודקים מימוש. כאשר מתקבלת סדרה של תגובות על ידי המערכת, תצלום-הבזק (snapshot) נלקח והתגובות נשמרות לפי הסדר הגעתן. כך, שכל תצלום-הבזק הוא תמונת מצב מרגע התצלום האחרון ועד עליו. 
אבל טכנולוגיה זו לא יעילה עבור חלק מאירועים היות שהיא עלולה לפספס חלק מהמידע כאשר נלקח התצלום. אירועים מסוימים מתבצעים בזמן תהליך ההקלטה ולא בזמן שעושים את התצלום, אירועים כאלו לא ניתן לעבד. בנוסף, אם ציוד ההקלטה אינו מספיק מהיר, הוא אינו יכול להתקשר עם המערכת אשר נמצאת תחת בדיקה. מקרה שכזה יכול להוביל לשגיאות בזמן הבדיקה.
לדוגמה PragmaDev מספקת כלי לפיתוח העומד בתקן TTCN-3. בנוסף, כלי זה מספק גם Model driven testing וגם Continuous integration

## ראו גם
* בדיקות תוכנה

## הערות שוליים

קטגוריה:בדיקות תוכנה
קטגוריה:תוכנה
קטגוריה:טכנולוגיית זמן אמת