igor khrol - how to make tests fast and to increase the efficiency of development
TRANSCRIPT
Как сделать тесты быстрыми и повысить
эффективность разработки?
Игорь Хрол, Toptal
Обо мне• Игорь Хрол
• Инженер по тестированию в Toptal (www.toptal.com)
• ~10 лет в тестировании
• Инженер, менеджер, архитектор, консультант, тренер
• www.khroliz.com
– Герман Греф, президент и председатель правления Сбербанка России
“В прошлом году мы сделали 40 тыс. изменений нашей системы. Если посмотреть на другие банки, мы в шоколаде. Но, если смотреть на Amazon, Google, мы ужасно
отстаем. Amazon делает 10 тыс. изменений своей системы в день.”
– Герман Греф, президент и председатель правления Сбербанка России
“В прошлом году мы сделали 40 тыс. изменений нашей системы. Если посмотреть на другие банки, мы в шоколаде. Но, если смотреть на Amazon, Google, мы ужасно
отстаем. Amazon делает 10 тыс. изменений своей системы в день.”
“Если мы сейчас меняем какую-то часть своей платформы, нам нужно два-три месяца
тестировать. Непонятно, где и что вылезет при этом. Это катастрофа.”
Регрессионная спираль смерти(с) Максим Дорофеев
Что делать?
Автоматизация!
Давайте считать
Давайте считать
• “2-3 месяца тестировать”
Давайте считать
• “2-3 месяца тестировать”
• Допустим, 3 тестировщика
Давайте считать
• “2-3 месяца тестировать”
• Допустим, 3 тестировщика
• 3 человека * 160 часов * 2,5 месяца = 1200 часов
Что у роботов?
Что у роботов?• 1200 часов ручного труда
Что у роботов?• 1200 часов ручного труда
• Допустим, тесты в 10 раз быстрее
Что у роботов?• 1200 часов ручного труда
• Допустим, тесты в 10 раз быстрее
• 120 часов…
Что у роботов?• 1200 часов ручного труда
• Допустим, тесты в 10 раз быстрее
• 120 часов…
• Возьмём 10 серверов
Что у роботов?• 1200 часов ручного труда
• Допустим, тесты в 10 раз быстрее
• 120 часов…
• Возьмём 10 серверов
• 12 часов!
2-3 месяца vs 12 часов
2-3 месяца vs 12 часов
Хороший результат?
Типы проектов по длине цикла
Типы проектов по длине цикла
• Недели-месяцы
Типы проектов по длине цикла
• Недели-месяцы
• Дни-недели
Типы проектов по длине цикла
• Недели-месяцы
• Дни-недели
• Часы-дни
12 часов
Тесты не используются разработчиками
Что делать? Какие должны быть автотесты?
• Время выполнения - максимум 10 минут
• Запуск локально на машине разработчика
Что это за тесты-то такие?
?!
Модульные тесты Unit-тесты
Модульные тесты Unit-тесты
• Время выполнения одного - доли секунд
Модульные тесты Unit-тесты
• Время выполнения одного - доли секунд
• Короткие: быстро писать
Модульные тесты Unit-тесты
• Время выполнения одного - доли секунд
• Короткие: быстро писать
• Редко падают без причины
Модульные тесты Unit-тесты
• Время выполнения одного - доли секунд
• Короткие: быстро писать
• Редко падают без причины
• В случае падения - быстрый анализ результата
Недостатки
Недостатки
• Не повторяет действий пользователя на 100%
Недостатки
• Не повторяет действий пользователя на 100%
• Требуется знание технологий
Недостатки
• Не повторяет действий пользователя на 100%
• Требуется знание технологий
• Зачастую невозможно использовать с уже написанным кодом
Пирамида автоматизации тестирования
UI
API
Unit
http://martinfowler.com/bliki/TestPyramid.html
Почему мало/не используется?
Разработчики становятся ответственными за
тестирование
Разработчики становятся ответственными за
тестирование
Нужно менять культуру разработки
Тестировщики не обладают нужными
навыками
Тестировщики не обладают нужными
навыками
Нужны другие тестировщики
Как это выглядит?
Как это выглядит?• Unit-тесты
• Ruby - 5 минут
• Scala - 70 секунд
• JavaScript - 30 секунд
Как это выглядит?• Unit-тесты
• Ruby - 5 минут
• Scala - 70 секунд
• JavaScript - 30 секунд
• Интеграционные тесты - 10-15 минут
Как это выглядит?• Unit-тесты
• Ruby - 5 минут
• Scala - 70 секунд
• JavaScript - 30 секунд
• Интеграционные тесты - 10-15 минут
• Результат всех тестов - через 30 минут
Вопросы?
[email protected] [email protected] igor.khrol