В этой статье мы расскажем, как с помощью IntelliJ IDEA Agile-команды могут управлять тест-кейсами и поддерживать их синхронизацию с автоматическими тестами и функциональными ветками. Подход, которого мы придерживаемся, можно более точно описать как «Test as Text» или «Test as Code». Он предполагает хранение тест-кейсов в простом текстовом формате, желательно в системе контроля версий рядом с кодом проекта. Это позволяет нам управлять сценариями тестирования прямо из IDE, синхронизировать их с автоматическими тестами, просматривать историю изменений и разрабатывать тестовые сценарии одновременно с новыми функциями.
Если вы захотите попробовать, то всё, что вам понадобится, — это IntelliJ IDEA Community Edition и Test Management плагин.
Подготовка тест-кейсов
Представим, что в нашей Agile-команде разработчики активно работают над новой фичей в отдельной ветке. Как QA-инженеры, мы должны заранее подготовить сценарии тестирования и чеклисты, чтобы быть готовыми к тестированию.
Конепция Test as Text предусматривает, что тест-кейсы были написаны в простом, подходящем для текстового редактора формате и по возможности использовалась система контроля версий. Выберем папку, в которую мы хотим положить тестовые сценарии, и создадим новый тест-кейс.
В контекстном меню выберем New Test Case и дадим ему название. IDE создаст markdown-файл с примером текста.

Хотя содержимое файла — чистый Markdown, обратите внимание на необычное расширение .t.md. Оно указывает на то, что файл предназначен для хранения тестовых сценариев.

Как видно из примера, формат файла довольно прост. В маркдауне заголовок — это название набора тестов (чеклиста), а пункты списка — названия проверок или тест-кейсов. Если нужно разбить тест-кейс на несколько шагов, добавьте вложенный список. IntelliJ IDEA поможет отличать тест-кейсы от шагов, помечая их соответствующими значками на полях.
Давайте определим пару тест-кейсов, которые будут описывать новую функциональность, разрабатываемую в этой ветке. Мы также можем задать для этих тестов некоторые теги и метаинформацию.

Когда все готово, отправим наши результаты в VCS, чтобы их увидели коллеги по команде.
В окне TMS можно просматривать и фильтровать существующие и свежесозданные тест-кейсы. Чтобы быстро перейти к сценарию тестирования, воспользуемся поиском Search Everywhere и введем имя теста. Для фильтрации результатов можно использовать префикс /tms или перейти к Navigate | TMS item из главного меню.

Выполнение проверок и хранение результатов
Когда мы создали тест-кейсы для новой функциональности, можно приступать к выполнению проверок, как только разработчики будут готовы.
Выберите New Test Run в контекстном меню (в нашем примере мы сделаем это в папке, где хранятся наши тест-кейсы) и дайте ему имя. Затем выберите тесты, которые нужно выполнить, и подтвердите свой выбор.

IDE создаст markdown-файл, на этот раз с расширением «.r.md», указывающим на то, что файл используется для хранения результатов выполненных проверок.

Шаги для тестовых сценариев копируются в тест-ран, и по умолчанию каждый сценарий имеет статус «unknown». Название теста должно быть оформлено как заголовок в Markdown. IntelliJ IDEA помечает каждый тест и его результаты значками на левом поле и подсвечивает их в редакторе.
Как только мы выполним проверку, можно записать результаты и заменить статус «unknown» на стандартные «success» или «fail» либо выбрать для индикации любое другое слово. Можно использовать любой статус, о котором вы договоритесь с командой, без дополнительных настроек. Иногда требуется отойти от тестового сценария или указать подробности выполненных действий. Мы можем сделать это, изменив описание шагов в соответствующем тесте.

Наш тест-ран также отображается в окне TMS. Когда мы закончим, можем закоммитить результаты проверок (файл тест-рана) в VCS и поделиться ими с командой.
Создание автотеста
По мере того, как мы приближаемся к заключительным этапам имплементации функции, приходит время автоматизировать хотя бы некоторые из наших тестов.
IntelliJ IDEA может нам в этом помочь несколькими способами. Откроем класс юнит-теста, в который хотим добавить новый автотест.
Затем в окне TMS найдем тест-кейс, который хотим автоматизировать. Чтобы просмотреть все неавтоматические тесты, откроем диалог Filtering и попросим IDE показать только те тест-кейсы, на которые нет ссылок в коде. Поскольку мы еще не автоматизировали свежесозданные тест-кейсы, все они отобразятся в окне TMS.

Скопируем нужный тест с помощью шортката или через контекстное меню и вставим его в класс юнит-теста.

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

Этот тестовый сценарий больше не отображается в окне TMS, поскольку теперь на него есть ссылка в коде.
Мы можем перейти к объявлению сценария, кликнув по ссылке в комментариях или по нашей аннотации TmsLink. Когда имплементация фичи будет завершена, наша команда смержит ее с основной веткой.
Список сценариев тестирования и выполненных проверок можно рассматривать как отчет о качестве новой фичи, и мы можем впоследствии использовать сценарии для регрессионных проверок и автоматизации тестирования.
Как попробовать
Установите плагин Test Management в вашу IDE JetBrains. Вы можете просматривать и редактировать тест-кейсы в любой поддерживаемой IDE JetBrains, но интеграция с юнит-тестами сейчас работает только для Java, Kotlin и Python (в IntelliJ IDEA Community Edition и PyCharm Community Edition).
В официальной документации вы найдете информацию о том, как включить Local TMS (Test as Text), настроить пользовательские Java-аннотации и Python-декораторы в качестве TMS-ссылок, а также как настроить шаблоны для генерации кода.
Вот тут вы можете ещё раз просмотреть краткий обзор всех возможностей.
Заключение
Подход Test as Text помогает нам быть более гибкими в работе с тестовыми сценариями, поскольку мы можем разрабатывать тесты и выполнять проверки параллельно с разработкой функциональности. Поскольку в системе контроля версий все хранится в одном проекте, мы видим историю изменений, а у разработчиков есть доступ к тестовым сценариям для отладки. Такой подход отвечает потребностям Agile-команд и повышает эффективность и прозрачность тестирования.
Если вы хотите поделиться своим мнением и помочь нам улучшить инструменты для тестирования, приглашаем вас поучаствовать в интервью. Для этого нужно зарегистрироваться вот тут.
Если вы нашли баг или хотите предложить новую фичю, пожалуйста, создайте задачу в YouTrack.