Table of Contents
ההתרחבות המהירה של האינטרנט של הדברים (IoT) הציגה מורכבות חסרת תקדים במערכות משובצות.מכשירים שפעם פעלו בבידוד מתקשרים כעת על רשתות, עיבוד נתונים בזמן אמת, וביצוע פונקציות קריטיות בתחומים כגון בריאות, רכב, אוטומציה תעשייתית, ותשתיות חכמות. הבטחת שיטות IoT, בטיחות ואבטחה של מכשירים אלה דורשות בדיקות קפדניות.
מדוע בדיקות אוטומטיות הן קריטיות למכשירים של IoT
מכשירים IoT פועלים בסביבות שהם לעתים קרובות בלתי צפויים ומשתנים כל הזמן.תנודות טמפרטורה, הפרעה אלקטרומגנטית, שקיפות רשת, והפרעות כוח הם רק כמה מן התנאים בעולם האמיתי שיכולים לחשוף תקלות מאוחרות.בניגוד ליישומים תוכנה מסורתיים, מערכות משובצות IoT הן קבוצות צמודות למערכת החומרה שלהם - באג בקושחה יכול לגרום נזק פיזי או סכנות בטיחות.
אתגרים ייחודיים ל-IoT
כמה מאפיינים של מערכות IoT לבצע בדיקות אוטומטיות קריטיות במיוחד.קודם, מגבלות משאבים חמורות: מיקרובקרים לעתים קרובות יש זיכרון מוגבל, כוח עיבוד, תקציבי אנרגיה, כלומר בדיקות יש לתכנן ביעילות מבלי להפריע לפעולה של המכשיר.שני, דרישות בזמן אמת דורשות התנהגות רדיאלית תחת מגבלות תזמון קפדניות - בדיקות אוטומטיות WAN יכולות למדוד בדיוק את זמני התגובה ולזהות.
יתרונות מרכזיים של בדיקות אוטומטיות בפיתוח IoT
היתרונות של השקעה בבדיקות אוטומטיות הם משמעותיים ולהגדיל את כל מחזור חיי המוצר.
- (FLT:0) יעילות: סוויטות מבחן אוטומטיות יכולות לבצע מאות או אלפי מקרים של מבחן בין לילה - או אפילו תוך דקות כאשר משולב לתוך צינור CI. זה משחרר מהנדסים להתמקד בפיתוח תכונה ו debugging מורכב ולא בדיקות ידניות חוזרות.
- (FLT:0) ,Consistency: 1FLT:1 כל בדיקה אוטומטית פועל באותה צעדות באותו סדר, ביטול יכולת אנושית. מבחנים פלקי (אלה שעוברים לסירוגין או נכשלים) קל יותר לזהות ולתקן כאשר התוצאות ניתנות לשיפוץ.
- (FLT:0Coverage:FLT:1 אוטומציה מאפשרת בדיקות של ממשקים חומרה-תוכנות, תנאי גבול, נתיבי טיפול בשגיאות, ובדיקות סיבולת ארוכות טווח כי יהיה בלתי מעשי לביצוע באופן ידני.זה גם תומך בבדיקת רגרסציה: בכל פעם שקוד או שינויים בחומרה, ניתן לבצע מחדש סוויטות שלמות כדי להבטיח ששום דבר לא יישבר.
- (FLT:0) גילוי מוקדם: ⁇ FLT:1 , מציאת באג במהלך שלב העיצוב או הפיתוח עולה חלק ממה זה יהיה לתקן לאחר הפריסה, במיוחד כאשר עדכוני שדה מוגבלים או בלתי אפשריים.בדיקות אוטומטיות לרוץ על כל מבצע או למשוך בקשה לזהות רגרסנס באופן מיידי, למנוע זיכרון יקר וכשלונות שדה.
- (FLT:0) אחריות והתאמה: IEC 62304, יישומים רבים של IoT (מכשירים רפואיים, רכב, בטיחות תעשייתי) כפופים לתקנות כגון ISO 13485, IEC 62304, או ISO 26262. בדיקות אוטומטיות יוצרות יומני ודיווחים המשמשים כראיות לאימות יסודי, פשטות ביקורת והסמכת.
המונחים: a better system
בניית מסגרת בדיקה אוטומטית עבור מערכות IoT משובצות דורש שילוב של כלי חומרה ותוכנה אשר יחד סימולציה תנאים בעולם האמיתי ולוודא הן התנהגויות חומרה ותוכנה. הרכיבים הבאים יוצרים את עמוד השדרה של פתרון חזק.
Hardware-in-the-Loop (HIL) Testing
(הופנה מהדף LT) ,0 (Hardware-in-the-loop (HILBA)) (HILIR)) הם בדיקות Simlinks 1:1 המקשרות את המכשיר הפיזי תחת בדיקה (DUT) לסביבה סימולציה אשר מחקה חיישנים, פועל וממשקי רשת: הסימולטור מייצר אותות חשמליים ריאליסטיים (V) כגון: LTF2, רמות מתח, , , , , , , , , , , , , קידוד, , , , PWMGateGateowFDV, , , , , , , , , , , , , , , , , , , , , , , , , סימולפורמגלמגלממותגים, יכול בדרך כלל, , , , , , , , יכול בדרך כלל, ⁇ , , ⁇ ⁇ ⁇ ⁇ ⁇ , ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇
Software-in-the-Loop (SIL) ו- Model-in-the-Loop (MIL)
לפני חומרה זמינה, בדיקות תוכנה-in-the-loop (SIL) מאפשרות למפתחים לפעול קושחה משותפת על סימולציה של מעבד היעד (באמצעות QEMU, Ranode, או סימולטורים מסחריים כמו IAR C-SPY) זה מאפשר בדיקות מוקדמות של אלגוריתמים, מחסניות תקשורת, ולוגיקה יישום ללא חומרה פיזית.מודל-in-In-the-the-loop (MIL) עובר צעד נוסף על ידי בדיקות מערכת ההפעלה עצמה באמצעות שיטות פיתוח של מודלים כגון שיטות פיתוח של SClinks.
שילוב ואספקה (CI/CD)
[] מסגרת בדיקה אוטומטית מודרנית משלבת בקפידה עם צינורות CI /CD.כאשר מפתחים דוחקים שינויים בקוד, הצינור בונה באופן אוטומטי את הקושחה, מפעילה חבילת יחידות ובדיקות אינטגרציה (כנראה על חומרה חיקוי), ואם מצליחים, פריסת פריטים לבדיקות נוספות של HIL: סימולציות (FLT:0JenkinsFLT:1,LT2GLabir:
ניהול בדיקות ודיווח
יצירת דוחות ברורים, מעשיים חיוני למעקב אחר התקדמות וזיהוי כשלים.כלי כמו Robot Framework, pytest, Ceedling (עבור C / C + ++ מוטבע פרויקטים), ו-Google Test לספק ניהול תיק מובנה.תוצאות ניתן לפרסם עבור לוחות נתונים (למשל, FLT:0) או מאוחסנים במאגרי מידע לניתוח היסטורי.
סוגים של בדיקות אוטומטיות עבור מערכות IoT Embedded
אסטרטגיה יעילה לבדיקת אסטרטגיות מכסה רמות מרובות של המערכת, מפונקציות בודדות להתנהגות המערכת מקצה לקצה.סוגי בדיקה אלה מאורגנים בדרך כלל פירמידת בדיקה המותאם עבור מערכות משובצות.
מבחן יחידה
בדיקות יחידה לאמת את החלקים הקטנים ביותר של התוכנה - פונקציות או מודולים - בבידוד.עבור מערכות משובצות, זה לעתים קרובות אומר בדיקות לוגיקה עסקית ופונקציות אלגוריתם במחשב מארח (התועדה לקוד אם יש צורך) באמצעות לעגים או מגמגמות עבור אבסטרומנטציה חומרה.
בדיקות אינטגרציה
בדיקות אינטגרציה לאמת כי מודולים מרובים של תוכנה או רכיבי חומרה לעבוד יחד כמתוכנן.לדוגמה, לבדוק את התקשורת בין נהג חיישן לבין לולאה האירוע הראשי, או בין ערימה הרשת ושכבת היישום.מבחנים אלה דורשים לעתים קרובות סביבה חומרה או מדומה המספקת קלטות מציאותיות. אינטגרציה בדיקות איטיות יותר מאשר בדיקות יחידה אבל לספק ביטחון גבוה יותר באינטראקציות המערכת.
בדיקות מערכת (סוף-סוף)
בדיקות מערכת לאמת את המכשיר המלא לדרישותיו, בדרך כלל בסביבה HIL או חסימה הכוללת את החומרה בפועל לפחות כמה פריפריה בעולם האמיתי.הם מכסים תרחישים כמו רצפיחול, עדכוני אנט, היתוך, היתוך, ניהול חשמל (למשל, מחזורי שינה / ווייק), וחיבור מחדש של רשתות אלה הם התרחישים הריאליסטיים ביותר אך גם יקרים ביותר לתחזוקה, ולכן הם לעתים קרובות פחות או יותר, לפני שחרורים).
בדיקות רגרסציה
בדיקות רגרסיה הן תת-קבוצה של יחידות, שילוב ובדיקות מערכת אשר מופעלות מחדש בכל פעם שקוד משתנה כדי להבטיח פונקציונליות קיימת נשמר.בדיקות רגרסיה אוטומטיות היא הדרך היעילה ביותר למנוע באגים חדשים מצמרר פנימה. חבילת רגרסיה מקיפה צריכה לכסות את כל הנתיבים הקריטיים ואת מקרי הקצה הידועים.
בדיקות אבטחה
(התקני IoT הם מטרות עיקריות להתקפה, ובדיקות אבטחה אוטומטיות הופכות לחובה.זה כולל בדיקות סחרחורת של שירותי רשת, ניתוח סטטי של קושחה (SAST), ניתוח דינמי (DAST) עם כלי מכשור, ופגיעות.כלי כמו FLT:0HonggfuzzeurFLT:1, FLT:2AFL + + + LT 3,LT:4ASPREFREFREFREFREFREFREFREFREFREFREFREFREFREFREFREFER LT 5) LT, LT, LT, LT, LT, LT 5 LT, LT, LT, LT, LT, LT, LT, LT 5 LT, LT LT LT LT LT LT , , LT , LT LT5 , , , , , , LT5 , ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇ ⁇
יישום בדיקות אוטומטיות במחזור הפיתוח
כדי לממש את היתרונות המלאים של אוטומציה, בדיקות חייב להיות ארוג לתוך תהליך הפיתוח מההתחלה - תרגול המכונה לעתים קרובות שינוי-שמאל בדיקות. במקום להשאיר בדיקות עד לאחר יישום, צוותים צריכים לכתוב מפרטי מבחן לפני הקוד, ולאחר מכן ליישם בדיקות לצד הקוד, ולרוץ אותם ברציפות.
שלב 1: דרישות מוכחות וקבלה
כל דרישה פונקציונלית צריכה להיות קריטריונים קבלה מקבילים שניתן לאמת באופן אוטומטי.לדוגמה, "המכשיר ידווח על נתוני חיישן לפחות פעם אחת לשנייה" הופך למבחן ביצועים שבדק את שיעור הנתונים. דרישות אבטחה (למשל, "שיחות יישמרו") ניתן לאמת על ידי חוקי ניתוח סטטיים.
שלב 2: הגדר קו צינור CI עם חומרה ו- Simulated Targets
[המערכת של CI כדי לבנות קושחה עבור כל גרסאות חומרה של מטרה, ולאחר מכן להפעיל יחידות ובדיקות אינטגרציה על חומרה מדומה (למשל, QEMU או רנודה מבוססת סביבה) עבור משוב מהיר. Deploy מוצלח בונה למעבדת HIL (או rack of Test Devices) עבור בדיקות מעמיקות יותר ברמת המערכת.
שלב 3: התחל עם עבריינים קריטיים ולהרחיב
החל על ידי בדיקות אוטומטיות עבור התכונות החיוניות ביותר: רצף ה-חול, קריאה של חיישן, בקרה מוטורית, ההפעלה תקשורת וכו 'כפי שהפרויקט בוגר, להוסיף בדיקות לטיפול שגיאות, זריקת תקלות ומקרים פינה. עדיפויות בדיקות שמצאו באגים היסטוריים או זה מכסה דרישות רגולטוריות.
שלב 4: לשמור ובדיקת הטריג ברציפות
בדיקות אוטומטיות הן רק שימושיות אם הן אמינות. בדיקות פלמקי - אלה שלא נכשלים לסירוגין בשל תזמון או גורמים סביבתיים - יש לזהות ולקבוע או לתקן או לתקן. לטפל בכישלונות של מבחן ברצינות כמו כשלי קוד הייצור: לחקור שורש גורם מיידי לעדכן את חבילת הבדיקה כדי למנוע בעיות חוזרות.המשך קוד הבדיקה וחיוב, כמו גם לקרוא על ידי חברי צוות בעתיד.
הפרקטיקה הטובה ביותר להצלחה
להימנע ממכשולים נפוצים על ידי ביצוע שיטות אלה מוכחות הטוב ביותר.
- (FLT:0)Start Small and Iterate: FIRLT:1) אל תנסה לאוטומט הכל בבת אחת. להתמקד בכמה בדיקות בעלות ערך גבוה המכסות את הפונקציות הקריטיות ביותר.
- (FLT:0) בדיקות עיקריות כ-First-Class Artifacts: FLT:1 Test Code צריך להיבדק, גרסה, ו refactored לצד קוד הייצור. Outdated בדיקות כי כבר לא לשקף התנהגות מערכת ליצור בלבול ואמון ראדודה.
- (FLT:0) חישוב תנאים אמיתיים: FLT:1ir להשתמש קלטות מציאותיות - כולל רעש, חיבורים לסירוגין וערכים קיצוניים - כדי לחשוף נושאים שעלולים להופיע בסביבה מעבדה נקייה.
- (FLT:0) תוצאות ו- Logs:FIRLT:1 כל מבחן לרוץ צריך לייצר יומן מוקרן שלוכד את הפלטים של מכשירים (קונסולת אוויר, GPIO, צריכת חשמל) לשמור רשומות היסטוריות כדי לעקוב אחר מגמות ולתאם עם שינויים.
- (FLT:0) Invest in Hardware Test Rigs:BuildFLT:1) עבור מוצרים עם תצורה פיזית רבים, ליצור תיקונים מודולריים שניתן להחליף במהירות.אוטומטיים את החיבור ואת רכיבה על חשמל של מכשירים באמצעות הודעות, פומפאו, או ספסל אספקה נשלט על ידי תסריט הבדיקה.
- (FLT:0) הוצאה להורג במקביל: FLT:1 היכן שניתן, להפעיל בדיקות על מכשירים מרובים בו זמנית כדי להפחית את זמן מחזורי הכולל. השתמש בתוויתי הסוכן CI כדי להפיץ בדיקות על פני כמה נקודות HIL.
אתגרים וכיצד להתגבר עליהם
גם בתכנון קפדני, הצוותים יתמודדו עם מכשולים.כאן הם כמה אתגרים משותפים ופתרונות פרגמטיים.
אפשרויות ל-Availability and Fidelity
בדיקה על חומרה אמיתית היא חיונית אך יקרה וגלואית מורכבת.טיפוס מוקדם עשוי להיות מועט. SolutionFLT:1: השתמש בסימולציה (SIL/HIL) עבור בדיקות מוקדם ובינוני, שמירה על חומרה אמיתית עבור אימות סופי. להשקיע במעבדה משותפת צוותים, אולי עם מערכת הזמנה.
בדיקות פלקי עקב תזמון או שינוי בעולם
(הופנה מהדף תזמון רגיש לתנודות תזמון שנגרמו על ידי הפרעות, תזמון מערכת ההפעלה או שקיפות רשתית (מבחןים שמבוססים על תזמון מדויק יכול להיכשל ללא משפט:0SolutionFLT:1: 3) בדיקות עיצוב עם מגבלות סבירות ורטיבות, אך מעקב אחר שיעורי הכשל (pipcreicial) הוא למעשה מבחן: אם טיפול ב-DVicialiFacial (T) הוא באמת קבוע בבדיקה של טיפול ב-D2 (T) הוא באמת, אם הוא באמת, אם הוא באמת, אם הוא מבחן LTFaciald).
מבחן ניהול הסביבה
כל פעולת מבחן עשויה לדרוש מצב מכשיר ספציפי, תצורה או מצב רשת.ניקוי מצב בין בדיקות לעתים קרובות להתעלם.FLT:0SolutionFLT:1: איפוס המכשיר לבסיס ידוע לפני כל בדיקה (למשל, מחזור כוח, פלאש תמונה חדשה, NVM). להשתמש סביבות מקוטבות עבור בקר הבחינה ונקודות גישה ייעודיות Wi-Fi או חוט אחורי לבדיקות רשת.
המונחים: Target
הפעלת סוכני בדיקה אוטומטיים ישירות על המכשיר בדרך כלל בלתי אפשרי בשל זיכרון מוגבל.0. [SolutionphFLT:1: Offload Test Logic to a Host PC שמתקשר עם המכשיר באמצעות פרוטוקול תקשורת (serial, UDP, MQTT) המכשיר רק צריך לחשוף קובצי מבחן (למשל, retriiving מצב פנימי, הגדרת תנאים) כי המארח יכול להשתמש.
דוגמאות לבדיקות IoT אוטומטיות
כמה תעשיות יישמו בהצלחה מסגרות בדיקה אוטומטיות עבור מכשירי IoT משובצים.
(ב) [ה]:0] קטר (ADAS ו Telematics): ⁇ 1:1 יצרני רכב משתמשים בהגדרות HIL בקנה מידה גדול כדי לבחון פונקציות נהיגה אוטונומיות.הקשים האלה מדמיימים מכ"ם, מצלמה וקלטי לידר, המאפשרים לאלפים קילומטרים של נסיעה וירטואלית לרוץ בין לילה.
(FLT:0) מכשירים רפואיים (המכונים Infusion Pumps): 1FLT:1 מכשירים רפואיים IoT דורשים אימות קפדני לציית לתקנות ה- FDA.בדיקות אוטומטיות לאמת את שיעורי המסירה של תרופות, תנאים מדאיגים ואבטחת רשת.
(FLT:0) Smart Home (החומרים והחיישנים): יצרני תרמוסטטים חכמים משתמשים בבדיקות אוטומטיות כדי לאמת קישוריות בענן, שילוב יישומים ניידים ואלגוריתמים חיסכון באנרגיה.בדיקה בחוות עם עשרות מכשירים לרוץ בין לילה כדי לתפוס תוקפנות בעדכוני קושחה לפני שיגלגלו אותם מעל האוויר.
מסקנה
יישום מסגרת בדיקה אוטומטית עבור חומרה ותוכנה משובצת IoT כבר אינו אופציונלי - זה הכרחי תחרותי. המורכבות של מערכות IoT מודרניות, בשילוב עם לחץ לספק מהר יותר ובטוח יותר, דורש שינוי מבדיקת ידני אד-הוק לגישה חדשנית, חוזרת על עצמה, תוך שילוב של חומרה-in-the-loops, כלי סימולציה, ו / צינורות CICD, יכול להשיג כיסוי מקיף, מוקדם, קליטת פתרונות אבטחה, תוך כדי הפעלת לחץ חזק יותר, כמו גם על פני מיפוי יעיל יותר, כמו גם על פני מיפוי יעיל יותר, כמו גם על פני מיפוי אוטומטי, כמו גם פתרונות פיתוח עצמי.