Имитация «плохого» интернета
довольно часто при тестировании того или иного приложения, требуется создать видимость плохого интернета. Обрыв сети, потеря пакетов, имитация dial-up соединения — список вы можете продолжить дальше.
Мне не один раз приходилось наблюдать в таких ситуациях, как пользователи то и дело выдеркивали шнур, отключали wi-fi через настройки, просто оключали питание на роутере, танцевали в шапочке из фольги и проделывали прочие «танцы с бубном» около своих устройств.
А все дело в том, что многие не знают, что на Mac’ах (и любых FreeBSD подобных системах) предустановленна довольно удобная утилита IPFW. Этот фаервол, не только довольно легок в использовании, но и имеет просто потрясающие возможности.
Основной принцип работы с ним заключается в том, что нужный нам траффик загоняется в определенные каналы (pipe),
для которых мы позже устанавливаем правила работы.
Вот небольшой воркфлоу по работе с ним:
I. Открываем терминал и переходим в режим суперпольозвателя:
II. Проверяем уже существующий правила:
Скорее всего мы увидим нечто похожее на:
Это предустановленное правило, которое буквально говорит, что разрешить ip от любого к любому.
III. Создаем свой канал:
Теперь весь (вообще весь) траффик ходит через этот канал.
IV. Создаем правила для канала
Синтаксис:
Расшифровка:
для канала 1 используем скорость 32кбит с задержкой в 3 сек очередью пакетов 50 и кол-во потерянных пакетов 10%
V. Вновь просмотрев все списки правил, можно увидеть номера рядом с ними. 00100, 00200 и т.д.
Используя эти номера можно управялть каналами, например удалить их:
Ну вот, пожалуй и все, наслаждаемся плохим инетом, и если нужно, читаем мануал
Источник
Существуют ли утилиты для имитации плохого соединения?
Подскажите утилиту для имитация плохого соединения. Хочется проверить веб-приложение на такие вещи:
* Потеря пакетов
* Битые пакеты
* Обрыв соединения
Опционально:
* Имитация перегруженного WiFi
* Имитация низкой скорости
- Вопрос задан более трёх лет назад
- 14791 просмотр
ВЧ генератором можно ( любым передатчиком ) имитировать зашумление радиочастотные помехи
Можно подключить жилы кабеля через конденсаторы таким образом можно с имитировать плохой или окисленный контакт
и смотрите в Wireshark сколько чего теряется
Источник
Имитация плохой сети на мобильных устройствах. Как реализовать?
Всем доброго времени суток!
Как это иногда (иногда? нет, часто) происходит, при отсутствии хорошего интернета или периодических прерываниях сети, появляются новые (а точнее ранее не раскрытые) ошибки в приложениях.
Коллеги, кто подскажет быстрый и хороший способ эмуляции плохого интернета для реальных ios/android устройствах?
(п.с. сделать на пк точку доступа wi-fi не получиться, ибо инет проводной)
(п.п.с варик тестирования на эмуляторах устройств также сразу отпадает)
Заранее благодарю за любые советы.
upd. — вариант обложить смартфон фольгой уже преподнесли (^_^)
В избранное В избранном 0
33 комментария
iOS: Network Link Conditioner. Android: при наличии мака, подключаем его по ethernet, в два щелчка поднимаем шаринг на WiFi, включаем Network Link Conditioner for Mac (доставляется отдельно, из Xcode Tools), подключаем Андроид на свежесозданную точку доступа. При отсутствии мака — netem на лине.
Для ios, на устройстве: Settings->Developer->Network Link Conditioner
Есть очень не плохой вариант:
ПК->Точка доступа->аттенюатор->девайс.
Аттенюатор: девайс, который ослабляет радиосигналл (USB/TTL аттенюатор от Weinschel, к примеру).
Для имитации низких скоростей нужно либо загрузить точку другими девайсами, как писал Andrey Bulanov, либо включить какую-нибудь глушилку, их в продаже очень много, для имитации помехи.
Тесты на уровень и скорости всегда идут отдельно, так как дествительно, у тебя может быть как плохой уровень сигналла, так и не хватать емкости (к примеру из-за перегрузки точки доступа, ограничениях в канале и т.п).
Как бы говорим про вафлю, но
сделать на пк точку доступа wi-fi не получиться, ибо инет проводной
ставит в тупик 🙂 Свистка за 3$ нет или wifi роутера?
Идем покупаем младший mikrotik за 600 грн, сетим мощность передатчика на 1-5дби, ставим его за капитальной стеной. Можно поставить нужную пропускную способность, канальные рейты wifi, можно вообще скрипты прописать- то мощность увеличивать, то потолок скорости, то клиента выбрасывать с AP, дропать пакеты каждые n минут. Можно нагрузить канал флудом, там есть кое-какие инструменты, можно вторым девайсом качать торренты.
Заэкранируй фольгой вайфай-антенну, и будет тебе счастье. Из особо извращённых способов — просто выйди физически туда, где твоя вафле еле добивает.
З’їздь на вихідні в якесь село)
(п.с. сделать на пк точку доступа wi-fi не получиться, ибо инет проводной)
Мобильный на прямую к проводу подключали.
(п.п.с варик тестирования на эмуляторах устройств также сразу отпадает)
Продумать логику Error Handling для плохой сети, протестить ее на симуляторе, а потом добавлять с ее учетом фичи, которые в эмуляторе не доступны. И тестить «в поле», а не через провод. Как уже писалось ниже Xcode Tools имеет дополнительный инструмент по тестированию сети, в котором можно прорабатывать все случаи плохого сигнала.
Я использовал несколько методов в своей практике:
1. Как уже говорили, на реальном iOS устройстве, включить Network Link Conditioner и имитировать различные виды плохой сети. Как возможный вариант, поднять WiFi точку доступа на iOS c 3G коннектом, и потом подсоединять Android к WiFi iOS.
2. Для одного из проектов, надо было отслеживать handover из WiFi в 3G сеть. И для того, что бы не бегать по длинным коридорам, был приобретен MicroTik с очень гибким управлением мощностью WiFi части.
3. На мой взгляд идеальный вариант — на маке поднять точку доступа куда будут коннектится девайсы, и шейпить трафик уже на маке — для этого был когда-то Network Link Conditioner for Mac. Или же, через ipfw.
Источник
Имитация низкого сетевого подключения для Android
Я хотел бы протестировать свое приложение на предмет низкого сетевого подключения. Как лучше всего это сделать, кроме как стоять в лифте? Я пытался обернуть телефон в алюминиевую фольгу, но это не сильно помогло.
Мне нужно проверить это на реальном устройстве, а не в эмуляторе.
Для этого вы можете использовать эмулятор. Взгляните на эту страницу: Android-эмулятор. Обратите внимание на следующие два аргумента:
Установите эмуляцию латентности сети на. Значение по умолчанию — нет. Видеть таблицу в эмуляции сетевой задержки для поддерживаемых значений.
Установите эмуляцию сетевой скорости в. Значение по умолчанию заполнено. Видеть таблицу в эмуляции сетевой скорости для поддерживаемых значений.
Это может показаться немного сумасшедшим, но микроволновая печь служит в качестве микроволнового экрана. Поэтому, помещая устройство в микроволновую печь (НЕ включайте микроволновую печь, пока ваше устройство внутри!) Приведет к значительному снижению уровня сигнала. Он определенно бьет, стоя в лифте.
Поскольку параметр разработчика iPhones применяется к Wi-Fi-модему, вы можете получить iPhone с iOS 6 и выше (и был установлен на use for developments с помощью xcode ), установите его в эмулировать желаемый профиль сети, подключить ваше устройство Android к своей горячей точке
Обновление для Android Studio версии 1.5 или выше
Как отметил @LouMorda в комментарии ниже, вкладка Emulator , упомянутая в оригинальной записи, была удалена в Android Studio v 1.5.
Теперь они разместили эти настройки в настройках симулятора в AVD Manager .
Чтобы получить доступ к этим настройкам:
- Выберите Tools -> Android -> AVD Manager
Нажмите кнопку Edit AVD (значок карандаша)
Доступ к Network Settings можно получить после нажатия кнопки Show Advanced Settings
Вот скриншот, как это может выглядеть:
Оригинальная публикация
Для тех, кто использует Android Studio IDE:
- Перейдите к Run -> Edit Configurations
Выберите Android Application -> [Your App]
Выберите вкладку Emulator
Здесь вы можете изменить разные значения для Network Speed и Network Latency , чтобы имитировать разные скорости и задержки и т.д.
В качестве альтернативы вы можете ввести различные аргументы в текстовое поле Additional command line options , как указано в ответе @inazaruk.
Снимок экрана ниже описывает, как выглядит этот экран Run Configuration :
Я знаю, что немного поздно ответить на этот вопрос, но я надеюсь, что это поможет другим, сталкивающимся с подобными проблемами!
Edit
Для тех, кто использует eclipse, см. @Abhi answer ниже.
Я знаю, что это старый вопрос, но.
В некоторых телефонах в настоящее время есть настройка для использования только 2G. Он идеально подходит для имитации медленного интернета на реальном устройстве.
Годы, но эй, я буду звонить с моим надежным методом с Genymotion.
Загрузите бесплатную пробную версию Charles: http://www.charlesproxy.com/download/
Нажмите Proxy -> Throttle Settings
Настройте скорость дросселирования HTTP
Закройте это окно
Нажмите Proxy -> Throttling , чтобы включить дроссель
Откройте эмулятор Genymotion
Откройте настройки wifi
Длительное нажатие на включенное соединение Wi-Fi
Нажмите Modify Network
Нажмите Show Advanced Options
Установите Proxy в Manual
Установите Proxy hostname в 10.0.3.2
Установите Port в 8888
И теперь ваша сеть будет дросселирована!
У меня есть одна стратегия, чтобы решить вашу проблему. Вы можете использовать приложение прокси для изменения или мониторинга вашего сетевого статуса. например, Чарльз.
Вы должны изменить конфигурацию Чарльза по умолчанию, как показано на следующем рисунке.
И, наконец, вы обнаружите, что сетевой статус был сформирован в более низком темпе.
Простой способ протестировать ваше приложение с низким/плохим соединением в эмуляторе:
Go Запустить > Запустить конфигурации, выберите Android-приложение и перейдите на вкладку Целевая.
Посмотрите параметры запуска эмулятора. Здесь вы можете легко изменить скорость сети и сетевую задержку.
Существует простой способ тестирования низких скоростей на реальном устройстве, которое, похоже, было упущено. Для этого требуется подключение к сети Mac и ethernet (или другое проводное).
Включите совместное использование Wi-Fi на Mac, превратив ваш компьютер в точку доступа Wi-Fi, подключите ваше устройство к этому. Используйте Netlimiter/Charles Proxy или Network Link Conditioner (который вы, возможно, уже установили) для управления скоростями.
Facebook создал нечто, называемое расширенным управлением трафиком. Краткое резюме со страницы GitHub:
Дополненное управление трафиком (ATC) — это инструмент для моделирования условий в сети. Позволяет контролировать подключение устройства к Интернету. Разработчики могут использовать ATC для тестирования своих приложений в различных сетевых условиях, легко эмулируя высокоскоростные, мобильные и даже сильно поврежденные сети. Аспекты соединения, которыми можно управлять, включают:
- пропускная способность задержка потеря пакета поврежденные пакеты заказ пакетов
Чтобы иметь возможность формировать сетевой трафик, ATC должен работать на устройстве, которое маршрутизирует трафик и видит реальный IP-адрес устройства, например, ваш сетевой шлюз. Это также позволяет любым устройствам, которые маршрутизируют через ATC, иметь возможность формировать свой трафик. Трафик может формироваться/не формироваться с использованием веб-интерфейса, что позволяет любым устройствам с веб-браузером использовать ATC без необходимости клиентского приложения.
Источник
Имитация низкого сетевого подключения для Android
Я хотел бы протестировать свое приложение на предмет низкого сетевого подключения. Как лучше всего это сделать, кроме как стоять в лифте? Я пытался обернуть телефон в алюминиевую фольгу, но это не сильно помогло.
Мне нужно проверить это на реальном устройстве, а не в эмуляторе.
26 ответов
Для этого вы можете использовать эмулятор. Взгляните на эту страницу: Android-эмулятор. Обратите внимание на следующие два аргумента:
Установите эмуляцию латентности сети на. Значение по умолчанию — нет. Видеть таблицу в эмуляции сетевой задержки для поддерживаемых значений.
Установите эмуляцию сетевой скорости в. Значение по умолчанию заполнено. Видеть таблицу в эмуляции сетевой скорости для поддерживаемых значений.
Это может показаться немного сумасшедшим, но микроволновая печь служит в качестве микроволнового экрана. Поэтому, помещая устройство в микроволновую печь (НЕ включайте микроволновую печь, пока ваше устройство внутри!) Приведет к значительному снижению уровня сигнала. Он определенно бьет, стоя в лифте.
Поскольку параметр разработчика iPhones применяется к Wi-Fi-модему, вы можете получить iPhone с iOS 6 и выше (и был установлен на use for developments с помощью xcode ), установите его в эмулировать желаемый профиль сети, подключить ваше устройство Android к своей горячей точке
Обновление для Android Studio версии 1.5 или выше
Как отметил @LouMorda в комментарии ниже, вкладка Emulator , упомянутая в оригинальной записи, была удалена в Android Studio v 1.5.
Теперь они разместили эти настройки в настройках симулятора в AVD Manager .
Чтобы получить доступ к этим настройкам:
- Выберите Tools -> Android -> AVD Manager
- Нажмите кнопку Edit AVD (значок карандаша)
- Доступ к Network Settings можно получить после нажатия кнопки Show Advanced Settings
Вот скриншот, как это может выглядеть:
Оригинальная публикация
Для тех, кто использует Android Studio IDE:
- Перейдите к Run -> Edit Configurations
- Выберите Android Application -> [Your App]
- Выберите вкладку Emulator
- Здесь вы можете изменить разные значения для Network Speed и Network Latency , чтобы имитировать разные скорости и задержки и т.д.
В качестве альтернативы вы можете ввести различные аргументы в текстовое поле Additional command line options , как указано в ответе @inazaruk.
Снимок экрана ниже описывает, как выглядит этот экран Run Configuration :
Я знаю, что немного поздно ответить на этот вопрос, но я надеюсь, что это поможет другим, сталкивающимся с подобными проблемами!
Edit
Для тех, кто использует eclipse, см. @Abhi answer ниже.
Источник