Test as Text в IntelliJ IDEA

В этой статье мы расскажем, как с помощью 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-файл с примером текста.

New Test Suite в контекстном меню

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

Markdown-файл с примером тест-кейса
Markdown-файл с примером тест-кейса

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

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

Тестовые сценарии
Тестовые сценарии

Когда все готово, отправим наши результаты в VCS, чтобы их увидели коллеги по команде.

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

Тестовые сценарии в окне Search Everywhere
Тестовые сценарии в окне Search Everywhere

Выполнение проверок и хранение результатов

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

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

New Test Run в контекстном меню
New Test Run в контекстном меню

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

Незавершённый Test Run
Незавершённый Test Run

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

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

Test Run cо статусами прохождения тестов
Test Run cо статусами прохождения тестов

Наш тест-ран также отображается в окне TMS. Когда мы закончим, можем закоммитить результаты проверок (файл тест-рана) в VCS и поделиться ими с командой.

Создание автотеста

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

IntelliJ IDEA может нам в этом помочь несколькими способами. Откроем класс юнит-теста, в который хотим добавить новый автотест.

Затем в окне TMS найдем тест-кейс, который хотим автоматизировать. Чтобы просмотреть все неавтоматические тесты, откроем диалог Filtering и попросим IDE показать только те тест-кейсы, на которые нет ссылок в коде. Поскольку мы еще не автоматизировали свежесозданные тест-кейсы, все они отобразятся в окне TMS.

Редакто фильтров в тул-окне TMS
Редакто фильтров в тул-окне TMS

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

Тестовые сценарии не имеющие соответствуюзих авто-тестов
Тестовые сценарии не имеющие соответствуюзих авто-тестов

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

Тестовый сценарий, который был скопирован в java класс и больше не отображается в TMS окне в соответствии с правилами фильтрации
Тестовый сценарий, который был скопирован в java класс и больше не отображается в TMS окне в соответствии с правилами фильтрации

Этот тестовый сценарий больше не отображается в окне 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.

Источник 📢