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

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

.
Руководство по стратегии тест-автоматизации
04.05.2023 16:41

Автор: Юлия Поттингер (Julia Pottinger)
Оригинал статьи
Перевод: Ольга Алифанова

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

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

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

"Зачем" – цель

Создавая стратегию тест-автоматизации, начинать надо с ответа на вопрос, зачем. Зачем вам нужны автоматизированные тесты? Какой цели вы хотите достичь, создавая автоматизированные скрипты? Целей может быть и несколько. Возможно, вам нужно, чтобы продукт быстрее выходил на рынок. Этого можно достичь при помощи автоматизации тестирования.

Другими целями тест-автоматизации могут быть:

  1. Наличие тест-автоматизации для фич в том же спринте, в котором они разрабатываются.
  2. Снижение ручного тестирования. Если в проекте много регрессионных тестов, отнимающих время, внедрение автоматизированных тестов снизит временные затраты на прогон регресс-набора.
  3. Улучшение тест-покрытия ПО. Этого можно добиться, автоматизируя множество уникальных сценариев, и будет легче и быстрее при использовании управления через данные.
  4. Переход от водопада к гибкой модели и внедрение непрерывного тестирования в поставку ПО.

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

«Кто»

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

Думая, кто войдет в команду, вам нужно подумать вот о чем:

  1. Нужно ли членам команды обучение, и чему их нужно научить? Если вы хотите, чтобы к автоматизации приступили ручные тестировщики, то им нужно выучить язык программирования, стратегии локаторов, лучшие практики создания кода (например, паттерны Page Object и атомарных тестов), а также разобраться со специализированными инструментами тест-автоматизации и выбранными вами фреймворками.
  2. Есть ли у вас нужные люди в наличии, или надо нанимать? Начните продумывать описание вакансии, о навыках, знаниях, техниках и технологиях, которые людям нужно знать и иметь.
  3. Поддержка тест-автоматизации. Будете ли вы создавать для нее отдельные тикеты. Будут ли они включаться в разные спринты? Есть ли у вас менеджер проекта, который сможет помочь? Поддерживаются ли усилия по тест-автоматизации всей организацией, чтобы настройка окружений и создание приложений учитывали автоматизацию?

Наличие правильного коллектива с необходимыми знаниями и навыками положительно повлияет на стратегию тест-автоматизации.

«Что»

Решение, что именно автоматизировать, позволяет вам сосредоточиться на ключевых областях, которые принесут наибольшую выгоду. Если вы броситесь в омут головой, не планируя, что будете автоматизировать на каком уровне пирамиды тест-автоматизации, то с шансами зря потратите кучу времени и прочих ресурсов. Определяя, что автоматизировать, думайте о своей цели и сверяйте с ней то, что планируете покрывать автотестами. К примеру, если вы хотите автоматизировать регрессионные тесты, приоритезируйте и автоматизируйте регресс-набор, который уже существует на проде. Если вы хотите автоматизировать новые фичи в ходе спринта, то рассмотрите их и попробуйте определить, какие можно автоматизировать. У меня есть основное правило принятия решения, что автоматизировать. Вот его краткое описание:

  1. Определите уровень тест-автоматизации, на котором планируете создавать свои тесты. Автотесты можно распределить на три основных уровня – юнит-тесты, тесты сервисного/API-уровня, и тесты пользовательского интерфейса; взвесьте все «за» и «против» создания тестов на каждом из этих уровней, прежде чем идти дальше.
  2. Автоматизируйте ваши смоук-тесты.
  3. Автоматизируйте тесты, которые прогоняются всегда – вроде регрессионных тестов или тестов, всегда находящихся в начале каждого сценария.
  4. Автоматизируйте обширные тесты.
  5. Автоматизируйте тесты, требующие множества конфигураций.
  6. Автоматизируйте тесты производительности.

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

«Как»

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

  1. Уровень вашей тест-автоматизации. Для автоматизации API, базы данных, браузера, визуальных регрессионных тестов существуют разные инструменты и технологии.
  2. Язык, который будет использоваться для автоматизации. Инструменты вроде Selenium Webdriver можно использовать на нескольких различных языках вроде Java, Python, JavaScript, C#, и т. д. Помимо Selenium WebDriver, для работы с разными языками есть и другие инструменты – например, WebdriverIO и Cypress для браузерной автоматизации Javascript. Однако если ваша цель – тесты API или базы данных, то в зависимости от языка инструменты будут другими. RestAssured можно использовать для автоматизации API на Java, а Supertest - на Javascript.
  3. Сценарии, которые будут тестироваться. Продумайте уникальные сценарии или граничные случаи, которые стоит автоматизировать. Если вам важно кросс-браузерное тестирование, подумайте об инструментах вроде Saucelabs и Browserstack.
  4. Цель автоматизации тестирования. Если ваша цель – непрерывная интеграция, нужно подумать о системах непрерывной интеграции вроде Jenkins, GitLab, GitHub Actions или иного CI-инструмента. Подумайте, как будут запускаться автотесты (вручную с вашего компьютера, или же через систему непрерывной интеграции).
  5. Стоимость инструмента. Они бывают как платными, так и с открытым исходным кодом. В зависимости от имеющегося бюджета нужно взвесить издержки и поддержку, которую вы сможете получить.

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

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

«Где и когда»

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

Я бы также предложила запускать тесты на проде. Такие тесты, однако, нужно грамотно пометить или проставить им тэги. Тэги для тестов, запускающихся на проде, нужны для того, чтобы контролировать эти конкретные тесты. К примеру, вам не нужно тестировать все оформление заказа от и до на проде или выполнять определенные запросы на удаление к вашему API или базе данных.

Разработайте план запуска ваших тестов. Ответьте на эти вопросы и составьте план:

  • Нужны ли тестам специфические данные, связь с базой данных или вызовы API?
  • Надо ли маскировать эти данные?
  • Как вы будете демонтировать и настраивать ваши тесты?
  • Будут ли они запускаться в облаке или локально?
  • Используете ли вы систему непрерывной интеграции?
  • Нужно ли запускать тесты в конкретное время, есть ли для их срабатывания определенный триггер?
  • В каком репозитории будет храниться код?
  • Что будет использоваться для отчетов о прогоне автотестов?

Убедитесь, что подумали обо всех этих деталях – тогда ваша стратегия тест-автоматизации будет стабильной.

--

Учтите, что ваша команда должна от и до понимать тест-стратегию.

Я бы предложила использовать ментальную карту для набросков того, что будет включать ваша стратегия.

Это может быть живым документом, на который вы и ваша команда будете опираться, обновляя его, обсуждая различные моменты, касающиеся инструментов, технологий, типов тестов и цель проекта автоматизации. Помните, что автотесты должны быть поддерживаемыми, и это займет время. Убедитесь, что у команды достаточно времени на приоритезацию областей, нуждающихся в автоматизации, создание скриптов, их прогон и оценку, создание отчетов, поддержку проекта; а также что команда обладает достаточными знаниями для осуществления этих видов деятельности. Следовательно, если команда нуждается в обучении, предоставьте им необходимое обучение и поддержку.

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