Worldwide биллинг Badoo глазами QA
description
Transcript of Worldwide биллинг Badoo глазами QA
World Wide биллинг глазами QAКудинов Илья, Badoo
Тестирование биллинга —это не (очень) страшно!
8 шагов к успешному тестированию биллинга
● ???
● ???
● ???
● ???
● ???
● ???
● ???
● ???
8 шагов к успешному тестированию биллинга
● Не боимся!
● ???
● ???
● ???
● ???
● ???
● ???
● ???
Немного о Badoo
● >220 млн пользователей● >1.5 млн пользователей онлайн в пике
● Приложения для всех популярных платформ
● >140 разработчиков, >30 QA-инженеров● 2 релиза в день● ~30 задач в релизе
Биллинг Badoo
● Платежи во всех странах планеты● ~30 активных интеграций агрегаторов (за всё время — больше 100)
● ~300 обращений в секунду
● 9 разработчиков● 3 QA инженера
Billing cluster
Billing API
Скриптовые машины
CreditCardserver
Облачные сервисы
Платёжныесистемы
Задачи разработки биллинга
● Новый функционал
Задачи разработки биллинга
● Новый функционал
● Новые интеграции
Задачи разработки биллинга
● Новый функционал
● Новые интеграции
● Актуализация интеграций
Задачи разработки биллинга
● Новый функционал
● Новые интеграции
● Актуализация интеграций
● Исправление багов
Задачи разработки биллинга
● Новый функционал
● Новые интеграции
● Актуализация интеграций
● Исправление багов
● Оптимизация
Задачи разработки биллинга
● Новый функционал
● Новые интеграции
● Актуализация интеграций
● Исправление багов
● Оптимизация
● Решение проблем технической поддержки
Задачи разработки биллинга
● Новый функционал
● Новые интеграции
● Актуализация интеграций
● Исправление багов
● Оптимизация
● Решение проблем технической поддержки
● Технический долг
Что тестируем?
Веб-визарды
Пользовательскиеинтерфейсы
Мобильныевизарды
Окна настроек
Что тестируем?
Веб-визарды
Пользовательскиеинтерфейсы
Мобильныевизарды
Окна настроек
Админка
конфигураторбиллинга
Инструменты для техподдержки
и тестирования
Что тестируем?
Веб-визарды
Пользовательскиеинтерфейсы
Мобильныевизарды
Окна настроек
Серверная «внутрянка»
Логикаплатежей
Отложенныесобытия
Очереди иОказание услуг
Админка
конфигураторбиллинга
Инструменты для техподдержки
и тестирования
Пользовательские интерфейсы
Пользовательские интерфейсы
● Корректное отображение платёжных форм
Пользовательские интерфейсы
● Корректное отображение платёжных форм
● Правильные цены
Пользовательские интерфейсы
● Корректное отображение платёжных форм
● Правильные цены
● Условия оказания сервиса
Пользовательские интерфейсы
● Корректное отображение платёжных форм
● Правильные цены
● Условия оказания сервиса
● Попапы с сообщениями об успешной оплате или об ошибке
Пользовательские интерфейсы
● Корректное отображение платёжных форм
● Правильные цены
● Условия оказания сервиса
● Попапы с сообщениями об успешной оплате или об ошибке
● Соответствие требованиям регуляторов
Пользовательские интерфейсы
Песочницы
● Тестовое окружение
● Тестовые данные
● Собственные тестовые заглушки
● Но не всегда :(
Мобильные визарды
● Недостаточно менять код биллинга
Мобильные визарды
● Недостаточно менять код биллинга
● Специализированные методы платежей
Мобильные визарды
● Недостаточно менять код биллинга
● Специализированные методы платежей
● Не всегда удобные песочницы
Мобильные визарды
● Недостаточно менять код биллинга
● Специализированные методы платежей
● Не всегда удобные песочницы
● Ошибки не только на нашей стороне
Мобильные визарды
● Недостаточно менять код биллинга
● Специализированные методы платежей
● Не всегда удобные песочницы
● Ошибки не только на нашей стороне
● Определённая зависимость от девайса
Требования регуляторов
● Дизайн платёжных окон● Формулировки для условий● Время для проведения платежей
8 шагов к успешному тестированию биллинга
● Не боимся
● Тестируем платежи максимально полно!
● ???
● ???
● ???
● ???
● ???
● ???
Работа с внешними сервисами
● Не всегда ошибки на нашей стороне
Работа с внешними сервисами
● Не всегда ошибки на нашей стороне
● Партнёры иногда работают не быстро
Работа с внешними сервисами
● Не всегда ошибки на нашей стороне
● Партнёры иногда работают не быстро
● Не всегда уведомляют об изменениях
Работа с внешними сервисами
● Не всегда ошибки на нашей стороне
● Партнёры иногда работают не быстро
● Не всегда уведомляют об изменениях
● Документация может быть неполной или некорректной
Работа с внешними сервисами
● Не всегда ошибки на нашей стороне
● Партнёры иногда работают не быстро
● Не всегда уведомляют об изменениях
● Документация может быть неполной или некорректной
● Иногда выгоднее временно отключить, чем пытаться править :(
8 шагов к успешному тестированию биллинга
● Не боимся
● Тестируем платежи максимально полно
● Не верим в идеальность агрегаторов!
● ???
● ???
● ???
● ???
● ???
Админка
● Инструменты управления подписками пользователей
Админка
● Инструменты управления подписками пользователей
● Конфигуратор биллинга
– Цены и доступность сервисов и методов платежей
– Настройки для разных flow и приложений
– A/B тестирование
Админка
● Инструменты управления подписками пользователей
● Конфигуратор биллинга
– Цены и доступность сервисов и методов платежей
– Настройки для разных flow и приложений
– A/B тестирование
● Промо-акции
Routing Platform
8 шагов к успешному тестированию биллинга
● Не боимся
● Тестируем платежи максимально полно
● Не верим в идеальность агрегаторов
● Тестируем админку!
● ???
● ???
● ???
● ???
Самый сок — внутренняя магия
Внутренняя логика платежей
Внутренняя логика платежей
● Обращения к платёжной системе
Внутренняя логика платежей
● Обращения к платёжной системе
● Нотификации от платёжной системы
Внутренняя логика платежей
● Обращения к платёжной системе
● Нотификации от платёжной системы
● Оказание услуг
Внутренняя логика платежей
● Обращения к платёжной системе
● Нотификации от платёжной системы
● Оказание услуг
● Обновление подписок
Внутренняя логика платежей
● Обращения к платёжной системе
● Нотификации от платёжной системы
● Оказание услуг
● Обновление подписок
● Платежи по имеющимся деталям
Внутренняя логика платежей
● Обращения к платёжной системе
● Нотификации от платёжной системы
● Оказание услуг
● Обновление подписок
● Платежи по имеющимся деталям
● Откат операции в случае ошибки
Внутренняя логика платежей
● Обращения к платёжной системе
● Нотификации от платёжной системы
● Оказание услуг
● Обновление подписок
● Платежи по имеющимся деталям
● Откат операции в случае ошибки
● And on and on and on and on...
Внутренняя логика платежей
● ЧИТАЕМ КОД!
Внутренняя логика платежей
● ЧИТАЕМ КОД!
● Пишем интеграционные тесты
Внутренняя логика платежей
● ЧИТАЕМ КОД!
● Пишем интеграционные тесты
● Отключаем обращения к агрегаторам
Внутренняя логика платежей
● ЧИТАЕМ КОД!
● Пишем интеграционные тесты
● Отключаем обращения к агрегаторам
● Эмулируем нотификации
Внутренняя логика платежей
● ЧИТАЕМ КОД!
● Пишем интеграционные тесты
● Отключаем обращения к агрегаторам
● Эмулируем нотификации
● Правим базы данных руками
Внутренняя логика платежей
● ЧИТАЕМ КОД!
● Пишем интеграционные тесты
● Отключаем обращения к агрегаторам
● Эмулируем нотификации
● Правим базы данных руками
● QAAPI!
8 шагов к успешному тестированию биллинга
● Не боимся
● Тестируем платежи максимально полно
● Не верим в идеальность агрегаторов
● Тестируем админку
● С готовностью лезем в дебри!
● ???
● ???
● ???
Занимательный дебаг
Занимательный дебаг
● Добавление дебаг-вывода
Занимательный дебаг
● Добавление дебаг-вывода
● Чтение логов и графиков
Занимательный дебаг
● Добавление дебаг-вывода
● Чтение логов и графиков
● Контроль данных в БД
Занимательный дебаг
● Добавление дебаг-вывода
● Чтение логов и графиков
● Контроль данных в БД
● Сборка «контрольных» и «тестовых» приложений
Занимательный дебаг
● Добавление дебаг-вывода
● Чтение логов и графиков
● Контроль данных в БД
● Сборка «контрольных» и «тестовых» приложений
● Много мата
8 шагов к успешному тестированию биллинга
● Не боимся
● Тестируем платежи максимально полно
● Не верим в идеальность агрегаторов
● Тестируем админку
● С готовностью лезем в дебри
● Общаемся с разработчиками!
● ???
● ???
Авто-тесты
Авто-тесты
Модульные
Интеграционные
Системные
Авто-тесты
● Запуск руками при разработке
Авто-тесты
● Запуск руками при разработке
● Автоматический запуск по готовности задачи
Авто-тесты
● Запуск руками при разработке
● Автоматический запуск по готовности задачи
● Запуск руками при тестировании
Авто-тесты
● Запуск руками при разработке
● Автоматический запуск по готовности задачи
● Запуск руками при тестировании
● Автоматический запуск при сборке билда
Авто-тесты
● Запуск руками при разработке
● Автоматический запуск по готовности задачи
● Запуск руками при тестировании
● Автоматический запуск при сборке билда
● Регулярный автоматический прогон на стейджинге
Ускорение автотестов
● Облачная пускалка
● Селениум-ферма
● QAAPI
● Много агентов TeamCity
8 шагов к успешному тестированию биллинга
● Не боимся
● Тестируем платежи максимально полно
● Не верим в идеальность агрегаторов
● Тестируем админку
● С готовностью лезем в дебри
● Общаемся с разработчиками
● Пишем и гоняем тесты!
● ???
Мониторинг
● Контроль над состоянием системы
● Проверка задач после релиза
● Быстрое обнаружение аномалий
Метрики мониторинга
● Логирование ошибок
Метрики мониторинга
● Логирование ошибок
● Дебаг для исследования аномалий
Метрики мониторинга
● Логирование ошибок
● Дебаг для исследования аномалий
● Графики
– Производительность и нагрузка
– Размер очередей, время доставки сервиса
– Успешные платежи странам, агрегаторам и т.д.
Метрики мониторинга
● Логирование ошибок
● Дебаг для исследования аномалий
● Графики
– Производительность и нагрузка
– Размер очередей, время доставки сервиса
– Успешные платежи по странам и агрегаторам
● Подробное логирование каждой операции
RRDtool
Splunk
BVM v2
● Автоматическая система анализа данных
● Наблюдение за всеми способами платежей
● Реагирует на новые аномалии
● Умеет учитывать сезонность графиков
Изучение аномалий
8 шагов к успешному тестированию биллинга
● Не боимся
● Тестируем платежи максимально полно
● Не верим в идеальность агрегаторов
● Тестируем админку
● С готовностью лезем в дебри
● Общаемся с разработчиками
● Пишем и гоняем тесты
● Изучаем поведение системы!
8 шагов к успешному тестированию биллинга
● Не боимся
● Тестируем платежи максимально полно
● Не верим в идеальность агрегаторов
● Тестируем админку
● С готовностью лезем в дебри
● Общаемся с разработчиками
● Пишем и гоняем тесты
● Изучаем поведение системы
Заключение
Badoo DevelopmentBadoo Developmenthttp://vk.com/badoocomhttp://fb.com/BadooMoscow http://habrahabr.ru/company/badoo
Кудинов ИльяКудинов Илья[email protected]://vk.com/relzeg http://fb.com/relzeg