Доклад Ильи Кудинова на РИТ++ 2013. "Оптимальная параллелизация юнит тестов в большом проекте".

40 %
60 %
Information about Доклад Ильи Кудинова на РИТ++ 2013. "Оптимальная параллелизация юнит...
Technology

Published on April 24, 2013

Author: BadooDev

Source: slideshare.net

Description

Доклад о том, как провести 17 тысяч тестов за три минуты, помочь тестировщикам не умереть со скуки и научить автоматическое тестирование быть ещё более автоматическим.
Из доклада вы узнаете:

1. Как мы пришли к необходимости такого решения
и как решали эти проблемы изначально.
2. Какие решения этой проблемы уже существуют в мире OpenSource
и почему мы от них отказались.
3. Какие "гениальные" идеи мы пытались реализовать
и почему все их отвергли.
4. На какой архитектуре мы остановились
и как она себя показала (с нескучными цифрами и графиками!).
5. Какие дополнительные возможности приносит сотрудничество PHPUnit с TeamCity
и как с их помощью тестировщики могут терроризировать разработчиков.
6. Что обещают сделать в этом направлении разработчики PHPUnit
и как обстоят эти дела на данный момент.

ОПТИМАЛЬНАЯПАРАЛЛЕЛИЗАЦИЯЮНИТ-ТЕСТОВВ БОЛЬШОМПРОЕКТЕКудинов Илья, Badoo Development

Зачем это нужно?

Схема запуска 6.5к тестов 16к тестов 16к тестов,нагруженные серверыОднопоточныйзапуск 10 – 15 минут 35 – 40 минутОБОЖЕКАКМНОГОминут??? ??? ??? ?????? ??? ??? ?????? ??? ??? ???

Время выполнения тестовЖеланиезапускать тесты

А может, не будем запускать каждый раз все тесты?А может, не будем каждый раз запускать ВСЕ тесты?

А может, попробуем поделить тесты вручную?

А может, просто напишем утилиту, которая будет делитьтесты между потоками поровну?

Схема запуска 6.5к тестов 16к тестов 16к тестов,нагруженные серверыОднопоточныйзапуск 10 – 15 минут 35 – 40 минутОБОЖЕКАКМНОГОминутРазделение тестовпоровну 2 – 2.5 минуты 10 – 15 минут 20 – 25 минут??? ??? ??? ?????? ??? ??? ???

Нам необоходимо средство для автоматическогои равномерного разделения тестов по потокам

Начинаем поиск готовых решений!

И почти всё что мы нашли – реализацияуже отвергнутых нами методов

Оригинальный метод – несколько процессов“разгребают” общуюочередь тестов

Разработчики PHPUnit обещают реализациюмногопоточного запуска из коробки?

Вывод: надо разработать что-то своё!

Первое решение – отделим “большие” тесты от “маленьких”

Схема запуска 6.5к тестов 16к тестов 16к тестов,нагруженные серверыОднопоточныйзапуск 10 – 15 минут 35 – 40 минутОБОЖЕКАКМНОГОминутРазделение тестовпоровну 2 – 2.5 минуты 10 – 15 минут 20 – 25 минутОтделение “больших”тестов 1.5 – 2 минуты 6 – 8 минут 15 – 20 минут??? ??? ??? ???

Второе решение – необходимо хранить информациюо времени работы каждого теста!

Для избежания переизбытка информациинеобходим централизованный сбор статистики!

И для этого нам идеально подходит TeamCity!

Лучший способ настройки такой утилиты?

Итоговая схема Многопоточной пускалкиКЛАСС ДЛЯ СБОРАИ СОХРАНЕНИЯ СТАТИСТИКИКЛАСС ДЛЯ ЗАПУСКА ТЕСТОВКЛАСС ДЛЯРАСПРЕДЕЛЕНИЯ ТЕСТОВПО ПОТОКАМ

КЛАСС ДЛЯ СБОРА И СОХРАНЕНИЯСТАТИСТИКИБД TeamCity БД для хранениястатистикиОбработкаинформациитест => времяфайл => времяПоиск соответствиятест => файл;Простейшая системакешированияинформациидля ускорения процесса

КЛАСС ДЛЯ СБОРА И СОХРАНЕНИЯ СТАТИСТИКИПонедельник Вторник Среда ЧетвергПятница Суббота Воскресенье7 состояний с накапливаемымиданнымиЧем новее статистика – тем больший “вес” она имеетпри распределениитестовВозрастстатистики Вес статистики< 1 суток 100< 2 суток 50< 3 суток 25> 3 суток 10

КЛАСС ДЛЯ РАСПРЕДЕЛЕНИЯ ТЕСТОВ ПО ПОТОКАМДлительность тестовПотоки с уже распределённымитестамиТест с известной длительностью

КЛАСС ДЛЯ ЗАПУСКА ТЕСТОВЧтение входногоXML-файла PHPUnit

КЛАСС ДЛЯ ЗАПУСКА ТЕСТОВЧтение входногоXML-файла PHPUnitСбор файловс тестами

КЛАСС ДЛЯ ЗАПУСКА ТЕСТОВЧтение входногоXML-файла PHPUnitРасчёт временивыполнения тестовСбор файловс тестами

КЛАСС ДЛЯ ЗАПУСКА ТЕСТОВЧтение входногоXML-файла PHPUnitРасчёт временивыполнения тестовСбор файловс тестамиРаспределениетестов по потокам

КЛАСС ДЛЯ ЗАПУСКА ТЕСТОВЧтение входногоXML-файла PHPUnitРасчёт временивыполнения тестовСбор файловс тестамиРаспределениетестов по потокамГенерациядинамическогоXML-конфига

КЛАСС ДЛЯ ЗАПУСКА ТЕСТОВЧтение входногоXML-файла PHPUnitРасчёт временивыполнения тестовСбор файловс тестамиРаспределениетестов по потокамГенерациядинамическогоXML-конфигаЗапуск процессовPHPUnit с нужнымипараметрами

КЛАСС ДЛЯ ЗАПУСКА ТЕСТОВЧтение входногоXML-файла PHPUnitРасчёт временивыполнения тестовСбор файловс тестамиРаспределениетестов по потокамГенерациядинамическогоXML-конфигаЗапуск процессовPHPUnit с нужнымипараметрамиВывод информациис помощью нашихTestListenerов

КЛАСС ДЛЯ ЗАПУСКА ТЕСТОВЧтение входногоXML-файла PHPUnitРасчёт временивыполнения тестовСбор файловс тестамиРаспределениетестов по потокамГенерациядинамическогоXML-конфигаЗапуск процессовPHPUnit с нужнымипараметрамиВывод информациис помощью нашихTestListenerовСбор и сохранениестатистики(если необходимо)

КЛАСС ДЛЯ ЗАПУСКА ТЕСТОВЧтение входногоXML-файла PHPUnitРасчёт временивыполнения тестовСбор файловс тестамиРаспределениетестов по потокамГенерациядинамическогоXML-конфигаЗапуск процессовPHPUnit с нужнымипараметрамиВывод информациис помощью нашихTestListenerовСбор и сохранениестатистики(если необходимо)???

КЛАСС ДЛЯ ЗАПУСКА ТЕСТОВЧтение входногоXML-файла PHPUnitРасчёт временивыполнения тестовСбор файловс тестамиРаспределениетестов по потокамГенерациядинамическогоXML-конфигаЗапуск процессовPHPUnit с нужнымипараметрамиВывод информациис помощью нашихTestListenerовСбор и сохранениестатистики(если необходимо)???P R O F I T ! ! !

Кастомные TestListenerы

Схема запуска 6.5к тестов 16к тестов 16к тестов,нагруженные серверыОднопоточныйзапуск 10 – 15 минут 35 – 40 минутОБОЖЕКАКМНОГОминутРазделение тестовпоровну 2 – 2.5 минуты 10 – 15 минут 20 – 25 минутОтделение “больших”тестов 1.5 – 2 минуты 6 – 8 минут 15 – 20 минутНаша многопоточнаяпускалка 45 – 60 секунд 3 – 4 минуты 6 – 8 минут

Итого мы получили самостоятельноадаптирующуюсяпод обстоятельства систему!

PROFIT1) Тесты запускаются чаще!2) Автоматический запуск тестов!3) Переносимость и конфигурируемость!4) Going OpenSource – stay tuned!

badoo.comvk.com/badoocomfb.com/BadooMoscowtwitter.com/BadooDevhabrahabr.ru/company/badoo/vk.com/relzegfb.com/relzeg

Add a comment

Related presentations

Related pages

Доклад на Software People 2013 - Documents

Доклад Ильи Кудинова на DevConf 2013. ... Доклад Владислава Чернова & Олега Оямяэ на РИТ++ 2013.
Read more

Доклад Антона Поварова на Tarantool Meetup. "Tarantool в ...

Доклад Ильи Кудинова на ... Доклад Ильи Кудинова на DevConf 2013. ... Олега Оямяэ на РИТ++ 2013.
Read more

16.04.2013 07:54 В Москве состоится конференция веб ...

... разработчиков РИТ++ 2013 ... на RabbitMQ будут ... проекте" от Ильи Кудинова ...
Read more

Совхозный дневник (Геннадий Говоров) / Проза.ру

Переводил меня в Лозное ди-ректор для работы на новом ... не хуже знаю и Кудинова ...
Read more

"В Москве состоится конференция веб-разработчиков РИТ ...

... РИТ++ 2013 " + / – ... "Оптимальная параллелизация юнит-тестов в большом проекте" от Ильи ...
Read more

Badoo Development - HubSlide

Доклад Андрея Саса на конференции РИТ++ 2014. ... Доклад с РИТ 2015. 3 months ago. Technology.
Read more

Тифлоресурс (culture.people.tifloresource) : Рассылка ...

Первая такая группа приступит к занятиям уже 1 июля. Выпуск листа на ... Кудинова, ...
Read more