Что пишут в блогах

Подписаться

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

Конференции

Что пишут в блогах (EN)

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

Про инструменты

.
Запуск автотестов: и здесь, и тут, и повсеместно
05.07.2019 00:00

Автор: Пол Гриззаффи (Paul Grizzaffi)
Оригинал статьи
Перевод: Ольга Алифанова

Допустим, вы отвечаете за изначальную подготовку набора автотестов в вашей команде. Используя ваш основной компьютер, вы создали все сценарии, тщательно их протестировали, и теперь они готовы к использованию. Они основаны на существующем смоук-наборе тестов, и вы планируете запускать их при каждом деплое – теперь этим не нужно заниматься тест-команде. Автоматизация имеет бешеный успех и бережет кучу времени тестировщика еженедельно! Вы планируете заслуженный отпуск – всего на недельку.

Кто будет запускать автотесты в ваше отсутствие?

Инфраструктура для автоматического запуска тестов еще не готова, поэтому кто-то из команды назначается счастливчиком, который будет стартовать тесты вместо вас. Вы подготовились и помогли коллеге скачать или установить все необходимое для автоматизации на его компьютер. И вот вы просите его прогнать тесты – ну, просто чтобы быть полностью уверенным, что коллега сможет это сделать. Упс. Запуск невозможен. Вы дружно разбираетесь, в чем дело:

  • Для запуска необходима специальная директория в специальном разделе диска: она создается.
  • Путь к файлу жестко завязан на вашу пользовательскую директорию – вы меняете код и выгружаете автоматизацию еще раз.
  • Вы выполняете вызов к внешней программе, не установленной на машине коллеги – вы помогаете установить ее.

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

Черт побери! Отпуск уже завтра!

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

Переносимость двухкомпонентна:

  • Окружение запуска: вышеописанная история в основном демонстрирует эту сторону вопроса. Автоматизация не должна быть завязана на конкретную машину.
  • Тестируемая система. У нас, как правило, несколько окружений, требующих тестирования, что значит, что их будет несколько и с точки зрения автоматизации. Она не должна быть привязана к единственному тест-окружению.

Вот чего стоит тут опасаться:

  • Всего, что жестко закодировано. Жестко закодированные значения ограничивают нашу гибкость. Большая часть языковых экосистем обладает идиомами для управления конфигурацией приложения. Если речь идет об автоматизации, принцип остается тем же. Изучайте идиомы экосистемы своего языка и используйте их.
  • Кода, который полагается на существование определенных путей к файлам. Этого необязательно следует безусловно избегать, но нужно понимать, что чем больше таких путей, тем более уязвима наша автоматизация. Подходом получше будет использование относительных путей к расположению ПО автоматизации. По возможности также заставляйте ее самостоятельно создавать директории, а не ожидать, что они уже существуют.
  • Кода, полагающегося на внешние приложения. Это тоже не то, чего нужно избегать любой ценой, однако стоит обеспечить установку этого ПО и выдавать полезные сообщения об ошибках, если оно не найдено.
  • Кода, который полагается на конкретную пользовательскую конфигурацию. У такого подхода есть свои грандиозные плюсы, однако нужно понимать, что предоставление необходимых атрибутов каждому пользователю – это не самое простое дело, особенно в случаях, когда для этого нужно сотрудничать с другими компаниями.

Разработка автоматизации, которая будет работать на каждом компьютере в компании – не всегда оправданное дело, но учет переносимости повышает количество членов команды, способных принимать участие в связанной с автоматизацией деятельности. Переносимость - также первый шаг в направлении непрерывного развертывания.

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