Test as Text в IntelliJ IDEA

Моя цель - предложение широкого ассортимента товаров и услуг на постоянно высоком качестве обслуживания по самым выгодным ценам.

Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!

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

Источник: https://habr.com/ru/company/JetBrains/blog/575592/


Интересные статьи

Интересные статьи

В этой статье мы рассмотрим, как более-менее прилично организовать процесс тестирования и публикации чартов, встреченные при этом подводные камни, а также рассмотрим пару великолепных инструментов, ко...
Довольно часто в производственной среде нужно быстро оценить скорость сетевого подключения в локальной сети.Один из лучших инструментов — iperf. Но если речь не идет о точной диагностике,...
В прошлой части мы поговорили о советах директору по разработке бизнес-процесса в Битрикс24, сейчас же я постараюсь дать советы руководителям отделов, поскольку по моему опыту почти всегд...
Сегодня я рад представить вам полностью переработанную страницу отображения результатов тестирования светодиодных ламп на Lamptest.ru. Динамическое обновление таблицы, умный поиск, всплывающие по...
Некоторое время назад мне довелось пройти больше десятка собеседований на позицию php-программиста (битрикс). К удивлению, требования в различных организациях отличаются совсем незначительно и...