Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Развитие процессов тестирования в Badoo за три года

10,885 views

Published on

Доклад Ильи Кудинова на конференции SQA Days-19, 20-21 мая 2016 г., Санкт-Петербург

Published in: Education
  • Be the first to comment

Развитие процессов тестирования в Badoo за три года

  1. 1. Развитие процессов тестирования в Badoo за три года, или как мы думали, что всё хорошо, а оказалось, что можно лучше. Кудинов Илья, Badoo Development
  2. 2. Немного цифр — как обычно ● 2 серверных релиза в день ● Еженедельные релизы приложений ● ~80 => ~150 разработчиков ● ~20 => ~50 QA-инженеров ● 180 => 300+ миллионов пользователей ● 0.6 => 1+ миллиона пользователей онлайн
  3. 3. Разные QA-флоу ● Web / сервер мобильных приложений ● Демоны на С / C++ / Go ● Мобильные флоу: – iOS – Android – Windows – Mobile Web
  4. 4. 5 (или около того) этапов контроля качества 1. Code Review 2. Тестирование на девеле 3. Тестирование в шоте 4. Тестирование на стейджинге 5. Верификация на продакшне
  5. 5. Code Review
  6. 6. Code Review ● «Автоматизированное» ревью — гит-хуки
  7. 7. Code Review ● «Автоматизированное» ревью — гит-хуки – Проверка имени ветки
  8. 8. Code Review ● «Автоматизированное» ревью — гит-хуки – Проверка имени ветки – Проверка прав на коммит
  9. 9. Code Review ● «Автоматизированное» ревью — гит-хуки – Проверка имени ветки – Проверка прав на коммит – Проверяем соответствие код-формату (phpcf!) https://habrahabr.ru/company/badoo/blog/232133/
  10. 10. Code Review ● «Автоматизированное» ревью — гит-хуки – Проверка имени ветки – Проверка прав на коммит – Проверяем соответствие код-формату (phpcf!) – Обновление статусов и комментарии в Jira
  11. 11. Code Review ● «Автоматизированное» ревью — гит-хуки – Проверка имени ветки – Проверка прав на коммит – Проверяем соответствие код-формату (phpcf!) – Обновление статусов и комментарии в Jira – Корректность тестов
  12. 12. Code Review ● «Автоматизированное» ревью — гит-хуки – Проверка имени ветки – Проверка прав на коммит – Проверяем соответствие код-формату (phpcf!) – Обновление статусов и комментарии в Jira – Корректность тестов – И мнооооогое-многое другое
  13. 13. Code Review ● «Ручное» ревью https://habrahabr.ru/company/badoo/blog/200946/
  14. 14. Code Review ● «Ручное» ревью – Корректность логики
  15. 15. Code Review ● «Ручное» ревью – Корректность логики – Оптимальность решения
  16. 16. Code Review ● «Ручное» ревью – Корректность логики – Оптимальность решения – Соответствие архитектуре
  17. 17. Code Review ● «Ручное» ревью – Корректность логики – Оптимальность решения – Соответствие архитектуре – Покрытие юнит-тестами
  18. 18. Code Review ● «Ручное» ревью – Корректность логики – Оптимальность решения – Соответствие архитектуре – Покрытие юнит-тестами – Проверка со стороны других отделов
  19. 19. Автоматическое тестирование ветки История войны за автоматический прогон юнит-тестов
  20. 20. Автоматическое тестирование ветки 2012 ● 15'000 тестов ● Однопоточный / топорный многопоточный запуск ● >40 минут на прохождение тестов ● Запускаем только руками :(
  21. 21. Автоматическое тестирование ветки 2013 ● 25'000 тестов ● Многопоточная пускалка ● 5 минут на прохождение тестов ● Запускаем по резолву задачи! https://habrahabr.ru/company/badoo/blog/181488/
  22. 22. Автоматическое тестирование ветки 2014 ● 40'000 тестов ● Облачная пускалка ● 2-3 минуты на прохождение тестов
  23. 23. Автоматическое тестирование ветки 2015 ● 55'000 тестов (каверидж ~50%) ● Стараемся запускать тесты по кавериджу ● 1-2 минуты на прохождение тестов для ветки ● 5-7 минут на прохождение всех тестов https://habrahabr.ru/company/badoo/blog/264497/
  24. 24. Автоматическое тестирование ветки 2016 ● 60'000+ тестов (and counting!) ● PHP7! ● SoftMocks! ● 2-3 минуты на все тесты! https://habrahabr.ru/company/badoo/blog/279617/
  25. 25. Автоматическое тестирование ветки
  26. 26. Тестирование на девеле
  27. 27. Совсем ручное тестирование
  28. 28. Совсем ручное тестирование ● Регистрируем пользователя для каждого теста
  29. 29. Совсем ручное тестирование ● Регистрируем пользователя для каждого теста ● Заливаем и модерируем фотографии
  30. 30. Совсем ручное тестирование ● Регистрируем пользователя для каждого теста ● Заливаем и модерируем фотографии ● Подготавливаем тестовые данные
  31. 31. Совсем ручное тестирование ● Регистрируем пользователя для каждого теста ● Заливаем и модерируем фотографии ● Подготавливаем тестовые данные ● Сложновоспроизводимые кейсы
  32. 32. Совсем ручное тестирование ● Регистрируем пользователя для каждого теста ● Заливаем и модерируем фотографии ● Подготавливаем тестовые данные ● Сложновоспроизводимые кейсы ● Не забываем удалять
  33. 33. QAAPI
  34. 34. QAAPI ● Быстрая регистрация пользователя
  35. 35. QAAPI ● Быстрая регистрация пользователя ● Генерация и заполнение любых данных
  36. 36. QAAPI ● Быстрая регистрация пользователя ● Генерация и заполнение любых данных ● Изменение нередактируемых параметров
  37. 37. QAAPI ● Быстрая регистрация пользователя ● Генерация и заполнение любых данных ● Изменение нередактируемых параметров ● Ускорение автотестов
  38. 38. QAAPI ● Быстрая регистрация пользователя ● Генерация и заполнение любых данных ● Изменение нередактируемых параметров ● Ускорение автотестов ● QAAPI сценарии
  39. 39. QAAPI ● Быстрая регистрация пользователя ● Генерация и заполнение любых данных ● Изменение нередактируемых параметров ● Ускорение автотестов ● QAAPI сценарии ● Недоступно для внешних пользователей https://habrahabr.ru/company/badoo/blog/264497/
  40. 40. Улучшенное окружение и инструментарий
  41. 41. Облачный скриптовый фреймворк * * 1 * * script1.php * 5 * * * script2.php
  42. 42. User Split https://habrahabr.ru/company/badoo/blog/278089/
  43. 43. Более стабильные тесты для девела
  44. 44. Тестирование в шоте ● Микростейджинг 'master + task' ● Продакшн-окружение ● Генерация переводов
  45. 45. Тестирование в шоте ● Микростейджинг 'master + task' ● Продакшн-окружение ● Генерация переводов ● NEW! Сбор скриншотов лексем для переводчиков
  46. 46. Тестирование в шоте ● Микростейджинг 'master + task' ● Продакшн-окружение ● Генерация переводов ● NEW! Сбор скриншотов лексем для переводчиков ● NEW! Автоматический запуск селениум-тестов
  47. 47. Селениум-теста нет?
  48. 48. Селениум-теста нет? ● Тесты пишутся после релиза задачи ● Селениум-тестами покрывается только устоявшийся и критический функционал
  49. 49. Селениум-тест упал!
  50. 50. Селениум-тест упал!
  51. 51. Селениум-тест упал!
  52. 52. Сборка релиза AIDA: Automated Interactive Deploy Assistant https://habrahabr.ru/company/badoo/blog/169417/
  53. 53. Сборка релиза ● Определение задач, готовых к релизу
  54. 54. Сборка релиза ● Определение задач, готовых к релизу ● Автомерж
  55. 55. Сборка релиза ● Определение задач, готовых к релизу ● Автомерж ● Деплой релиза на стейджинговые сервера
  56. 56. Сборка релиза ● Определение задач, готовых к релизу ● Автомерж ● Деплой релиза на стейджинговые сервера ● Запуск автоматического тестирования
  57. 57. Автоматическое тестирование релиза
  58. 58. Автоматическое тестирование релиза ● Смоук-тесты при каждом обновлении релизной ветки
  59. 59. Автоматическое тестирование релиза ● Смоук-тесты при каждом обновлении релизной ветки ● Постоянно гоняющиеся юнит- и селениум-тесты
  60. 60. Автоматическое тестирование релиза ● Смоук-тесты при каждом обновлении релизной ветки ● Постоянно гоняющиеся юнит- и селениум-тесты ● Сигнализация о каждой ошибке
  61. 61. Автоматическое тестирование релиза ● Смоук-тесты при каждом обновлении релизной ветки ● Постоянно гоняющиеся юнит- и селениум-тесты ● Сигнализация о каждой ошибке ● Возможность быстрой пересборки билда при ошибке
  62. 62. Ручное тестирование релиза
  63. 63. Что-то сломалось! (на стейджинге, не на продкшне, конечно же!)
  64. 64. Локализуем проблему
  65. 65. Локализуем проблему ● Смотрим логи тестов
  66. 66. Локализуем проблему ● Смотрим логи тестов ● Запускаем там, где не запускались
  67. 67. Локализуем проблему ● Смотрим логи тестов ● Запускаем там, где не запускались ● Находим тикет, в котором всё сломалось
  68. 68. Локализуем проблему ● Смотрим логи тестов ● Запускаем там, где не запускались ● Находим тикет, в котором всё сломалось ● Помогает не всегда — приходится искать самим :(
  69. 69. Устраняем проблему ● Если всё совсем плохо — откатываем тикет
  70. 70. Устраняем проблему ● Фиксим коммитом в ветку билда (?)
  71. 71. Устраняем проблему ● Делаем патч в билд!
  72. 72. Всё готово к релизу?
  73. 73. Всё готово к релизу?
  74. 74. Р Е Л И З !
  75. 75. Нет, на самом деле мы работаем дальше
  76. 76. Верификация на продакшне
  77. 77. Мониторинг!
  78. 78. Мониторинг ● RRDTool – Основные метрики – Нагрузка – Логи ошибок
  79. 79. Мониторинг ● RRDTool – Основные метрики – Нагрузка – Логи ошибок ● Splunk – Динамика событий в реальном времени – Создание тикетов на ошибки прямо из интерфейса
  80. 80. Всегда есть куда стремиться!
  81. 81. Вопросы? Кудинов Илья vk.com/relzeg fb.com/relzeg Badoo Development vk.com/badoocom fb.com/BadooMoscow habrahabr.ru/company/badoo
  82. 82. Статьи на Хабре ● GitPHP: https://habrahabr.ru/company/badoo/blog/200946/ ● PHPCF: https://habrahabr.ru/company/badoo/blog/232133/ ● Пускалка тестов: https://habrahabr.ru/company/badoo/blog/181488/ ● Каверидж, QAAPI: https://habrahabr.ru/company/badoo/blog/264497/ ● SoftMocks: https://habrahabr.ru/company/badoo/blog/279617/ ● User Split: https://habrahabr.ru/company/badoo/blog/278089/ ● AIDA: https://habrahabr.ru/company/badoo/blog/169417/

×