Сокращение времени ожидания в ... Заметка

Сокращение времени ожидания в CI: Как Pinterest сократил время сборки Android-тестирования на 36%+

Тестирование Android end-to-end на Pinterest было медленным и ненадежным из-за несбалансированных тестовых шардов и ограничений платформы. Команда сначала оценила сторонние решения, но сочла их неадекватными своим потребностям. Они решили создать собственную платформу тестирования под названием PinTestLab, размещенную на эмуляторах EC2. Эта платформа обеспечила полный контроль над стеком тестирования и инфраструктурой.Основным нововведением является механизм шардинга, учитывающий время выполнения. Эта система использует данные об исторической продолжительности и стабильности тестов для группировки тестов в шарды. Цель состоит в том, чтобы обеспечить одинаковое общее время выполнения для каждого шарда. Этот подход отличается от простого балансирования количества тестов на шард.Ранее шардинг на основе пакетов приводил к дисбалансу, когда один медленный шард задерживал весь билд. Даже простая сортировка по времени не учитывала время простоя эмулятора. Новый алгоритм шардинга, учитывающий время выполнения, работает путем сортировки тестов по среднему времени выполнения, а затем жадно назначает каждый тест эмулятору, который, по прогнозам, завершится раньше всего. Это поддерживает занятость всех эмуляторов и минимизирует разницу во времени между самым быстрым и самым медленным шардами.Влияние этого решения было значительным. Время сборки end-to-end сократилось на девять минут, что составило 36% улучшения. Время выполнения самого медленного шарда сократилось на 55%. Разница во времени между самым быстрым и самым медленным шардами резко сократилась с 597 секунд до всего лишь 130 секунд. Это повышает скорость работы разработчиков, предоставляя более быструю и надежную обратную связь.
CdXz5zHNQW_7VB873V6rz.png