Что такое система управления тестированием

Система управления тестированием (test management system, TMS) - программа для планирования, учёта и контроля тестирования. Она хранит тест-кейсы, объединяет их в наборы, выполняет их в тестовых прогонах, записывает результат каждого выполнения и связывает тесты с требованиями, дефектами и автотестами. В глоссарии ISTQB этот класс программ называется инструментом управления тестированием (test management tool): инструментом, который поддерживает управление тестированием и контроль хода процесса тестирования.

Стандарта, который определял бы, из чего обязана состоять система управления тестированием, нет. Словарь её сущностей взят из глоссария ISTQB и из серии стандартов тестирования ISO/IEC/IEEE 29119: её часть 3 (документация тестирования, текущая редакция 2021 года) описывает документы, которые создаёт процесс тестирования. Системы различаются названиями и деталями, но основные сущности и связи между ними в большинстве из них одинаковы.

Какую задачу решает система управления тестированием

Тестирование создаёт два вида информации. Первый - описание тестов: что проверяется, в каких условиях, какими шагами и с какими ожидаемыми результатами. Второй - записи о выполнении: какие тесты запускались, на какой версии продукта, в каком окружении, кем и с каким итогом.

Оба вида информации можно хранить в документах и таблицах. С ростом числа тестов, релизов и тестировщиков такой подход упирается в ограничения:

  • один и тот же тест выполняется много раз, а таблица хранит либо описание, либо историю результатов, но не то и другое в виде, по которому можно делать выборки;
  • несколько тестировщиков одновременно работают с одним набором тестов, и правки конфликтуют;
  • упавшему тесту нужна ссылка на дефект, а дефекту - обратная ссылка на тест и на сборку, где он найден;
  • руководителю нужны показатели хода тестирования во время работы, а не после неё, и собирают их вручную;
  • вопросы вроде «какие требования проверены на сборке 2.4.1» или «когда этот тест последний раз проходил» требуют поиска по многим файлам.

Система управления тестированием отделяет описание теста от записей о его выполнении и хранит и то, и другое в одной модели данных. Ход тестирования, покрытие и история тогда вычисляются из данных, а не собираются вручную.

Основные сущности

Сущности ниже есть в большинстве систем управления тестированием. Названия у них разные: тестовый прогон называют также выполнением (test execution) или циклом (test cycle), набор тестов - папкой или разделом.

Сущность Что это Подробная статья
Проект Контейнер для всех сущностей одного продукта или команды: тестов, прогонов, настроек, прав доступа
Тест-кейс Описание одной проверки: предусловия, шаги, ожидаемые результаты Тест-кейс
Набор тестов Группа тест-кейсов по функции, компоненту или назначению
Тест-план Описание объёма, подхода, ресурсов и графика тестирования Тест-план и тестовая стратегия
Тестовый прогон Выполнение выбранного набора тест-кейсов на определённой версии продукта в определённом окружении Тестовый прогон
Результат теста Запись об одном выполнении одного тест-кейса в прогоне: статус, фактический результат, вложения Тестовый прогон
Дефект Запись о дефекте, найденном при тестировании: отчёт о дефекте Отчёт о дефекте
Требование Утверждение о том, что должен делать продукт; к нему привязываются тесты Трассируемость и покрытие требований

Тест-кейс и набор тестов

Тест-кейс (test case) - единица описания тестов. Глоссарий ISTQB определяет его как совокупность предусловий, входных данных, действий, ожидаемых результатов и постусловий, разработанную на основе условий тестирования. В системе управления тестированием у тест-кейса есть идентификатор, название, содержание (предусловия, шаги, ожидаемые результаты) и атрибуты: приоритет, статус, автор, теги, пользовательские свойства.

Набор тестов (test suite) объединяет тест-кейсы. Глоссарий ISTQB определяет набор тестов как совокупность тестовых сценариев или тестовых процедур, которые выполняются в определённом тестовом прогоне. Системы управления тестированием обычно понимают это слово шире - как любую именованную группу тест-кейсов: по функции («Оформление заказа»), по компоненту («Платёжный API») или по назначению («Smoke-тесты»). Наборы часто вкладываются друг в друга и образуют дерево.

Тестовый прогон и результат теста

Тестовый прогон (test run) - однократное выполнение выбранного набора тест-кейсов. Прогон фиксирует, что тестировалось (версия или сборка продукта), где (окружение: операционная система, браузер, устройство, конфигурация) и когда. В прогоне по одному результату на каждый включённый в него тест-кейс.

Результат теста относится к одному тест-кейсу и одному прогону. В нём статус (например, пройден или не пройден), фактический результат, комментарии, вложения - снимки экрана и журналы, затраченное время и исполнитель. Непройденный результат связывается с дефектом.

Разделение тест-кейса и результата - центральная идея модели данных. Тест-кейс - спецификация, которая меняется редко. Результат - факт об одном выполнении. У одного тест-кейса со временем накапливается много результатов:

Test case TC-12 "Pay with a saved card"
 |
 +-- Run "Release 2.4.0, Chrome"   -> passed
 +-- Run "Release 2.4.0, Safari"   -> failed  -> Defect BUG-310
 +-- Run "Release 2.4.1, Safari"   -> passed  (confirmation of the fix)

Тест-план

Тест-план описывает, что будет тестироваться, как, кем и когда. В одних системах это документ, прикреплённый к проекту. В других - сущность, которая объединяет несколько тестовых прогонов, например все прогоны одного релиза в разных окружениях, и показывает их общий ход. Назначение документа и его состав по ISO/IEC/IEEE 29119-3 описаны в статье Тест-план и тестовая стратегия.

Дефект и требование

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

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

Как связаны сущности

Схема показывает связи между основными сущностями. Стрелка читается как «содержит» или «связан с».

Project
 |
 +-- Test suites --- contain ---> Test cases <--- linked ---> Requirements
 |                                   |
 +-- Test plan --- groups ---> Test runs
                                     |
                                     +-- Test results (one per test case in the run)
                                              |
                                              +-- linked ---> Defects

В большинстве систем управления тестированием есть и пользовательские свойства (custom properties) - поля, которые команда задаёт сама для тест-кейсов, прогонов или результатов, например «Компонент», «Платформа» или «Уровень риска». Пользовательские свойства используются для фильтрации, отчётов и сопоставления данных между системами.

Роли

Силлабус ISTQB Foundation Level (версия 4.0.1) выделяет две основные роли в тестировании. Роль управления тестированием (test management role) отвечает за процесс тестирования в целом: планирование, мониторинг и контроль, завершение. Роль тестирования (testing role) отвечает за техническую сторону: анализ, проектирование, реализацию и выполнение тестов. Обе роли может выполнять один человек, а в гибких командах часть задач управления тестированием берёт на себя команда.

В системе управления тестированием этим ролям соответствуют разные наборы действий:

Роль Типичные действия в системе
Управление тестированием Создаёт тест-планы и прогоны, распределяет тесты между тестировщиками, следит за ходом работ, готовит отчёты
Тестирование Пишет и рецензирует тест-кейсы, выполняет прогоны, записывает результаты, заводит дефекты
Разработка Читает непройденные результаты и дефекты, воспроизводит сбои, связывает исправления, публикует результаты автотестов
Аналитика и продукт Связывает требования с тест-кейсами, смотрит покрытие и результаты приёмочного тестирования

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

Процесс тестирования в системе управления тестированием

Силлабус ISTQB делит процесс тестирования на активности. Каждая создаёт рабочие продукты, которые система управления тестированием хранит или вычисляет.

Активность Что создаёт Где это в системе
Планирование Тест-план, объём, критерии входа и выхода Тест-план, вехи
Мониторинг и контроль Ход работ относительно плана, отклонения Панели и отчёты, вычисленные из результатов
Анализ Условия тестирования: что нужно проверить Требования и их связи
Проектирование Тест-кейсы, требования к тестовым данным Тест-кейсы и наборы
Реализация Тестовые процедуры, наборы для выполнения, окружения Выбор тест-кейсов для прогона, окружения и конфигурации
Выполнение Результаты, журналы, отчёты о дефектах Результаты тестов, вложения, дефекты
Завершение Отчёт о завершении тестирования, извлечённые уроки Отчёты по прогонам и планам, архив прогонов

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

Автотесты и CI

Автотесты - это код. Они хранятся в репозитории кода и запускаются в системе непрерывной интеграции (continuous integration, CI) при каждом изменении. Система управления тестированием не заменяет тестовый фреймворк и систему CI. Она получает результаты запусков автотестов и хранит их вместе с результатами ручного тестирования.

Типичный поток данных:

Code repository --> CI pipeline --> Test framework --> Report file
                                                          |
                                                          v
                                        Test management system: test run with results

Самый распространённый формат обмена - JUnit XML. Его распространил проект JUnit, и его поддерживают большинство тестовых фреймворков, систем CI и систем управления тестированием. Официальной спецификации формата нет, и инструменты создают немного разные его варианты. Основная структура при этом устойчива:

xml
<?xml version="1.0" encoding="UTF-8"?>
<testsuites name="checkout" tests="3" failures="1" errors="0" skipped="1" time="4.21">
  <testsuite name="Checkout.Payment" tests="3" failures="1" errors="0" skipped="1" time="4.21">
    <testcase classname="Checkout.Payment" name="pay_with_saved_card" time="1.62"/>
    <testcase classname="Checkout.Payment" name="pay_with_expired_card" time="2.59">
      <failure message="Expected error message was not shown" type="AssertionError"/>
    </testcase>
    <testcase classname="Checkout.Payment" name="pay_with_gift_card" time="0">
      <skipped message="Gift cards are disabled in this environment"/>
    </testcase>
  </testsuite>
</testsuites>

Элемент testcase без вложенного элемента - пройденный тест. failure означает, что не прошла проверка в тесте, error - непредвиденную проблему при выполнении, skipped - что тест не выполнялся.

Чтобы связать автотест с тест-кейсом в системе, его результату нужен идентификатор, известный обеим сторонам. Обычные варианты - полное имя теста (classname и name), идентификатор тест-кейса в имени или в свойстве теста, или таблица соответствия, которую ведёт система. Кроме импорта файлов, системы управления тестированием предоставляют API, через который задача CI создаёт прогон и отправляет результаты напрямую.

Как автотесты распределяются по уровням, описано в статье Уровни автоматизации и пирамида тестов. Как они запускаются в CI и как их результаты попадают в тестовые прогоны, описано в статье Автотесты в CI.

Система управления тестированием, баг-трекер и таск-трекер

Система управления тестированием часто работает вместе с баг-трекером и таск-трекером, и их функции частично пересекаются.

Система управления тестированием Баг-трекер Таск-трекер
Основной объект Тест-кейс и его результаты Дефект Задача, юзер стори
Единица истории Результат выполнения теста на сборке Смена статуса дефекта Смена статуса задачи
Повторное использование Тест-кейс выполняется много раз, во многих прогонах Дефект исправляют и закрывают один раз; его можно переоткрыть Задачу выполняют один раз
Типичные вопросы Что проверено на этой сборке, что прошло, что покрыто Какие дефекты открыты, кто их исправляет, насколько они серьёзны Что запланировано, кто делает, что готово
Связь с остальными Результаты связаны с дефектами, тест-кейсы - с требованиями Дефекты связаны с результатами и коммитами Задачи связаны с требованиями и дефектами

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

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

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

Термины

Термин Значение
Система управления тестированием Программа для планирования, учёта и контроля тестирования: тест-кейсы, прогоны, результаты и их связи
Тест-кейс (test case) Совокупность предусловий, входных данных, действий, ожидаемых результатов и постусловий, разработанная на основе условий тестирования
Набор тестов (test suite) Именованная группа тест-кейсов по функции, компоненту или назначению
Тестовый прогон (test run) Выполнение выбранного набора тест-кейсов на определённой версии продукта в определённом окружении
Результат теста (test result) Запись об одном выполнении одного тест-кейса в тестовом прогоне
Дефект (defect) Изъян или недостаток рабочего продукта, из-за которого он не соответствует своим требованиям или спецификациям
Требование (requirement) Утверждение о том, что должен делать продукт; к нему привязываются тесты
Пользовательское свойство (custom property) Поле, которое команда задаёт для тест-кейсов, прогонов или результатов
JUnit XML Фактический стандарт XML-формата для обмена результатами автотестов

Источники

Серия

Управление тестированием
  1. Что такое система управления тестированиемТекущая
  2. Тест-кейс
  3. Тестовый прогон
  4. Тест-план и тестовая стратегия
  5. Отчёт о дефекте
  6. Трассируемость и покрытие требований
  7. Метрики тестирования
  8. Миграция между системами управления тестированием

Статьи Wiki пишет и поддерживает команда ComplexQA.