Правильно тестируем сетевую часть мобильного...

Preview:

Citation preview

Правильно тестируем сетевую частьмобильного приложенияУсов Андрей

О себе•  Тестирование бекендов

•  Интеграционное тестирование клиент-сервер

3

Доставкаданных

Покрытие

•  9 стран, 288 городов

•  Больше 3 миллионов пользователей

•  iOS, Windows Phone, Android (beta)

5

Нагрузка

•  16 серверов

•  Пиковый трафик 4Gbps

•  Около 512Tb в месяц данных

6

Критичность

•  Актуальность данных

•  Обязательства перед рекламодателями

•  Новые важные фичи

7

Задача

Опасности

Проблемы в сети•  Медленный интернет

•  Бетонные стены

•  Ошибки на уровне DNS

11

Мобильный интернет•  Лимит трафика

•  Роуминг

12

Проблемы сервера•  Пожар в дата-центре

•  Перегрузки

•  Толстые соседи

13

Посредники

•  Блокировщики рекламы

•  Подмена трафика

•  Встроенная реклама

•  Сообщения от провайдера

•  Местные законы

14

Проблемы

Тест-дизайн

•  Выбор конфигураций

•  Расстановка приоритетов

•  Оценка рисков

16

Окружение

•  Настройка инфраструктуры

•  Сложные бекенды

•  Медленная и кривая настройка руками

17

Решение

Команда

Первые шаги•  Придумываем тесты (авторизация, обновления, публикация)

•  Изучаем пользователей (как, где, когда)

•  Готовим мобильное приложение

20

А что дальше?

Находим бекендера

Готовим инфраструктуру

Определяем конфигурации сети•  Внутреннее устройство бекендов

•  Общая логика взаимодействия

24

Примеры: Устройство бекендов•  Сервер отвечает кодами

•  502 Bad Gateway

•  504 Gateway Timeout

•  Выключен Nginx

25

Примеры: Устройство приложения•  Сервер отвечает кодами

•  503 Service Unavailable

•  404 Not Found

•  Неизвестное имя хоста

26

Примеры: Общее изучение сети•  Сервер не найден

•  Обрыв закачки

•  Низкая скорость

27

Примеры: Опыт•  Редиректы

•  Невалидный контент

28

Конфигурируем

•  Правим конфигурации серверов

•  Запускаем программы

•  Фаервол

•  Шейпер

29

Уже можнотестировать

Как?

•  Садитесь вместе с бекендром

•  Для каждого кейса вручную меняете конфигурацию

Долго, дорого, ненадежно

31

Автоматизация

Системы управления конфигруациями

Бекендер

•  Пишет сценарии

•  Учит вас этим пользоваться

Бекендер больше не нужен

34

Best practice•  Следите за обратимостью каждого действия

•  Имеем дефолтный экземпляр каждого файла

•  iptables -F

•  Имейте скрипт для возврата сервера в исходное состояние

•  Реализуйте мониторинг состояния

35

Сложности

•  Терминал Linux

•  Много деталей для запоминания

•  Однотипные долгие действия

36

Делаеминтерфейс

Скриншот Jenkins

Плагины

•  Active Choices Plug-in

•  description setter plugin

•  Publish Over SSH

•  Hidden Parameter plugin

40

Шаг первый: Выбираем бекенды ваш_бекенд_1

ваш_бекенд_2

сторонний_бекенд_1

сторонний_бекенд_2

Шаг второй: Выбираем действие Дефолтное состояние

Код ответа

Выключить сервер

Снизить скорость

Шаг третий: Указываем значения 404 — код ответа для данных

 ничего не трогаем — для авторизации

 502 — для изображений

Шаг четвёртый: СобираемВот и всё

44

Плюсы Jenkins•  Графический интерфейс

•  Кроссплатформенность

•  Очереди

•  Плагины

45

Минусы Jenkins•  Плохая отзывчивость интерфейса

•  Высокий порог входа

46

Теперь

•  Заходим в Jenkins

•  Тестируем

47

Результаты

Тестирование

•  Быстрое

•  Легкое

•  Надежное

49

Система тестирования•  Проста в поддержке

•  Масштабируема

50

Анализ мобильных платформ•  Android хорошо

•  Windows Phone нормально

•  iOS сложно

51

Подведем итог

Итоги

•  Пользователи — это не только ваши коллеги

•  Интернет имеет локальные особенности

•  Проверяем на всех платформах

53

Вопросы?

Усов Андрей

usovand@gmail.com

54

Recommended