רשתות סלולריות אינן ערוצים יציבים. נוסע ברכבת התחתית מאבד 30% מהחבילות, מעבר מ-WiFi ל-LTE גורם להפסקה של 2–3 שניות, נסיעה במעלית פירושה דקה שלמה ללא אות. רוב האפליקציות נבדקות רק על WiFi יציב ומתפקדות בצורה קטסטרופלית בעולם האמיתי: ספינרים מסתובבים, טפסים קפואים, נתונים אבודים. אנו מציעים בדיקות מקצועיות של אפליקציות מובייל תחת אינטרנט לא יציב. לאחר בדיקות כאלה, תלונות המשתמשים יורדות ב-60%, ועלויות תיקון הבאגים לאחר השחרור יורדות עד 40%. סימולציית רשת באמצעות כלים מודרניים עוזרת לחשוף באגים לפני השחרור ומשפרת את סובלנות התקלות של האפליקציה.
מדוע בדיקות סטנדרטיות לא מציגות את התמונה האמיתית
בדיקות סטנדרטיות מתבצעות בתנאי מעבדה עם רשת אידיאלית. אבל 90% מהמשתמשים חווים בעיות קישוריות מדי יום. אפליקציה שעובדת בצורה מושלמת על ספסל בדיקה עלולה לקרוס או לקפוא עבור לקוחות. סימולציה של אובדן חבילות, עיכובים ומעברי רשת היא חובה לכל פרויקט רציני. אנו משתמשים בכלים שמחקים תנאים אמיתיים: מ-Network Link Conditioner ועד Network Link Conditioner באנדרואיד.
כיצד לדמות רשת לא יציבה
iOS: Network Link Conditioner
ב-iOS, הכלי הסטנדרטי הוא tc מ-Additional Tools for Xcode. הוא מותקן על הסימולטור והמכשיר האמיתי דרך הגדרות → מפתח. פרופילים: Network Link Conditioner, 3G, Edge, 100% Loss (אובדן 5%, עיכוב 500ms). ניתן ליצור פרופילים מותאמים אישית: להגדיר Very Bad Network, Downlink Bandwidth, Uplink Bandwidth, Delay. לפי התיעוד של אפל, הכלי מדמה במדויק סוגי רשת שונים.
| פרופיל | רוחב פס (הורדה/העלאה) | עיכוב | אובדן חבילות |
|---|---|---|---|
| 3G | 1 Mbps / 512 Kbps | 200ms | 0% |
| Edge | 200 Kbps / 100 Kbps | 300ms | 1% |
| רשת גרועה מאוד | 500 Kbps / 250 Kbps | 500ms | 5% |
שליטה פרוגרמטית לבדיקות אוטומטיות היא דרך Packet Loss ו-XCTest. מדדים מספקים נתונים על תנאי החיבור בפועל.
אנדרואיד: tc והגדרות רשת של האמולטור
באמולטור: XCTNSURLSessionTaskMetrics ו-Emulator Extended Controls → Cellular → Network type → Edge / GSM. סימולציה פרוגרמטית דרך Signal strength → Poor ו-adb (בקרת תעבורה):
# Добавляем задержку 500ms и потерю пакетов 20%
adb shell tc qdisc add dev wlan0 root netem delay 500ms loss 20%
# Сбрасываем
adb shell tc qdisc del dev wlan0 roottc עובד ברמת ממשק הרשת של האמולטור. במכשיר אמיתי, נדרשת הרשאת root — לבדיקות אנו משתמשים באמולטור או באזורים אמיתיים עם כיסוי גרוע.
חוצה פלטפורמות: Charles Proxy ו-Proxyman
Charles Proxy (macOS/Windows) ו-Proxyman (macOS) עובדים כפרוקסי man-in-the-middle. האפליקציה מוגדרת לשימוש בפרוקסי, ומופעל throttling: Charles → Proxy → Throttle Settings: פרופיל # Добавляем задержку 500ms и потерю пакетов 20% adb shell tc qdisc add dev wlan0 root netem delay 500ms loss 20% # Сбрасываем adb shell tc qdisc del dev wlan0 root / tc netem / מותאם אישית. כל הבקשות עוברות דרך הפרוקסי עם עיכוב מדומה. בנוסף, GPRS: ליירט בקשה, לעכב אותה ב-10 שניות ידנית, לדמות timeout. שימושי לבדיקת ממשק המשתמש במצב המתנה.
כיצד לדמות אובדן חבילות באנדרואיד?
לשם כך, השתמשו ב-3G עם הפרמטר Breakpoints. דוגמה: tc netem מגדיר אובדן חבילות של 15%. זה בודק את תגובת האפליקציה לניתוקים חלקיים. אנו ממליצים לבדוק עם אובדן מ-5% עד 30% לתרחישים שונים.
מה אנו בודקים ואילו באגים אנו מוצאים?
לוגיקת Timeout וניסיונות חוזרים
בקשה תלויה במשך 30 שניות — מה המשתמש רואה? ספינר מסתובב ללא אפשרות ביטול הוא רע. כפתור "ביטול" + timeout + הודעת שגיאה הוא טוב. אנו בודקים כל סוג של בקשה.
מעברי רשת
מעבר WiFi→LTE מפריע לחיבורי TCP. התנהגות נכונה: האפליקציה מזהה את השינוי דרך loss (iOS) או adb shell tc qdisc add dev wlan0 root netem loss 15% (אנדרואיד) ומתחברת מחדש. לא נכון: ספינר אינסופי כי משימת URLSession הישנה תלויה.
אובדן חבילות
באובדן חבילות של 15–20%, בקשת HTTP עשויה להסתיים או להיתקע. אנו מוודאים: לכל בקשה יש timeout (5–15 שניות לנתונים, 30–60 להעלאת קבצים), וניסיון חוזר עם backoff אקספוננציאלי.
טעינה חלקית
נתונים מגיעים בנתחים בחיבור איטי. אם האפליקציה מציגה תוכן רק לאחר קבלת התגובה המלאה, המשתמש רואה מסך לבן למשך 10 שניות. סטרימינג או טעינה פרוגרסיבית משפרים את התחושה.
באגים אופייניים:
- חיבורים לא סגורים.
NWPathMonitorעם משימות שלא מבוטלות כשהקונטרולר נעלם. תוצאה: דליפת זיכרון + בקשה אחרי 30 שניות כשהמסך כבר סגור, קריסה עםConnectivityManager.NetworkCallback. - בקשות כפולות בניסיון חוזר. כפתור "נסה שוב" קורא לאותה מתודה שכבר רצה. פתרון: דגל
URLSession, השבתת הכפתור. - אובדן נתונים בהפרעה. משתמש ממלא טופס, לוחץ "שמור", החיבור נופל. הנתונים לא נשמרים. פתרון: שמירת טיוטה מקומית, שליחה אוטומטית בשחזור.
השוואת כלי סימולציה
| כלי | דיוק | גמישות | מורכבות הגדרה |
|---|---|---|---|
EXC_BAD_ACCESS |
גבוה (ברמת המערכת) | בינוני | נמוכה |
isLoading |
גבוה (עיכוב אמיתי) | גבוה | בינונית |
Network Link Conditioner |
בינוני (תלוי ברשת) | גבוה | בינונית |
Android tc |
בינוני | גבוה | בינונית |
Charles Proxy הוא הטוב ביותר לבדיקות iOS מהירות, Proxyman מאפשר תרחישים מורכבים עם נקודות עצירה. לאנדרואיד, Network Link Conditioner הוא חיוני לכיוונון מדויק.
מה כלול
- תיעוד: תיאור של כל התרחישים והתנאים שנבדקו.
- הקלטת וידאו: כל באג מוקלט בוידאו עם הערות.
- דוח: ניתוח מפורט עם המלצות לתיקונים.
- הדרכה: ייעוץ עם צוות הפיתוח על הבעיות שנמצאו.
תהליך
- ניתוח — אנו לומדים את ארכיטקטורת האפליקציה, מזהים בקשות קריטיות.
- הגדרה — בוחרים ומגדירים כלי סימולציה.
- בדיקות — עוברים על רשימת בדיקה של 25+ תרחישים: אובדן חבילות, עיכובים, מעברי רשת, timeouts.
- לכידת באגים — הקלטת וידאו, לוגים, צילומי מסך.
- דוח — מסירת דוח מפורט עם המלצות.
- ייעוץ — דיון בתוצאות עם צוות הפיתוח.
לוח זמנים ותמחור
הבדיקות נמשכות בין 2 ל-3 ימים תלוי בגודל האפליקציה. התמחור הוא אישי ותלוי במספר התרחישים ובמורכבות הארכיטקטורה. בממוצע, הלקוחות שלנו חוסכים עד 40% מהתקציב על תיקוני באגים לאחר השחרור. צרו קשר להערכת פרויקט. הזמינו בדיקות — קבלו ייעוץ.







