אם אי פעם ניסיתם להריץ סט של בדיקות מובייל בוודאי התלבטתם האם להריץ את הבדיקות על מכשירים פיזיים או וירטואליים וכנראה שגם נתקלתם בכל הבאזז סביב חוות מכשירים. מאמר זה ינסה לעשות סדר בין הדברים ולהמליץ לכם על דרך מיטבית לפתור את סוגית השימוש בכלים השונים בבדיקות מובייל. נתחיל בסקירה של היתרונות והחסרונות של כל גישה: סימולטורים, מכשירים פיזיים וחוות מכשירים נדון בפתרונות הפרקטיים ביותר ונקנח בחומר למחשבה עתידית בתחום.
סימולטורים/אמולטורים
באופציה זו בדרך כלל בוחרים בשלבים הראשונים של פיתוח התוכנה (בהמשך המאמר תוכלו לקרוא על היתרונות והחסרונות הספציפיים של שימוש במכשירים וירטואלים). ישנם מספר הבדלים בין סימולטורים ואמולטורים, אך ההבדל אינו משמעותי לדיון במאמר זה. סימולטורים הם בדרך כלל למכשירי iOS בעוד אמולטורים נפוצים למכשירי אנדרואיד.
הטוב: כל קומבינציה של מכשיר/מערכת הפעלה נמצאת בכף ידכם (או על מסככם). אתם רוצים להריץ טסט על אייפון 7 עם iOS 12? אין בעיה, קונפיגורציה קטנה ואתם שם. כמובן שאופציה זו היא הכי זולה וזמינה. לא צריך לרכוש מכשירים חדשים או ישנים, לא צריך לתחזק אותם או לטפל בהם, לחבר אותם למחשב, להטעין אותם, לעדכן אותם ועוד.
בתמונה הבאה אפשר לראות כמה מכשירי iOS שונים זמינים לנו ברגע נתון ועוד ניתן להוריד מכשירים נוספים:
בדומה לכך, ניתן לראות שגם באנדרואיד ניתן לייצר קומבינציות רבות של מכשירים ומערכות הפעלה שונות:
הרע: לא משנה כמה טוב הסימולטור, מכשיר מסומלץ לעולם לא יתנהג כמו מכשיר אמיתי. במיוחד אם אתם בודקי תוכנה ברור לכם שהארכיטקטורה של מכשיר נייד ומחשב שונות בתכלית (למעט שבב ה-M1 של אפל בו נדון מעט בסוף) ולמעט בדיקות פונקציונליות בתנאי מעבדה, יהיה לנו קשה עד בלתי אפשרי לבדוק דברים מורכבים יותר כמו התנהגות של מכשיר על רשת סלולרית, או במיקומים גיאוגרפיים שונים.
המסובך: עבור בדיקות מכשירי iOS תזדקקו למחשב של אפל. מכשירים וירטואלים בדרך גוזלים לא מעט משאבים - מקום על הדיסק הקשיח, זכרון פנימי וכוח עיבוד לא מבוטל. לא כל מחשב יכול לעמוד בזה. יתרה מכך, המחשבים החדשים של אפל עם מעבד ה-M1 נכון להיום לא תומכים באופן מיטבי בסימולטור אנדרואיד (בניגוד למאקים מבוססי מעבדי אינטל[1]).
מחשבים אלו דווקא עושים משהו מעניין אחר.
אם נסתכל על הנתונים למטה, הנה מצב המעבד שלי לפני הפעלת מכשיר אנדרואיד וירטואלי, אפשר לראות שהוא נמצא בפחות מ-10% שימוש. כמו כן הזיכרון מנוצל באופן יחסית נמוך.
כאן ניתן לראות את מצב המעבד לאחר הפעלת הסימולטור של מכשיר pixel 3. ניתן לראות שהשימוש במעבד קפץ בכ-25%. השינוי בזכרון לא נראה שהיה משמעותי לעומת זאת
מכשירים פיזיים
כמעט בכל מקום שתקראו על בדיקות מובייל תגלו שההמלצה לבדוק אפליקציות על מכשירים אמיתיים היא האופציה המועדפת. לגישה זו יש יתרונות לא מבוטלים אך גם חסרונות בולטים. תוכלו כבר לנחש שזו האופציה היקרה ביותר והקשה ביותר לתחזוק.
הטוב: מכשיר אמיתי הוא המוצר הסופי בו מחזיק משתמש הקצה שלכם. על כן, אין דרך טובה יותר לבדוק את האפליקציה שאתם אמונים עליה מאשר על מכשיר אמיתי. תוכלו כך לחוות כמעט כל בעיה או תקלה שיחווה משתמש אמיתי. תוכלו לבדוק את האפליקציה בתנאים שונים, כולל לצאת עם המכשיר לשטח ולבדוק אותו במיקומים גיאוגרפיים שונים, לבדוק את צריכת הסוללה, שימוש באינטרנט אלחוטי וסלולרי ועוד. בניגוד לאופציה הקודמת, לא נזדקק כלל למשאבי המחשב ותוכלו לחבר את המכשירים למכונה חלשה יחסית שרק מריצה את הבדיקות האוטומטיות על המכשירים ישירות.
הרע: כל מי שהחזיק במשרד מעבדה של מכשירים פיזיים יודע שהם נתונים לבעיות שונות. לי קרה שהגענו בבוקר למשרד ובדקנו טסט אוטומטי שנכשל באופן גורף וכשנכנסנו למעבדה גילינו שלמכשיר הסלולרי שלנו התנפחה הסוללה והתחילה לנזול החוצה. במקרים אחרים היה עדכון תוכנה כפוי שסמסונג החליטה להוציא בדיוק בלילה בו הרצנו סט בדיקות חשוב לפני שחרור גירסה ששיבש לנו את כל הריצה האוטומטית. או שמסך האייפון החליט להנעל בלילה וכל מאה הטסטים שרצו נכשלו. יש עוד דוגמאות רבות כמובן.
המסובך: השימוש במכשירים פיזיים הוא כמובן יקר, שכן כדי לכסות כמות נכבדת של בדיקות על מכשירים שונים תאלצו גם לרכוש כמות לא מבוטלת של מכשירים, דבר שעלול במהרה להפוך לעסק לא זול. יתרה מכך, זמינות של מכשירים מסוימים מוגבלת בתקופות השקה או באזורים גיאוגרפיים שונים. ישנם סיבוכים רבים נוספים כמו למשל רכישה של חבילות גלישה למכשירים או מגבלות של היצרניות (בעיקר של אפל) בהתקנה של אפליקציות בשלבי פיתוח על מכשירים פיזיים. בדרך כלל תידרשו לערוך קונפיגורציות מייגעות ולהעזר בשירותים חיצוניים דוגמת test flight ו- fire base, שגם הם כרוכים בתשלום נוסף. מי שאי פעם ניסתה להשמיש אייפון להרצה של טסטים אוטומטיים באמצעות Appium יודעת כמה קשה ומפרך התהליך.
עיסוק בחקלאות מעולם לא היה משגשג כמו ייצור של חוות מכשירים. גישה זו באה לנסות ולפתור את הבעיות של הגישות הקודמות ולשלב ביניהם: לקחת מכשיר פיזי ולספק לנו אותו בתצורה וירטואלית. למעשה חוות המכשירים מחזיקות מכשירים פייזים ומספקות לנו גישה לדגם מסוים עם מערכת הפעלה מסוימת בתמורה לעלות חודשית לא גבוהה בדרך כלל.
הטוב: מלבד היתרונות שצוינו בפתיחה של פסקה זו נוכל למנות את העובדה שאנחנו לא זקוקים לרכישה של מכשירים רבים. כמו כן, התחזוקה והתפעול של המכשירים מנוהלים על ידי הצוות המקצועי של החברה המספקת את השירות. אין לנו כל מחויבות למכשיר ואם הוא מתקלקל נוכל לקבל גישה מיידית למכשיר אחר בעל נתונים דומים או זהים. ישנה יכולת לחלוק מכשירים בין חברי צוות שלא מצויים באותו משרד או אפילו באותה מדינה ועוד.
הרע: על כל הטוב הזה אנחנו משלמים בדרך כלל בביצועים איטיים יותר. כמו כן יש לנו הרבה פחות שליטה במכשירים. לא נוכל לקחת אותם לסיבוב בחוץ כדי לבדוק איך האפליקציה מתנהגת ברחוב עם האנטנות 5G למשל. השירות גם כרוך בתשלום קבוע והשימוש מוגבל בהתאם להסכם שלנו עם החברה.
המסובך: בדרך כלל הקונפיגורציה של כתיבת טסטים אוטומטיים למכשירים הנמצאים בענן מסובכת הרבה יותר. הניטור של תקלות במכשיר קשה יותר, בעיקר כשהסשן נגמר. יתכן שהמכשיר שהוקצה לנו לבדיקה שאותה הרצנו כבר לא זמין יותר וכשנריץ שוב נקבל מכשיר שאולי מכיל את אותם נתונים אבל עלול להיות שונה פיזית.
אז מה עושים?
בניתוח שלושת הגישות המובילות לבדיקות מובייל ראינו שאין מנצחים. בכל גישה יש יתרונות וחסרונות בולטים. אם בכל זאת נרצה המלצה אז אמליץ כאן על שילוב: בשלבים ראשוניים בלבד, בהם אנחנו מבצעים בדיקות פונקציונליות בסיסיות אין מניעה משימוש בסימולטורים. בשלב הבא, כדאי להשקיע בכל זאת במכשירים פיזיים ולהקים מעבדה מקומית. הקמת מעבדה כזו צריכה להיות מושכלת ושקולה, שלב זה יידון בהרחבה בפסקה הבאה. כמו כן, שימוש בחוות מכשירים מהווה תגבור משמעותי לכוח שלנו בכיסוי רחב של מגוון דגמים ומערכות הפעלה. על כן, הגישה הנכונה היא שילוב. כמובן שגישה זו תלוית משאבים וזמינות של העובדים בחברה שלנו.
במקרה של מכשירי iOS המלאכה קלה למדי שכן מרבית מכשירי ה-iOS הקיימים בשוק כבר מריצים את מערכת ההפעלה החדשה ביותר (iOS 14) - מעל ל-70 אחוזים מכלל האייפונים בשוק ומעל 80 אחוזים מהאייפונים שיוצרו ב-4 השנים האחרונות[2]. באנדרואיד המצב הרבה יותר מורכב. מרבית הטלפונים המצויים בשוק כלל לא מריצים את מערכת ההפעלה העדכנית ביותר (Android 11), למרות ההכרזות של גוגל על קצב אימוץ חסר תקדים, מדובר בפחות מ-10 אחוזים מכלל המכשירים המצויים בשוק. באנדרואיד גם קיימת הבעיה שכל יצרנית מוסיפה את השכבה שלה על מערכת ההפעלה, דבר שעלול לשנות את ההתנהגות של אפליקציות מסוימות גם על מכשירים בעלי אותה גירסה של מערכת הפעלה אך מגיעים מייצרניות שונות (למשל שיאומי מול וואווי). מה שכדאי לעשות במקרה כזה הוא להשקיע בניתוח והבנה של מיהו קהל היעד שלנו, למפות את המכשירים הפופלאריים בקרב הקהל הזה ולהשיג לפחות את ה- top 5 של הרשימה הזו כמכשירים פיזיים. כמובן שנוכל להעזר בשירותי הענן בכדי לעבות את הרשימה עליה נעבור, אך בניה של שלד אנדרואידי מתאים במעבדה שלנו הוא שלב הכרחי בטרם נפנה לשירותי הענן.
אם עד כה חשבנו שהאופציות היחידות שעמדו לרשותנו הן האופציות שהוצגו במאמר, כבר השנה אפל שחררה לשוק את המעבד החדש מתוצרתה - M1. מכיוון שמעבד זה הוא מבוסס ארכיטקורת ARM בו אפל משתמשת במכשירים הניידים שלה (אייפון ואייפד), הוא יכול להריץ באופן טבעי אפליקציות המיועדות למכשירים ניידים[3]. הפעילות הזו לא בשלה לחלוטין אך היא עלולה להוות תפנית מעניינת באופן בו אנחנו נבדוק את האפליקציות שלנו.
מעבר לכך, ראינו שאין גישה מנצחת, אך שאין מניעה מלהשתמש במכשירים פיזיים ולתגבר אותם בפתרונות נוספים. שירותי הענן תופסים תאוצה בשנים האחרונות והיכולות והמהירות שלהם משתנים (לטובה) כל הזמן. בסופו של יום אנחנו רוצים שהבדיקה שלנו תהיה כמה שיותר קרובה למשתמש הקצה ועלינו לעשות כל הניתן בכדי להגיע לתוצאה הזו.
לקריאה נוספתMobile Testing: Real Device Vs Simulator Vs Emulator Testing https://performancelabus.com/mobile-testing-device-simulator-emulator/
Everyone talks about pros, lets talk about cons of MOBILE DEVICE FARM!! https://www.linkedin.com/pulse/everyone-talks-pros-lets-talk-cons-mobile-device-farm-virender-singh/
Why are Device Farms so important for Software Testing? https://www.browserstack.com/guide/importance-of-device-farms
Device Farm vs. DIY vs. Testing Platform https://www.perfecto.io/blog/device-farm
|
[1] https://androidstudio.googleblog.com/2020/12/android-emulator-apple-silicon-preview.html
[2] https://www.geektime.co.il/ios-14-and-android-11-adoption-rate/
[3] https://www.howtogeek.com/679982/macs-will-run-iphone-and-ipad-apps-heres-how-it-will-work/