54

Правильно тестируем сетевую часть мобильного приложения, Андрей Усов, 2ГИС, Москва

Embed Size (px)

Citation preview

Page 1: Правильно тестируем сетевую часть мобильного приложения, Андрей Усов, 2ГИС, Москва
Page 2: Правильно тестируем сетевую часть мобильного приложения, Андрей Усов, 2ГИС, Москва

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

Page 3: Правильно тестируем сетевую часть мобильного приложения, Андрей Усов, 2ГИС, Москва

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

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

3

Page 4: Правильно тестируем сетевую часть мобильного приложения, Андрей Усов, 2ГИС, Москва

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

Page 5: Правильно тестируем сетевую часть мобильного приложения, Андрей Усов, 2ГИС, Москва

Покрытие

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

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

•  iOS, Windows Phone, Android (beta)

5

Page 6: Правильно тестируем сетевую часть мобильного приложения, Андрей Усов, 2ГИС, Москва

Нагрузка

•  16 серверов

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

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

6

Page 7: Правильно тестируем сетевую часть мобильного приложения, Андрей Усов, 2ГИС, Москва

Критичность

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

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

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

7

Page 8: Правильно тестируем сетевую часть мобильного приложения, Андрей Усов, 2ГИС, Москва

Задача

Page 9: Правильно тестируем сетевую часть мобильного приложения, Андрей Усов, 2ГИС, Москва
Page 10: Правильно тестируем сетевую часть мобильного приложения, Андрей Усов, 2ГИС, Москва

Опасности

Page 11: Правильно тестируем сетевую часть мобильного приложения, Андрей Усов, 2ГИС, Москва

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

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

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

11

Page 12: Правильно тестируем сетевую часть мобильного приложения, Андрей Усов, 2ГИС, Москва

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

•  Роуминг

12

Page 13: Правильно тестируем сетевую часть мобильного приложения, Андрей Усов, 2ГИС, Москва

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

•  Перегрузки

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

13

Page 14: Правильно тестируем сетевую часть мобильного приложения, Андрей Усов, 2ГИС, Москва

Посредники

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

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

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

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

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

14

Page 15: Правильно тестируем сетевую часть мобильного приложения, Андрей Усов, 2ГИС, Москва

Проблемы

Page 16: Правильно тестируем сетевую часть мобильного приложения, Андрей Усов, 2ГИС, Москва

Тест-дизайн

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

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

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

16

Page 17: Правильно тестируем сетевую часть мобильного приложения, Андрей Усов, 2ГИС, Москва

Окружение

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

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

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

17

Page 18: Правильно тестируем сетевую часть мобильного приложения, Андрей Усов, 2ГИС, Москва

Решение

Page 19: Правильно тестируем сетевую часть мобильного приложения, Андрей Усов, 2ГИС, Москва

Команда

Page 20: Правильно тестируем сетевую часть мобильного приложения, Андрей Усов, 2ГИС, Москва

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

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

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

20

Page 21: Правильно тестируем сетевую часть мобильного приложения, Андрей Усов, 2ГИС, Москва

А что дальше?

Page 22: Правильно тестируем сетевую часть мобильного приложения, Андрей Усов, 2ГИС, Москва

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

Page 23: Правильно тестируем сетевую часть мобильного приложения, Андрей Усов, 2ГИС, Москва

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

Page 24: Правильно тестируем сетевую часть мобильного приложения, Андрей Усов, 2ГИС, Москва

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

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

24

Page 25: Правильно тестируем сетевую часть мобильного приложения, Андрей Усов, 2ГИС, Москва

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

•  502 Bad Gateway

•  504 Gateway Timeout

•  Выключен Nginx

25

Page 26: Правильно тестируем сетевую часть мобильного приложения, Андрей Усов, 2ГИС, Москва

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

•  503 Service Unavailable

•  404 Not Found

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

26

Page 27: Правильно тестируем сетевую часть мобильного приложения, Андрей Усов, 2ГИС, Москва

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

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

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

27

Page 28: Правильно тестируем сетевую часть мобильного приложения, Андрей Усов, 2ГИС, Москва

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

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

28

Page 29: Правильно тестируем сетевую часть мобильного приложения, Андрей Усов, 2ГИС, Москва

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

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

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

•  Фаервол

•  Шейпер

29

Page 30: Правильно тестируем сетевую часть мобильного приложения, Андрей Усов, 2ГИС, Москва

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

Page 31: Правильно тестируем сетевую часть мобильного приложения, Андрей Усов, 2ГИС, Москва

Как?

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

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

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

31

Page 32: Правильно тестируем сетевую часть мобильного приложения, Андрей Усов, 2ГИС, Москва

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

Page 33: Правильно тестируем сетевую часть мобильного приложения, Андрей Усов, 2ГИС, Москва

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

Page 34: Правильно тестируем сетевую часть мобильного приложения, Андрей Усов, 2ГИС, Москва

Бекендер

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

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

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

34

Page 35: Правильно тестируем сетевую часть мобильного приложения, Андрей Усов, 2ГИС, Москва

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

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

•  iptables -F

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

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

35

Page 36: Правильно тестируем сетевую часть мобильного приложения, Андрей Усов, 2ГИС, Москва

Сложности

•  Терминал Linux

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

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

36

Page 37: Правильно тестируем сетевую часть мобильного приложения, Андрей Усов, 2ГИС, Москва

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

Page 38: Правильно тестируем сетевую часть мобильного приложения, Андрей Усов, 2ГИС, Москва
Page 39: Правильно тестируем сетевую часть мобильного приложения, Андрей Усов, 2ГИС, Москва

Скриншот Jenkins

Page 40: Правильно тестируем сетевую часть мобильного приложения, Андрей Усов, 2ГИС, Москва

Плагины

•  Active Choices Plug-in

•  description setter plugin

•  Publish Over SSH

•  Hidden Parameter plugin

40

Page 41: Правильно тестируем сетевую часть мобильного приложения, Андрей Усов, 2ГИС, Москва

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

ваш_бекенд_2

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

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

Page 42: Правильно тестируем сетевую часть мобильного приложения, Андрей Усов, 2ГИС, Москва

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

Код ответа

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

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

Page 43: Правильно тестируем сетевую часть мобильного приложения, Андрей Усов, 2ГИС, Москва

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

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

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

Page 44: Правильно тестируем сетевую часть мобильного приложения, Андрей Усов, 2ГИС, Москва

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

44

Page 45: Правильно тестируем сетевую часть мобильного приложения, Андрей Усов, 2ГИС, Москва

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

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

•  Очереди

•  Плагины

45

Page 46: Правильно тестируем сетевую часть мобильного приложения, Андрей Усов, 2ГИС, Москва

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

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

46

Page 47: Правильно тестируем сетевую часть мобильного приложения, Андрей Усов, 2ГИС, Москва

Теперь

•  Заходим в Jenkins

•  Тестируем

47

Page 48: Правильно тестируем сетевую часть мобильного приложения, Андрей Усов, 2ГИС, Москва

Результаты

Page 49: Правильно тестируем сетевую часть мобильного приложения, Андрей Усов, 2ГИС, Москва

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

•  Быстрое

•  Легкое

•  Надежное

49

Page 50: Правильно тестируем сетевую часть мобильного приложения, Андрей Усов, 2ГИС, Москва

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

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

50

Page 51: Правильно тестируем сетевую часть мобильного приложения, Андрей Усов, 2ГИС, Москва

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

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

•  iOS сложно

51

Page 52: Правильно тестируем сетевую часть мобильного приложения, Андрей Усов, 2ГИС, Москва

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

Page 53: Правильно тестируем сетевую часть мобильного приложения, Андрей Усов, 2ГИС, Москва

Итоги

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

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

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

53

Page 54: Правильно тестируем сетевую часть мобильного приложения, Андрей Усов, 2ГИС, Москва

Вопросы?

Усов Андрей

[email protected]

54