Разделы портала

Онлайн-тренинги

.
Как избавиться от тестов (с умом)
10.07.2018 12:29

Автор: Дейв Вестервельд (Dave Westerveld)

Оригинал статьи: http://offbeattesting.com/2017/10/23/how-to-get-rid-of-tests-smartly

Перевод: Ольга Алифанова

Я не очень хорошо себя чувствовал.

Тогда это казалось хорошей идеей, но сейчас я об этом жалею. Утром я проснулся рано, когда вся семья еще спала, и тихо прокрался вниз по лестнице, направляясь на кухню. Я открыл холодильник и там стояла она, полная бутылка эг-нога (напиток из взбитых яиц с сахаром, ромом или вином – прим. перев.) Я вытащил ее из холодильника, пододвинул стул к шкафу, нашел чашку и налил себе полную чашку вкусного, густого эг-нога. Когда я прикончил чашку, я налил еще одну, а затем еще, пока бутылка не опустела. Он был таким вкусным, но желудок сообщал мне, что я сделал глупость. Не буду утомлять вас деталями, но сегодня я понял, что слишком хорошо – тоже нехорошо.

Прям как автотесты.

Они отличная штука. Они очень помогают, но оказывались ли вы в ситуации, когда слишком хорошей вещи стало слишком много? Что произойдет, если у вас на руках сотни или даже тысячи «от и до» или интеграционных тестов?

Вы начнете понимать, что за автотесты надо платить.

Слишком много тестов

Сколько времени мы тратим на наши автотесты? Давайте посчитаем. Мы тратим время на исправление тестов, которые падают по вполне ожидаемым причинам. Мы тратим время на дебаг тестов, которые то падают, то нет. Мы тратим время на патчи и обновления виртуальных машин. Мы тратим время на создание и поддержку тест-билдов. Мы тратим время, выясняя, почему все сломалось. Мы тратим время на запросы нового оборудования. Мы тратим деньги на покупку и настройку этого оборудования.

Тесты связаны с большим количеством издержек, и вышеуказанный список наверняка включает не все. Многие из этих издержек спрятаны, но если у вас слишком много хорошего на руках, их больше нельзя игнорировать. Ваша команда перегружена работой, и это заставляет вас осознать, что за автотесты надо платить.

Что же с этим делать?

Вы выпили эг-ног, и теперь у вас чересчур много тестов. Как исправить эту проблему? Эти тесты были добавлены по какой-то причине – кто-то когда-то решил, что их добавление будет неплохой идеей – поэтому как же нам снизить их количество? Мы же не хотим просто от балды удалять тесты, но мы уже перегружены ими, у нас нет времени на внимательный пересмотр и оценку каждого из них, чтобы определить, от каких нужно избавляться.

То, с чем мы столкнулись, иногда называется «реальный мир». Возможно, где-то существует идеальный уровень покрытия продукта автотестами, и, возможно, к нему можно подобраться, но в реальности нельзя добиться совершенства. Можно только стать лучше. Решайте проблему, съедая слона по кусочку.

Найдите самые дорогие тесты

Мы обрисовали ряд расходов, связанных с тестами. Все, то вам нужно –это найти самые дорогие тесты. Просто, не правда ли? Ну, может, и нет, но существуют стратегии, помогающие сконцентрировать внимание, очищая тесты.

Долго прогоняющиеся тесты. Этот тест, который длится 20 минут, очень дорогой. Времени на его прогон и дебаг тратится чересчур много. Один из быстрых способов выбрать тесты, которые надо почистить или удалить – это отсортировать их по времени прогона.

Неустойчивые тесты. Тесты, которые то падают, то нет, без всяких причин, тоже дорого стоят. Вам нужно вновь и вновь разбираться с падением, и вы начинаете просто игнорировать его. Этот тест действительно вам нужен? Можно ли частично изолировать то, что он делает, так, чтобы он проверял только то, в чем вы заинтересованы? Это еще один пример тестов, которые легко идентифицировать (просто просмотрите тест-отчеты на предмет частоты прохождения/падения тестов). Это дорогие тесты, которые надо или чистить, или избавляться от них.

Тесты, нуждающиеся в постоянной поддержке. Эти тесты вечно надо обновлять – еще один класс дорогих тестов. Их довольно легко обнаружить, если у вас есть контроль версий тестов. Просмотрите его логи в поиске тестов, которые чаще всего меняются. Можно ли удалить некоторые из них, или изменить то, что они проверяют, так, чтобы они не падали на том, на что вам наплевать? Возможно, вы можете проверить то, что проверяют эти тесты, путем быстрой ручной проверкой продукта? Далеко не все нуждается в автоматизации.

Это не единственные стратегии, помогающие вам расставить приоритеты при очистке тестов, но мы остановимся на этих. Как действуете вы? Не слишком ли много у вас тестов? Начали ли вы осознавать, что с этим нужно что-то делать? Какими стратегиями пользуетесь вы, очищая тесты?

Обсудить в форуме