agile.by gathering – 23 января 2016

21
Как сделать тесты быстрыми и повысить эффективность разработки? Игорь Хрол, Toptal

Upload: igor-khrol

Post on 12-Apr-2017

629 views

Category:

Technology


1 download

TRANSCRIPT

Как сделать тесты быстрыми и повысить

эффективность разработки?

Игорь Хрол, Toptal

Обо мне• Игорь Хрол

• Инженер по тестированию в Toptal (www.toptal.com)

• ~10 лет в тестировании

• Инженер, менеджер, архитектор, консультант, тренер

• www.khroliz.com

– Герман Греф, президент и председатель правления Сбербанка России

“В прошлом году мы сделали 40 тыс. изменений нашей системы. Если посмотреть на другие банки, мы в шоколаде. Но, если смотреть на Amazon, Google, мы ужасно

отстаем. Amazon делает 10 тыс. изменений своей системы в день.”

“Если мы сейчас меняем какую-то часть своей платформы, нам нужно два-три месяца

тестировать. Непонятно, где и что вылезет при этом. Это катастрофа.”

Регрессионная спираль смерти(с) Максим Дорофеев

Что делать?

Автоматизация!

Давайте считать

• “2-3 месяца тестировать”

• Допустим, 3 тестировщика

• 3 человека * 160 часов * 2,5 месяца = 1200 часов

Что у роботов?• 1200 часов ручного труда

• Допустим, тесты в 10 раз быстрее

• 120 часов…

• Возьмём 10 серверов

• 12 часов!

2-3 месяца vs 12 часов

Хороший результат?

Типы проектов по длине цикла

• Недели-месяцы

• Дни-недели

• Часы-дни

12 часов

Тесты не используются разработчиками

Что делать? Какие должны быть автотесты?

• Время выполнения - максимум 10 минут

• Запуск локально на машине разработчика

Что это за тесты-то такие?

?!

Модульные тесты Unit-тесты

• Время выполнения одного - доли секунд

• Короткие: быстро писать

• Редко падают без причины

• В случае падения - быстрый анализ результата

Недостатки

• Не повторяет действий пользователя на 100%

• Требуется знание технологий

• Зачастую невозможно использовать с уже написанным кодом

Пирамида автоматизации тестирования

UI

API

Unit

http://martinfowler.com/bliki/TestPyramid.html

Почему мало/не используется?

Разработчики становятся ответственными за

тестирование

Нужно менять культуру разработки

Тестировщики не обладают нужными

навыками

Нужны другие тестировщики

Как это выглядит?• Unit-тесты

• Ruby - 5 минут

• Scala - 70 секунд

• JavaScript - 30 секунд

• Интеграционные тесты - 10-15 минут

• Результат всех тестов - через 30 минут