РИФ 2016, Внедрение контроля качества в большом...

103
Внедрение контроля качества в большом web-проекте на примере Badoo

Upload: -

Post on 09-Apr-2017

27 views

Category:

Business


1 download

TRANSCRIPT

Page 1: РИФ 2016, Внедрение контроля качества в большом web-проекте на примере Badoo

Внедрение контроля качества в большом web-проекте

на примере Badoo

Page 2: РИФ 2016, Внедрение контроля качества в большом web-проекте на примере Badoo

Badoo - сайт знакомств с новыми людьми, крупнейшая интернет-компания Западной Европы.

• 300 000 000+ пользователей

• 190 стран

• 46 языков

Badoo в наши дни

Page 3: РИФ 2016, Внедрение контроля качества в большом web-проекте на примере Badoo

С технической точки зрения это

• 150+ разработчиков и 50+ QA инженеров

• 3 000 000+ строк кода

• 60000+ юнит-тестам

• 600+ selenium-тестам

• 2 ежедневных релиза

Badoo в наши дни

Page 4: РИФ 2016, Внедрение контроля качества в большом web-проекте на примере Badoo

Как это было?

Feature1Feature2

Feature3Bugfix1

Bugfix2

Разработка

trunk

commits

release releasesvn

Page 5: РИФ 2016, Внедрение контроля качества в большом web-проекте на примере Badoo

Переводы, тестирование и выкладка

svn

Staging

QA + Translation Production

Deploy

Как это было?

Devel

Page 6: РИФ 2016, Внедрение контроля качества в большом web-проекте на примере Badoo

Преимущества

Как это было?

Page 7: РИФ 2016, Внедрение контроля качества в большом web-проекте на примере Badoo

Преимущества

• Скорость обсуждения задачи

Как это было?

Page 8: РИФ 2016, Внедрение контроля качества в большом web-проекте на примере Badoo

Преимущества

• Скорость обсуждения задачи

• Скорость разработки

Как это было?

Page 9: РИФ 2016, Внедрение контроля качества в большом web-проекте на примере Badoo

Преимущества

• Скорость обсуждения задачи

• Скорость разработки

• Проверенные инструменты

Как это было?

Page 10: РИФ 2016, Внедрение контроля качества в большом web-проекте на примере Badoo

Преимущества

• Скорость обсуждения задачи

• Скорость разработки

• Проверенные инструменты

• Тесное общение

Как это было?

Page 11: РИФ 2016, Внедрение контроля качества в большом web-проекте на примере Badoo

Недостатки

Как это было?

Page 12: РИФ 2016, Внедрение контроля качества в большом web-проекте на примере Badoo

Недостатки

• Незавершенные задачи в выкладке

Как это было?

Page 13: РИФ 2016, Внедрение контроля качества в большом web-проекте на примере Badoo

Недостатки

• Незавершенные задачи в выкладке

• Тяжело отслеживать состояние кода

Как это было?

Page 14: РИФ 2016, Внедрение контроля качества в большом web-проекте на примере Badoo

Недостатки

• Незавершенные задачи в выкладке

• Тяжело отслеживать состояние кода

• Невозможно откатить задачу

Как это было?

Page 15: РИФ 2016, Внедрение контроля качества в большом web-проекте на примере Badoo

Недостатки

• Незавершенные задачи в выкладке

• Тяжело отслеживать состояние кода

• Невозможно откатить задачу

• Работа отделов волнообразно зависит от выкладки

Как это было?

Page 16: РИФ 2016, Внедрение контроля качества в большом web-проекте на примере Badoo

Еще недостатки

• Выкладка задач тормозится

Как это было?

Page 17: РИФ 2016, Внедрение контроля качества в большом web-проекте на примере Badoo

Еще недостатки

• Выкладка задач тормозится

• Выкладка 1-2 раза в неделю

Как это было?

Page 18: РИФ 2016, Внедрение контроля качества в большом web-проекте на примере Badoo

Еще недостатки

• Выкладка задач тормозится

• Выкладка 1-2 раза в неделю

• Тяжелый процесс выкладки

Как это было?

Page 19: РИФ 2016, Внедрение контроля качества в большом web-проекте на примере Badoo

Еще недостатки

• Выкладка задач тормозится

• Выкладка 1-2 раза в неделю

• Тяжелый процесс выкладки

• С ростом команды растут проблемы с качеством

Как это было?

Page 20: РИФ 2016, Внедрение контроля качества в большом web-проекте на примере Badoo

Глобальные требования

• Формализовать процесс разработки

Page 21: РИФ 2016, Внедрение контроля качества в большом web-проекте на примере Badoo

Глобальные требования

• Формализовать процесс разработки

• Внедрить контроль качества на всех этапах

Page 22: РИФ 2016, Внедрение контроля качества в большом web-проекте на примере Badoo

Глобальные требования

• Формализовать процесс разработки

• Внедрить контроль качества на всех этапах

• Внедрить автоматизированное тестирование

Page 23: РИФ 2016, Внедрение контроля качества в большом web-проекте на примере Badoo

Глобальные требования

• Формализовать процесс разработки

• Внедрить контроль качества на всех этапах

• Внедрить автоматизированное тестирование

• Не потерять в скорости разработки

Page 24: РИФ 2016, Внедрение контроля качества в большом web-проекте на примере Badoo

Этап первый: упрощаем разработку

Задача: спроектировать удобный процесс параллельной разработки?

Page 25: РИФ 2016, Внедрение контроля качества в большом web-проекте на примере Badoo

Этап первый: упрощаем разработку

Задача: спроектировать удобный процесс параллельной разработки

Решение: заменить svn на git, который позволяет удобно осуществлять разработку в собственной версии кода каждому разработчику

?

!

Page 26: РИФ 2016, Внедрение контроля качества в большом web-проекте на примере Badoo

master

build_2016_03_21_11am

SRV-10637_add_sf_support

build_2016_03_21_4pm

BD-1786_spp_in_spain B0-435_cs_improvements

release release

Этап первый: упрощаем разработку

git

Page 27: РИФ 2016, Внедрение контроля качества в большом web-проекте на примере Badoo

Проектируем и пробуем

Этап первый: упрощаем разработку

+

Page 28: РИФ 2016, Внедрение контроля качества в большом web-проекте на примере Badoo

Проектируем и пробуем

• Используем оба хранилища - и svn, и git

Этап первый: упрощаем разработку

+

Page 29: РИФ 2016, Внедрение контроля качества в большом web-проекте на примере Badoo

Проектируем и пробуем

• Используем оба хранилища - и svn, и git

• Синхронизация кода при помощи git svn

Этап первый: упрощаем разработку

+

Page 30: РИФ 2016, Внедрение контроля качества в большом web-проекте на примере Badoo

Проектируем и пробуем

• Используем оба хранилища - и svn, и git

• Синхронизация кода при помощи git svn

Переводим на новую схему одну из команд

Этап первый: упрощаем разработку

+

Page 31: РИФ 2016, Внедрение контроля качества в большом web-проекте на примере Badoo

Анализируем и дополняем

Этап первый: упрощаем разработку

+

Page 32: РИФ 2016, Внедрение контроля качества в большом web-проекте на примере Badoo

Анализируем и дополняем

• Базовая инструкция дополнена четкими шагами

Этап первый: упрощаем разработку

+

Page 33: РИФ 2016, Внедрение контроля качества в большом web-проекте на примере Badoo

Анализируем и дополняем

• Базовая инструкция дополнена четкими шагами

• Разработан прототип системы сборки релиза

Этап первый: упрощаем разработку

+

Page 34: РИФ 2016, Внедрение контроля качества в большом web-проекте на примере Badoo

Анализируем и дополняем

• Базовая инструкция дополнена четкими шагами

• Разработан прототип системы сборки релиза

Начинаем перевод остальных отделов

Этап первый: упрощаем разработку

+

Page 35: РИФ 2016, Внедрение контроля качества в большом web-проекте на примере Badoo

Переходим полностью

Этап первый: упрощаем разработку

+

Page 36: РИФ 2016, Внедрение контроля качества в большом web-проекте на примере Badoo

Переходим полностью

• Презентация об основах работы с git

Этап первый: упрощаем разработку

+

Page 37: РИФ 2016, Внедрение контроля качества в большом web-проекте на примере Badoo

Переходим полностью

• Презентация об основах работы с git

• Помощь в переходный период

Этап первый: упрощаем разработку

+

Page 38: РИФ 2016, Внедрение контроля качества в большом web-проекте на примере Badoo

Переходим полностью

• Презентация об основах работы с git

• Помощь в переходный период

• Специальная страничка в Confluence

Этап первый: упрощаем разработку

+

Page 39: РИФ 2016, Внедрение контроля качества в большом web-проекте на примере Badoo

Переходим полностью

• Презентация об основах работы с git

• Помощь в переходный период

• Специальная страничка в Confluence

Торжественное закрытие svn

Этап первый: упрощаем разработку

+

Page 40: РИФ 2016, Внедрение контроля качества в большом web-проекте на примере Badoo

Этап второй: unit-тесты

Задача: дать разработчику быстрый ответ о качестве кода на ранних этапах разработки?

Page 41: РИФ 2016, Внедрение контроля качества в большом web-проекте на примере Badoo

Этап второй: unit-тесты

Задача: дать разработчику быстрый ответ о качестве кода на ранних этапах разработки

Решение: unit-тесты, написанные самим разработчиком + регрессионные тесты, написанные коллегами ранее

?

!

Page 42: РИФ 2016, Внедрение контроля качества в большом web-проекте на примере Badoo

Внедрение культуры написания юнит-тестов

Этап второй: unit-тесты

+

Page 43: РИФ 2016, Внедрение контроля качества в большом web-проекте на примере Badoo

Внедрение культуры написания юнит-тестов

• Написание нескольких примеров

Этап второй: unit-тесты

+

Page 44: РИФ 2016, Внедрение контроля качества в большом web-проекте на примере Badoo

Внедрение культуры написания юнит-тестов

• Написание нескольких примеров

• Организация семинаров

Этап второй: unit-тесты

+

Page 45: РИФ 2016, Внедрение контроля качества в большом web-проекте на примере Badoo

Внедрение культуры написания юнит-тестов

• Написание нескольких примеров

• Организация семинаров

• Показательная демонстрация полезности

Этап второй: unit-тесты

+

Page 46: РИФ 2016, Внедрение контроля качества в большом web-проекте на примере Badoo

Внедрение культуры написания юнит-тестов

• Написание нескольких примеров

• Организация семинаров

• Показательная демонстрация полезности

• Поощрение первопроходцев

Этап второй: unit-тесты

+

Page 47: РИФ 2016, Внедрение контроля качества в большом web-проекте на примере Badoo

Стимулируем процесс

Этап второй: unit-тесты

+

Page 48: РИФ 2016, Внедрение контроля качества в большом web-проекте на примере Badoo

Стимулируем процесс

• Добавление инструментов

Этап второй: unit-тесты

+

Page 49: РИФ 2016, Внедрение контроля качества в большом web-проекте на примере Badoo

Стимулируем процесс

• Добавление инструментов

• Добавление обязательного прогона unit-тестов

Этап второй: unit-тесты

+

Page 50: РИФ 2016, Внедрение контроля качества в большом web-проекте на примере Badoo

Стимулируем процесс

• Добавление инструментов

• Добавление обязательного прогона unit-тестов

Как результат - резкий рост количества юнит-тестов: с пары десятков до более 3000.

Этап второй: unit-тесты

+

Page 51: РИФ 2016, Внедрение контроля качества в большом web-проекте на примере Badoo

Этап третий: code review

Задача: повысить читаемость кода, добавив процесс ревью кода и удобный интрумент для него

?

Page 52: РИФ 2016, Внедрение контроля качества в большом web-проекте на примере Badoo

Этап третий: code review

Задача: повысить читаемость кода, добавив процесс ревью кода и удобный интрумент для него

Решение: gitphp с надстройками для ревью и интеграцией с Jira

?

!

Page 53: РИФ 2016, Внедрение контроля качества в большом web-проекте на примере Badoo

Процесс - обязательный. Способ - вольный:

Этап третий: code review

+

Page 54: РИФ 2016, Внедрение контроля качества в большом web-проекте на примере Badoo

Процесс - обязательный. Способ - вольный:

• code review осуществляется руководителем отдела

Этап третий: code review

+

Page 55: РИФ 2016, Внедрение контроля качества в большом web-проекте на примере Badoo

Процесс - обязательный. Способ - вольный:

• code review осуществляется руководителем отдела

• code review - внутри группы

Этап третий: code review

+

Page 56: РИФ 2016, Внедрение контроля качества в большом web-проекте на примере Badoo

Процесс - обязательный. Способ - вольный:

• code review осуществляется руководителем отдела

• code review - внутри группы

• задачи попадают в общую очередь на review

Этап третий: code review

+

Page 57: РИФ 2016, Внедрение контроля качества в большом web-проекте на примере Badoo

Процесс - обязательный. Способ - вольный:

• code review осуществляется руководителем отдела

• code review - внутри группы

• задачи попадают в общую очередь на review

• review проводят от каждого отдела

Этап третий: code review

+

Page 58: РИФ 2016, Внедрение контроля качества в большом web-проекте на примере Badoo

Этап четвертый: автоматизация процессов

Задача: ускорить выкладку новых фич, не потеряв в качестве?

Page 59: РИФ 2016, Внедрение контроля качества в большом web-проекте на примере Badoo

Этап четвертый: автоматизация процессов

Задача: ускорить выкладку новых фич, не потеряв в качестве

Решение: специальная команда release-инженеров для автоматизации сборки и выкладки билда

?

!

Page 60: РИФ 2016, Внедрение контроля качества в большом web-проекте на примере Badoo

Внедрение автоматизации

Автовыкладка на стейджинг

Code freeze

git hooks

AIDA

CI + CDSelenium

Шоты

Этап четвертый: автоматизация процессов

Page 61: РИФ 2016, Внедрение контроля качества в большом web-проекте на примере Badoo

Подзадача: автоматизировать часть code review

Этап четвертый: автоматизация процессов

?

Page 62: РИФ 2016, Внедрение контроля качества в большом web-проекте на примере Badoo

Подзадача: автоматизировать часть code review

Решение: добавляются новые git-хуки, использующие в том числе анализаторы кода

Этап четвертый: автоматизация процессов

?

!

Page 63: РИФ 2016, Внедрение контроля качества в большом web-проекте на примере Badoo

Что начинаем проверять+

Этап четвертый: автоматизация процессов

Page 64: РИФ 2016, Внедрение контроля качества в большом web-проекте на примере Badoo

Что начинаем проверять

• Каждая ветка начинается с номера задачи

+

Этап четвертый: автоматизация процессов

Page 65: РИФ 2016, Внедрение контроля качества в большом web-проекте на примере Badoo

Что начинаем проверять

• Каждая ветка начинается с номера задачи

• Наличие сопровождающего для кода

+

Этап четвертый: автоматизация процессов

Page 66: РИФ 2016, Внедрение контроля качества в большом web-проекте на примере Badoo

Что начинаем проверять

• Каждая ветка начинается с номера задачи

• Наличие сопровождающего для кода

• Состояние задачи

+

Этап четвертый: автоматизация процессов

Page 67: РИФ 2016, Внедрение контроля качества в большом web-проекте на примере Badoo

Что начинаем проверять

• Каждая ветка начинается с номера задачи

• Наличие сопровождающего для кода

• Состояние задачи

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

+

Этап четвертый: автоматизация процессов

Page 68: РИФ 2016, Внедрение контроля качества в большом web-проекте на примере Badoo

Подзадача: разумно организовать сборку билда

Этап четвертый: автоматизация процессов

?

Page 69: РИФ 2016, Внедрение контроля качества в большом web-проекте на примере Badoo

Подзадача: разумно организовать сборку билда

Решение: уменьшаем человеческий фактор в процессе сборки

Этап четвертый: автоматизация процессов

?

!

Page 70: РИФ 2016, Внедрение контроля качества в большом web-проекте на примере Badoo

Разгружаем релиз-инженеров+

Этап четвертый: автоматизация процессов

Page 71: РИФ 2016, Внедрение контроля качества в большом web-проекте на примере Badoo

Разгружаем релиз-инженеров

• В помощь написана AIDA

+

Этап четвертый: автоматизация процессов

Page 72: РИФ 2016, Внедрение контроля качества в большом web-проекте на примере Badoo

Разгружаем релиз-инженеров

• В помощь написана AIDA

• Автомерж каждые 5 минут

+

Этап четвертый: автоматизация процессов

Page 73: РИФ 2016, Внедрение контроля качества в большом web-проекте на примере Badoo

Разгружаем релиз-инженеров

• В помощь написана AIDA

• Автомерж каждые 5 минут

• Вводится code freeze перед выкладками

+

Этап четвертый: автоматизация процессов

Page 74: РИФ 2016, Внедрение контроля качества в большом web-проекте на примере Badoo

Разгружаем релиз-инженеров

• В помощь написана AIDA

• Автомерж каждые 5 минут

• Вводится code freeze перед выкладками

Два релиза в день!

+

Этап четвертый: автоматизация процессов

Page 75: РИФ 2016, Внедрение контроля качества в большом web-проекте на примере Badoo

Подзадача: ускорить unit-тесты (написано уже более 25000!)

Этап четвертый: автоматизация процессов

?

Page 76: РИФ 2016, Внедрение контроля качества в большом web-проекте на примере Badoo

Подзадача: ускорить unit-тесты (написано уже более 25000!)

Решение: разделение unit-тестов на группы для асинхронного прогона на нескольких серверах

Этап четвертый: автоматизация процессов

?

!

Page 77: РИФ 2016, Внедрение контроля качества в большом web-проекте на примере Badoo

Этап четвертый: автоматизация процессов

Common suite

+

Page 78: РИФ 2016, Внедрение контроля качества в большом web-проекте на примере Badoo

suite 1

suite 3

suite 2

suite 4suite 5

suite 6

Этап четвертый: автоматизация процессов

Common suite

+

Page 79: РИФ 2016, Внедрение контроля качества в большом web-проекте на примере Badoo

suite 1

suite 3

suite 2

suite 4suite 5

suite 6

Cloud computing

Этап четвертый: автоматизация процессов

Common suite

+

Page 80: РИФ 2016, Внедрение контроля качества в большом web-проекте на примере Badoo

Подзадача: упростить повторные проверки сложных сценариев

Этап четвертый: автоматизация процессов

?

Page 81: РИФ 2016, Внедрение контроля качества в большом web-проекте на примере Badoo

Подзадача: упростить повторные проверки сложных сценариев

Решение: подключить к написанию selenium-тестов всех QA-инженеров

Этап четвертый: автоматизация процессов

?

!

Page 82: РИФ 2016, Внедрение контроля качества в большом web-проекте на примере Badoo

Реализуем

Этап четвертый: автоматизация процессов

+

Page 83: РИФ 2016, Внедрение контроля качества в большом web-проекте на примере Badoo

Реализуем

• Команда автоматизаторов тестов

Этап четвертый: автоматизация процессов

+

Page 84: РИФ 2016, Внедрение контроля качества в большом web-проекте на примере Badoo

Реализуем

• Команда автоматизаторов тестов

• Цикл cеминаров

Этап четвертый: автоматизация процессов

+

Page 85: РИФ 2016, Внедрение контроля качества в большом web-проекте на примере Badoo

Реализуем

• Команда автоматизаторов тестов

• Цикл cеминаров

• Когда можно и нужно писать selenium-тесты

Этап четвертый: автоматизация процессов

+

Page 86: РИФ 2016, Внедрение контроля качества в большом web-проекте на примере Badoo

Реализуем

• Команда автоматизаторов тестов

• Цикл cеминаров

• Когда можно и нужно писать selenium-тесты

Участвует каждый QA-инженер!

Этап четвертый: автоматизация процессов

+

Page 87: РИФ 2016, Внедрение контроля качества в большом web-проекте на примере Badoo

Подзадача: уметь проверять задачу на боевых данных до выкладки.

Этап четвертый: автоматизация процессов

?

Page 88: РИФ 2016, Внедрение контроля качества в большом web-проекте на примере Badoo

Подзадача: уметь проверять задачу на боевых данных до выкладки.

Решение: шоты - создание “стейджинга” для отдельной ветки (бонус - генерация шаблонов).

Этап четвертый: автоматизация процессов

?

!

Page 89: РИФ 2016, Внедрение контроля качества в большом web-проекте на примере Badoo

Подзадача: дополнить автоматизированные проверки составных задач

Этап четвертый: автоматизация процессов

?

Page 90: РИФ 2016, Внедрение контроля качества в большом web-проекте на примере Badoo

Подзадача: дополнить автоматизированные проверки составных задач

Решение: AIDA приобретает дополнительные возможности

Этап четвертый: автоматизация процессов

?

!

Page 91: РИФ 2016, Внедрение контроля качества в большом web-проекте на примере Badoo

Дополнительные возможности

Этап четвертый: автоматизация процессов

+

Page 92: РИФ 2016, Внедрение контроля качества в большом web-проекте на примере Badoo

Дополнительные возможности

• Проверка дополнительных маркеров

Этап четвертый: автоматизация процессов

+

Page 93: РИФ 2016, Внедрение контроля качества в большом web-проекте на примере Badoo

Дополнительные возможности

• Проверка дополнительных маркеров

• Запуск smoke-тестов

Этап четвертый: автоматизация процессов

+

Page 94: РИФ 2016, Внедрение контроля качества в большом web-проекте на примере Badoo

Дополнительные возможности

• Проверка дополнительных маркеров

• Запуск smoke-тестов

• Пересборка билда при откате проблемной задачи

Этап четвертый: автоматизация процессов

+

Page 95: РИФ 2016, Внедрение контроля качества в большом web-проекте на примере Badoo

Дополнительные возможности

• Проверка дополнительных маркеров

• Запуск smoke-тестов

• Пересборка билда при откате проблемной задачи

• Нотификации разработчику и QA-инженеру

Этап четвертый: автоматизация процессов

+

Page 96: РИФ 2016, Внедрение контроля качества в большом web-проекте на примере Badoo

Подзадача: уметь быстро определять и решать проблемы при выкладке

Этап четвертый: автоматизация процессов

?

Page 97: РИФ 2016, Внедрение контроля качества в большом web-проекте на примере Badoo

Подзадача: уметь быстро определять и решать проблемы при выкладке

Решение: расширение мониторинга и карантин на завершение выкладки

Этап четвертый: автоматизация процессов

?

!

Page 98: РИФ 2016, Внедрение контроля качества в большом web-проекте на примере Badoo

Контроль выкладки

Этап четвертый: автоматизация процессов

+

Page 99: РИФ 2016, Внедрение контроля качества в большом web-проекте на примере Badoo

Контроль выкладки

• Асинхронная выкладка, атомарное переключение

Этап четвертый: автоматизация процессов

+

Page 100: РИФ 2016, Внедрение контроля качества в большом web-проекте на примере Badoo

Контроль выкладки

• Асинхронная выкладка, атомарное переключение

• Мониторинг ключевых показателей

Этап четвертый: автоматизация процессов

+

Page 101: РИФ 2016, Внедрение контроля качества в большом web-проекте на примере Badoo

Контроль выкладки

• Асинхронная выкладка, атомарное переключение

• Мониторинг ключевых показателей

• Быстрый “откат” при проблемах

Этап четвертый: автоматизация процессов

+

Page 102: РИФ 2016, Внедрение контроля качества в большом web-проекте на примере Badoo

• Набирать высококлассных QA-инженеров

• Подобные задачи требуют времени

• Искать пути оптимизации

Что же ещё?

Page 103: РИФ 2016, Внедрение контроля качества в большом web-проекте на примере Badoo

Александр Свинцов [email protected]

Badoo Development

tech.badoo.com habrahabr.ru/company/badoo/

Спасибо за внимание!

?