בדיקות ביצועים של אפליקציה לנייד

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

פיתוח ותמיכה בכל סוגי היישומים הניידים:

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

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

השירותים שאנו מציעים
מציג 1 מתוך 1כל 1734 השירותים
בדיקות ביצועים של אפליקציה לנייד
מורכב
~3-5 ימים

הכישורים שלנו:

שאלות נפוצות

העבודות האחרונות

  • פיתוח אפליקציית מובייל עבור FEEDME
    פיתוח אפליקציית מובייל עבור FEEDME
    971
  • פיתוח אפליקציית מובייל עבור XOOMER
    פיתוח אפליקציית מובייל עבור XOOMER
    869
  • פיתוח אפליקציית מובייל עבור RHL
    פיתוח אפליקציית מובייל עבור RHL
    1289
  • פיתוח אפליקציית מובייל עבור ZIPPY
    פיתוח אפליקציית מובייל עבור ZIPPY
    1144
  • פיתוח אפליקציית מובייל עבור Affhome
    פיתוח אפליקציית מובייל עבור Affhome
    1076
  • פיתוח אפליקציית מובייל עבור חברת FLAVORS
    פיתוח אפליקציית מובייל עבור חברת FLAVORS
    678

בדיקת ביצועים: היכן אפליקציית המובייל מאבדת משתמשים

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

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

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

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

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

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

מה נותן בדיקת ביצועים ואילו מצבי בדיקה קיימים

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

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

בדיקת עומס: התנהגות תחת שיא

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

ניטור בפרודקשן: מדדי תגובה במכשירים חיים

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

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

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

כיצד אנו מבצעים בדיקות ביצועים: שלבי העבודה ההנדסית

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

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

  1. ביקורת המצב הנוכחי. מריצים את מסלולי המשתמש המרכזיים, אוספים מדדי הפעלה קרה וחמה, תגובת רשימות, חלקות גלילה, צריכת זיכרון וסוללה. התוצאה — מפת נקודות בעייתיות עם מדידות ניתנות לשחזור.
  2. בניית תרשים העומס. מגדירים תרחישים, עוצמה ומשך הרצות, סט מכשירים וגרסאות מערכת. התרשים חייב לשקף תנאים אמיתיים, ולא מקסימום סינתטי — אחרת אנו מייעלים את מה שהמשתמש אינו עושה.
  3. הגדרת פרופיילינג. פורסים איסוף מדדים על סטנד ועל מכשירי המהנדסים, מגדירים הרצה אוטומטית של תרחישים ושמירת מדידות בין בניות. זה מאפשר השוואת גרסאות, ולא תמונת מצב חד-פעמית.
  4. בדיקת צווארי בקבוק. מאתרים את הסיבה: פעולות חוסמות בתהליך הראשי, רינדורים מיותרים, דליפות זיכרון, בקשות כבדות לרשת או למסד נתונים. את ההשערה מאמתים במדידה לפני ואחרי התיקון, ולא בהערכה בעין.
  5. הרצות חוזרות ורגרסיה. לאחר התיקונים מריצים את אותו סט תרחישים ומשווים לקו הבסיס. כך מאמתים שהשיפור אמיתי ולא שבר מסלולים סמוכים.
  6. מסירת תוצאות הבדיקה. מעבירים לצוות הלקוח דוח עם מדדים לפני/אחרי, תרחישים ניתנים לשחזור ורשימת סיכונים שנותרו, כדי שניתן יהיה לחזור על הבדיקות בכוחות עצמם.

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

במה שונה בדיקה על מכשירים אמיתיים מאשר על אמולטורים?

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

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

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

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

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

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

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

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

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

מקרה בוחן: איך קיצרנו את זמן התגובה והסרנו את הנשירות באפליקציה

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

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

מה הראו המדידות לפני השינויים

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

מה שינינו

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

מדדים לפני ואחרי

מדד לפני אחרי
הפעלה קרה 4.1 שנ' 1.6 שנ'
נפילות פריימים בגלילה 18% 2%
נשירות במכשירים חלשים 6.4% מהסשנים 0.3% מהסשנים
גידול בזיכרון ב-10 מעברים +140 MB +8 MB

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

את מתודולוגיית המדידות וספי תקציב הביצועים בנינו על גישת Firebase Performance Monitoring — היא מספקת חתך לפי מכשירים אמיתיים של משתמשים, ולא רק לפי סביבות בדיקה.

ספקות ומה תקבלו לידיים לאחר בדיקת ביצועים

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

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

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

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

אילו הרשאות נדרשות לבדיקה?

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

לידיים אתם מקבלים:

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

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

לוחות זמנים של שלבי בדיקות ביצועים לאפליקציית מובייל

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

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

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