Почему тестирование сети важно для мобильных
Мобильные пользователи сталкиваются с широким диапазоном сетевых условий. Пользователь может начать транзакцию на быстром WiFi, зайти в лифт (нет сигнала), выйти на парковку (слабый сотовый) и уехать (переключение вышек).
Категории сетевых условий
| Условие | Скорость | Задержка | Реальный сценарий |
|---|---|---|---|
| Нет сети | 0 | N/A | Режим полёта, метро |
| 2G (EDGE) | 50-200 Kbps | 300-1000мс | Сельская местность |
| 3G | 0.5-5 Mbps | 100-500мс | Пригород |
| 4G LTE | 5-50 Mbps | 30-100мс | Город |
| 5G | 50-1000+ Mbps | 1-10мс | Отдельные городские районы |
| Медленный WiFi | 1-5 Mbps | 10-50мс | Кафе, отели, аэропорты |
Инструменты троттлинга сети
iOS Network Link Conditioner
Settings > Developer > Network Link Conditioner с предустановленными профилями.
Android
adb shell svc wifi disable
emulator -avd Pixel_8 -netdelay edge -netspeed edge
Charles Proxy
Работает с iOS и Android. Позволяет настраивать пропускную способность, задержку и стабильность.
Основные сценарии тестирования сети
1. Загрузка в медленной сети
- Индикаторы загрузки появляются в течение 1 секунды
- Контент загружается прогрессивно
- Ошибки таймаута после разумного ожидания
- Пользователь может отменить долгие операции
2. Потеря сети во время операции
- Отправка формы → данные сохраняются, повтор при восстановлении
- Загрузка файла → возобновление или перезапуск с обратной связью
- Платёжная транзакция → корректная обработка, без двойных списаний
- Отправка сообщения → сообщение в очереди
3. Переходы между сетями
- WiFi на сотовую
- Сотовая на WiFi
- 4G на 3G на 2G
- Сеть → нет сети → сеть
Продвинутые стратегии тестирования сети
Тестирование логики повторных попыток
Проверяйте: экспоненциальный backoff, максимум попыток, уведомление пользователю, без дублирования побочных эффектов.
Упражнение: План тестирования сети
Сценарий: Тестируйте мессенджер. Разработайте план покрывающий:
- Отправку сообщения на 2G
- Получение сообщений при переключении WiFi на сотовую
- Загрузку фото при 20% потере пакетов
- Поведение при ответе сервера 503
Решение
Отправка на 2G: Charles Proxy на 50Kbps/500мс. Проверить: состояние «отправляется», переход к «отправлено», таймаут с повтором после 30с.
Переход WiFi-сотовая: Начать на WiFi, переключиться. Проверить: нет потерянных сообщений, новые в течение 5с, автоматическое переподключение WebSocket.
Загрузка с потерей пакетов: Charles с 20% отказов. Проверить: автоматический повтор, точная полоса прогресса, возможность отмены.
Ответ 503: Charles возвращает 503. Проверить: сообщение «сервис недоступен», повтор с задержкой, предыдущие сообщения видны.
Советы из продакшен-опыта
Совет 1: Тестируйте первую загрузку на 3G. Если она занимает более 5 секунд — вы потеряете пользователей.
Совет 2: Создавайте пользовательские пресеты троттлинга и делитесь с командой.
Совет 3: Тестируйте второй по тяжести случай, а не самый тяжёлый. Самые коварные баги появляются при 80% потере пакетов, а не при полном отключении.
Ключевые выводы
- Мобильные пользователи испытывают очень разные сетевые условия
- Инструменты троттлинга необходимы для реалистичного тестирования
- Тестируйте состояния загрузки, таймауты, логику повторов и переходы между сетями
- Особое внимание к платежам, загрузке файлов и real-time функциям при сетевых проблемах