Top Banner
116

Тестируем мобильное приложение в суровых реалиях Интернета

Feb 19, 2017

Download

Education

SQALab
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: Тестируем мобильное приложение в суровых реалиях Интернета
Page 2: Тестируем мобильное приложение в суровых реалиях Интернета

Тестируем мобильное приложение всуровых реалиях интернетаУсов Андрей

[email protected]    [email protected]    techno.2gis.ru

Page 3: Тестируем мобильное приложение в суровых реалиях Интернета

•  2 года в тестировании

О себе

Page 4: Тестируем мобильное приложение в суровых реалиях Интернета

•  2 года в тестировании

•  Автоматизирую тестирование бекендов

О себе

Page 5: Тестируем мобильное приложение в суровых реалиях Интернета

•  2 года в тестировании

•  Автоматизирую тестирование бекендов

•  Разрабатываю инстументы для

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

О себе

Page 6: Тестируем мобильное приложение в суровых реалиях Интернета

Мобильное приложение 2ГИС v4•  iOS, Widows Phone, Android (beta)

Page 7: Тестируем мобильное приложение в суровых реалиях Интернета

Мобильное приложение 2ГИС v4•  iOS, Widows Phone, Android (beta)

•  3 млн. пользователей

Page 8: Тестируем мобильное приложение в суровых реалиях Интернета

Мобильное приложение 2ГИС v4•  iOS, Widows Phone, Android (beta)

•  3 млн. пользователей

•  9 стран

•  288 городов

Page 9: Тестируем мобильное приложение в суровых реалиях Интернета

Мобильное приложение 2ГИС v4•  iOS, Widows Phone, Android (beta)

•  3 млн. пользователей

•  9 стран

•  288 городов

•  Работает офлайн

Ищи 2ГИС в любом магазине приложений

Page 10: Тестируем мобильное приложение в суровых реалиях Интернета

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

Page 11: Тестируем мобильное приложение в суровых реалиях Интернета

Нагрузка

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

Page 12: Тестируем мобильное приложение в суровых реалиях Интернета

Нагрузка

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

•  Максимум 400 rps

Page 13: Тестируем мобильное приложение в суровых реалиях Интернета

Нагрузка

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

•  Максимум 400 rps

•  Объем данных 512 Tb в месяц

Page 14: Тестируем мобильное приложение в суровых реалиях Интернета

Нагрузка

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

•  Максимум 400 rps

•  Объем данных 512 Tb в месяц

Но ещё не вышло обновление для Android (65% пользователей)

Page 15: Тестируем мобильное приложение в суровых реалиях Интернета

Критичность

•  Всегда актуальные данные

Page 16: Тестируем мобильное приложение в суровых реалиях Интернета

Критичность

•  Всегда актуальные данные

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

Page 17: Тестируем мобильное приложение в суровых реалиях Интернета

Критичность

•  Всегда актуальные данные

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

•  Доставка фич

Page 18: Тестируем мобильное приложение в суровых реалиях Интернета

Технологиядоставки

Page 19: Тестируем мобильное приложение в суровых реалиях Интернета

Устройство

Page 20: Тестируем мобильное приложение в суровых реалиях Интернета

Приложение

Page 21: Тестируем мобильное приложение в суровых реалиях Интернета

Сеть

Page 22: Тестируем мобильное приложение в суровых реалиях Интернета

Серверы

Page 23: Тестируем мобильное приложение в суровых реалиях Интернета

Nginx

Page 24: Тестируем мобильное приложение в суровых реалиях Интернета

Хранилище

Page 25: Тестируем мобильное приложение в суровых реалиях Интернета

Связь

Page 26: Тестируем мобильное приложение в суровых реалиях Интернета

Выбирает клиент

Page 27: Тестируем мобильное приложение в суровых реалиях Интернета

Требования

•  Выбор стабильных серверов для загрузки

Page 28: Тестируем мобильное приложение в суровых реалиях Интернета

Требования

•  Выбор стабильных серверов для загрузки

•  Устойчивость к отказам даже в процессе закачки

Page 29: Тестируем мобильное приложение в суровых реалиях Интернета

Требования

•  Выбор стабильных серверов для загрузки

•  Устойчивость к отказам даже в процессе закачки

•  Нативные методы фоновой загрузки (iOS, Windows Phone)

Page 30: Тестируем мобильное приложение в суровых реалиях Интернета

Требования

•  Выбор стабильных серверов для загрузки

•  Устойчивость к отказам даже в процессе закачки

•  Нативные методы фоновой загрузки (iOS, Windows Phone)

Оказалось, что эти пункты плохо уживаются

Page 31: Тестируем мобильное приложение в суровых реалиях Интернета

Точки отказа

Page 32: Тестируем мобильное приложение в суровых реалиях Интернета

Нет доступа к сети

Page 33: Тестируем мобильное приложение в суровых реалиях Интернета

Нет связи с сервером

Page 34: Тестируем мобильное приложение в суровых реалиях Интернета

Встроенная рекламаКончился Интернет

Page 35: Тестируем мобильное приложение в суровых реалиях Интернета

Сервер упал

Page 36: Тестируем мобильное приложение в суровых реалиях Интернета

Нет связи с хранилищем

Page 37: Тестируем мобильное приложение в суровых реалиях Интернета

Хранилище упало

Page 38: Тестируем мобильное приложение в суровых реалиях Интернета

Плохая связьОбрывы

Page 39: Тестируем мобильное приложение в суровых реалиях Интернета

Сломалось все

Page 40: Тестируем мобильное приложение в суровых реалиях Интернета

И еще•  Перегрузки на сервере

Page 41: Тестируем мобильное приложение в суровых реалиях Интернета

И еще•  Перегрузки на сервере

•  Редиректы от провайдера

Page 42: Тестируем мобильное приложение в суровых реалиях Интернета

И еще•  Перегрузки на сервере

•  Редиректы от провайдера

•  Ошибки DNS

Page 43: Тестируем мобильное приложение в суровых реалиях Интернета

И еще•  Перегрузки на сервере

•  Редиректы от провайдера

•  Ошибки DNS

•  Баги в самом web-сервере

Page 44: Тестируем мобильное приложение в суровых реалиях Интернета

И еще•  Перегрузки на сервере

•  Редиректы от провайдера

•  Ошибки DNS

•  Баги в самом web-сервере

Все эти сценарии необходимо проверить

Page 45: Тестируем мобильное приложение в суровых реалиях Интернета

Проблемы

Page 46: Тестируем мобильное приложение в суровых реалиях Интернета

Сложная настройка окружения•  Изменение конфигурации web-сервера (Nginx, Apache)

Page 47: Тестируем мобильное приложение в суровых реалиях Интернета

Сложная настройка окружения•  Изменение конфигурации web-сервера (Nginx, Apache)

•  Выполнение команд в хост-системе

Page 48: Тестируем мобильное приложение в суровых реалиях Интернета

Сложная настройка окружения•  Изменение конфигурации web-сервера (Nginx, Apache)

•  Выполнение команд в хост-системе

•  Запуск произвольного скрипта на сервере

Page 49: Тестируем мобильное приложение в суровых реалиях Интернета

Большое количество работы•  Серверов несколько

Page 50: Тестируем мобильное приложение в суровых реалиях Интернета

Большое количество работы•  Серверов несколько

•  Платформы три

Page 51: Тестируем мобильное приложение в суровых реалиях Интернета

Большое количество работы•  Серверов несколько

•  Платформы три

•  Релизов много

Page 52: Тестируем мобильное приложение в суровых реалиях Интернета

Ограничение по ресурсам•  Времени мало

Page 53: Тестируем мобильное приложение в суровых реалиях Интернета

Ограничение по ресурсам•  Времени мало

•  Людей мало

Page 54: Тестируем мобильное приложение в суровых реалиях Интернета

Ограничение по ресурсам•  Времени мало

•  Людей мало

•  Людей с экспертизой очень мало

Page 55: Тестируем мобильное приложение в суровых реалиях Интернета

Ограничение по ресурсам•  Времени мало

•  Людей мало

•  Людей с экспертизой очень мало

Но тестировать все равно надо

Page 56: Тестируем мобильное приложение в суровых реалиях Интернета

Решение

Page 57: Тестируем мобильное приложение в суровых реалиях Интернета

Требования к инструменту•  Минимум операций

Page 58: Тестируем мобильное приложение в суровых реалиях Интернета

Требования к инструменту•  Минимум операций

•  Простота использования

Page 59: Тестируем мобильное приложение в суровых реалиях Интернета

Требования к инструменту•  Минимум операций

•  Простота использования

•  Простота реализации

Page 60: Тестируем мобильное приложение в суровых реалиях Интернета

Требования к инструменту•  Минимум операций

•  Простота использования

•  Простота реализации

•  Надежность

Page 61: Тестируем мобильное приложение в суровых реалиях Интернета

Декомпозиция задачи•  Копирование файлов на сервер

Page 62: Тестируем мобильное приложение в суровых реалиях Интернета

Декомпозиция задачи•  Копирование файлов на сервер

•  Конфигурационный файл

Page 63: Тестируем мобильное приложение в суровых реалиях Интернета

Декомпозиция задачи•  Копирование файлов на сервер

•  Конфигурационный файл

•  Скрипт

Page 64: Тестируем мобильное приложение в суровых реалиях Интернета

Декомпозиция задачи•  Копирование файлов на сервер

•  Конфигурационный файл

•  Скрипт

•  Выполнение команд на сервере

Page 65: Тестируем мобильное приложение в суровых реалиях Интернета

Декомпозиция задачи•  Копирование файлов на сервер

•  Конфигурационный файл

•  Скрипт

•  Выполнение команд на сервере

•  Перезапуск сервера

Page 66: Тестируем мобильное приложение в суровых реалиях Интернета

Декомпозиция задачи•  Копирование файлов на сервер

•  Конфигурационный файл

•  Скрипт

•  Выполнение команд на сервере

•  Перезапуск сервера

•  Запуск скрипта

Page 67: Тестируем мобильное приложение в суровых реалиях Интернета

Ansible

Page 68: Тестируем мобильное приложение в суровых реалиях Интернета

Аналоги

Page 69: Тестируем мобильное приложение в суровых реалиях Интернета

Ansible

Page 70: Тестируем мобильное приложение в суровых реалиях Интернета

Почему Ansible?

Page 71: Тестируем мобильное приложение в суровых реалиях Интернета

Почему Ansible?

Page 72: Тестируем мобильное приложение в суровых реалиях Интернета

Почему Ansible?

Page 73: Тестируем мобильное приложение в суровых реалиях Интернета

Про Ansible

Page 74: Тестируем мобильное приложение в суровых реалиях Интернета

Про Ansible

Page 75: Тестируем мобильное приложение в суровых реалиях Интернета

Про Ansible

Page 76: Тестируем мобильное приложение в суровых реалиях Интернета

Про Ansible

Page 77: Тестируем мобильное приложение в суровых реалиях Интернета

Про Ansible

Page 78: Тестируем мобильное приложение в суровых реалиях Интернета

Про Ansible

Page 79: Тестируем мобильное приложение в суровых реалиях Интернета

Примеры

Page 80: Тестируем мобильное приложение в суровых реалиях Интернета

Inventory. Список серверов [hosts]

host1 ansible_ssh_host=127.0.0.1

ansible_ssh_user=user ansible_ssh_pass=123

host2 ansible_ssh_host=127.0.0.2

ansible_ssh_user=user ansible_ssh_pass=456

Page 81: Тестируем мобильное приложение в суровых реалиях Интернета

Inventory. Задаем переменные [hosts:vars]

return_for_files=502

limit_rate=256K

upstream=root.domain.name

nginx_apply_method=restarted

Page 82: Тестируем мобильное приложение в суровых реалиях Интернета

Playbook. Запускаем команду - name: run-script | Run script

command: tc --help

async: 2678400

poll: 0

Page 83: Тестируем мобильное приложение в суровых реалиях Интернета

Playbook. Копируем файлы - name: configure-nginx | Configure nginx

template: src=../resources/config.j2

dest=./your-server.conf

owner=root group=root mode=0644

Page 84: Тестируем мобильное приложение в суровых реалиях Интернета

Шаблоны

#содержимое config.j2

...

return {{return_for_files}};

...

Page 85: Тестируем мобильное приложение в суровых реалиях Интернета

Эта переменная в inventory [hosts:vars]

return_for_files=502

limit_rate=256K

upstream=root.domain.name

nginx_apply_method=restarted

Page 86: Тестируем мобильное приложение в суровых реалиях Интернета

Вернемся в playbook - name: configure-nginx | Configure nginx

template: src=../resources/config.j2

dest=./your-server.conf

owner=root group=root mode=0644

Page 87: Тестируем мобильное приложение в суровых реалиях Интернета

Полученный файл #содержимое your-server.conf

...

return 502;

...

Page 88: Тестируем мобильное приложение в суровых реалиях Интернета

Playbook. Перезапускаем сервер - name: restart-nginx | Restart nginx

service: name=nginx state=restarted

when: nginx_apply_method == "restarted"

Page 89: Тестируем мобильное приложение в суровых реалиях Интернета

Та самая переменная в inventory [hosts:vars]

return_for_files=502

limit_rate=256K

upstream=root.domain.name

nginx_apply_method=restarted

Page 90: Тестируем мобильное приложение в суровых реалиях Интернета

Реализация

•  Разбиваем на классы конфигураций

Page 91: Тестируем мобильное приложение в суровых реалиях Интернета

Реализация

•  Разбиваем на классы конфигураций

•  Коды состояния HTTP

Page 92: Тестируем мобильное приложение в суровых реалиях Интернета

Реализация

•  Разбиваем на классы конфигураций

•  Коды состояния HTTP

•  Лимиты скорости

Page 93: Тестируем мобильное приложение в суровых реалиях Интернета

Реализация

•  Разбиваем на классы конфигураций

•  Коды состояния HTTP

•  Лимиты скорости

•  Определяем набор параметров для каждого класса

Page 94: Тестируем мобильное приложение в суровых реалиях Интернета

Реализация

•  Разбиваем на классы конфигураций

•  Коды состояния HTTP

•  Лимиты скорости

•  Определяем набор параметров для каждого класса

•  Пишем playbook'и

Page 95: Тестируем мобильное приложение в суровых реалиях Интернета

Важные моменты•  Каждая операция должна быть обратима

Page 96: Тестируем мобильное приложение в суровых реалиях Интернета

Важные моменты•  Каждая операция должна быть обратима

•  Нужно уметь приводить серверы в исходное состояние

Page 97: Тестируем мобильное приложение в суровых реалиях Интернета

Важные моменты•  Каждая операция должна быть обратима

•  Нужно уметь приводить серверы в исходное состояние

•  Пишем мониторинг состояния

Page 98: Тестируем мобильное приложение в суровых реалиях Интернета

Профит

Page 99: Тестируем мобильное приложение в суровых реалиях Интернета

Ранее

•  Подлючаемся к каждому серверу

Page 100: Тестируем мобильное приложение в суровых реалиях Интернета

Ранее

•  Подлючаемся к каждому серверу

•  Копируем файлы

Page 101: Тестируем мобильное приложение в суровых реалиях Интернета

Ранее

•  Подлючаемся к каждому серверу

•  Копируем файлы

•  Редактируем конфигурацию

Page 102: Тестируем мобильное приложение в суровых реалиях Интернета

Ранее

•  Подлючаемся к каждому серверу

•  Копируем файлы

•  Редактируем конфигурацию

•  Запускаем команды

Page 103: Тестируем мобильное приложение в суровых реалиях Интернета

Ранее

•  Подлючаемся к каждому серверу

•  Копируем файлы

•  Редактируем конфигурацию

•  Запускаем команды

И так каждый раз

Page 104: Тестируем мобильное приложение в суровых реалиях Интернета

Сейчас

•  Меняем пару параметров в inventory

Page 105: Тестируем мобильное приложение в суровых реалиях Интернета

Сейчас

•  Меняем пару параметров в inventory

•  Запускаем нужный playbook

Page 106: Тестируем мобильное приложение в суровых реалиях Интернета

Сейчас

•  Меняем пару параметров в inventory

•  Запускаем нужный playbook

И всё

Page 107: Тестируем мобильное приложение в суровых реалиях Интернета

Интерфейс

Page 108: Тестируем мобильное приложение в суровых реалиях Интернета

Делаем web интерфейс•  Интегрируем в Jenkins

Page 109: Тестируем мобильное приложение в суровых реалиях Интернета

Делаем web интерфейс•  Интегрируем в Jenkins

•  Используем стандартные средства SCM

Page 110: Тестируем мобильное приложение в суровых реалиях Интернета

Делаем web интерфейс•  Интегрируем в Jenkins

•  Используем стандартные средства SCM

•  Пишем что-то своё

Page 111: Тестируем мобильное приложение в суровых реалиях Интернета

Результаты

Page 112: Тестируем мобильное приложение в суровых реалиях Интернета

Результаты

•  Тестирование обновления данных стало простым

Page 113: Тестируем мобильное приложение в суровых реалиях Интернета

Результаты

•  Тестирование обновления данных стало простым

•  Найдено большое количество дефектов

Page 114: Тестируем мобильное приложение в суровых реалиях Интернета

Результаты

•  Тестирование обновления данных стало простым

•  Найдено большое количество дефектов

•  Изучено поведение мобильных платформ

Page 115: Тестируем мобильное приложение в суровых реалиях Интернета

Ссылки

•  http://www.ansible.com/ - Ansible

•  http://habrahabr.ru/post/211306/ - "Обзор: Puppet, Chef, Ansible, Salt"

•  https://jenkins-ci.org/ - Jenkins

Page 116: Тестируем мобильное приложение в суровых реалиях Интернета

Вопросы?

Усов Андрей

[email protected]

[email protected]