3 пункта, которые Вы должны знать о тестировании мобильных приложений с разными типами подключений |
11.02.2014 11:58 |
Статья подготовлена Александром Хозей и Андреем Дзыней в рамках подготовки к тренингу Тестирование мобильных приложений 2.0, который начнется 28 февраля. Тестирование работы с разными типами и качеством связи является одним из столпов тестирования мобильных приложений. Смартфон - личная вещь и находится с владельцем практически всегда: будь то поездка в городском транспорте или, например, на экскурсии в пещеры. Мобильные приложения не должны подводить, особенно в трудную минуту. Пример из жизни. Вы установили приложение одной из авиакомпаний, с помощью которого можно осуществлять электронную регистрацию и посадку на борт. Регистрация была совершена дома, а телефон установлен в режим ожидания. По прибытию в аэропорт, где необходимо показать билет - Вы разблокировали экран. В момент подключения к открытой точке доступа аэропорта (в таких точках доступа необходимо авторизоваться в браузере) приложение принялось за обновление закешированной страницы и скрыло ее за экраном активности (в худшем случае, закрылось после сбоя). Работник аэропорта не может считать штрих-код с экрана, вы безуспешно пытаетесь отыскать сохраненную страницу, очередь сзади начинает роптать. В конечно итоге вам приходится разрешать проблему в индивидуальном порядке с представителями авиалиний. Неприятная ситуация. Очевидно, что над сетевой частью и кешированием недостаточно тщательно поработали. Давайте подумаем какие проверки необходимы, чтобы избежать подобных ситуациях в собственных продуктах.
1. Работа с конкретным типом и скоростью связи и потерями пакетовОсновные виды соединения с Интернет:
Большинство умных телефонов поддерживают современные технологии передачи мобильного трафика. Тип устанавливаемого соединения зачастую доступен в настройках устройства (2G/3G/4G), но для этого не забудьте приобрести несколько SIM-карт с предустановленными тарифными планами от операторов сотовой связи. Рекомендую использовать miniSIM с переходниками под полноразмерные SIM карты и отдельные nanoSIM для iOS-устройств последнего поколения. Проверка работы приложений с разными скоростями передачи данныхiOSНачиная с iOS 6 нам стал доступен Network Link Conditioner в подменю Developer каждого iOS устройства. Приятным является тот факт, что по умолчанию ограничения по связи накладываются как на мобильный трафик, так и на Wi-Fi. В меню Network Link Conditioner осуществялется выбор доступных предустановок, а в самом низу находится важнейший для нас пункт - создать свою предустановку (preset), где вы можете задать параметры вручную. Другие операционные системыДля iOS симуляторов или остальных операционных систем необходимо использовать Network Link Conditioner для MacOS, Wi-Fi точки доступа и встроенные средства эмуляторов/симуляторов Способ 1 Работа с симуляторами/эмуляторами Операционные системы семейств Android и Blackberry имеют стандартный набор настроек эмулятора для установки типа и качества соединения. Ниже представлены скриншоты OS Android. Способ 2 Сторонняя прошивка на роутер Многие прошивки роутеров по типу DD-WRT, Tomato позволяют манипулировать (“шейпить”) скоростью Wi-Fi соединения на лету, без разрыва соединения. Лично я рекомендую связку Linksys WRT54G v2 + прошивка Tomato:
Способ 3 Network Link Conditioner для MacOS 1. Устанавливаем Network Link Conditioner 2. Создаем точку доступа Wi-Fi на Mac Далее тестируем приложение в симуляторах/эмуляторах на локальной машине либо подключившись к точке доступа, созданной на Вашем Mac. Способ 4 Стороннее ПО Сторонние инструменты, вроде WANEm, Dummynet (скорее всего, потребуется помощь системного администратора, т.к. пропускают трафик через себя и должны быть установлено до роутера/Вашего компьютера) Различных прокси. Лично мне нравится CharlesProxy, он позволяет совершать throttling траффика по заранее подготовленным правилам (по аналогии с Network Link Conditioner) 2. Потеря связи и переключение между типами подключенийПотерять сотовую связь можно поиском мертвой зоны, но это зачастую достаточно сложно и неоптимально. Самым очевидным советом будет лифт! В лабораторных условиях лучше воспользоваться экранированным боксом в который есть возможность положить смартфон. C потерей Wi-Fi соединения все значительно проще:
Внимание: сворачивание приложение и выключение различных видов соединения в настройках неоптимально, так меняется состояние приложений - вы вернетесь в него уже в состоянии остутствия соединения, что является совсем другой проверкой. Для переключание между видами связи можно использовать ту же “шторку” или роутер. Операционная систему уже настроена на то, чтобы автоматически переключаться на самый сильный источник сигнала:
3. Публичная сеть требующая авторизации и сложные сценарииПубличные точки, которые требуют авторизации составляют еще один важный случай тестирования работы с сетью. Находясь подключенным к сети, но не имея интернет соединения - наше приложение начинает сбоить, так как запросы не достигают конечной точки назначения, а полученные ответы не соответствуют ожидаемым. Самые распостраненные сети требующие авторизации:
Для первого и второго случая мы можем воссоздать ситуацию таким способом: подключаемся к Wi-Fi и отключаем Ethernet кабель от роутера. Соответственно, также все запросы не доходят до сервера и не приходят от него. Во всех перечисленных случаях мы можем использовать Proxy для перехвата запросов и отвечать на них ожидаемым образом. Специальным образом сконфигурированный веб сервер так же может послужить отличным инструментом для проверок. Если приложение написано с оглядкой на вышеописанные сценарии, то базовые проверки ему не страшны. При сложных случаях прерывания соединения приложение внешне не будет подовать подозрительных знаков, но самое интересное будет происходить за кулисами (например, отправлять на сервер дублирующиеся запросы). Несколько примеров таких сложных сценариев:
Итак для того, чтобы пользователи вашего мобильного приложений чувствовали себя комфортно независимо от доступного типа соединения, всегда проверяйте:
Естественно, существует ряд других случаяв для проверки. Если у Вас есть такие примеры - будем рады обсудить в комментариях или на форуме. |