Инструменты итеграционного тестирования

DevBookmark_IntegrationTests Интеграционные тесты можно найти в справочнике "Integration tests", который содержит тесты как для платформы, так и для конфигурации:

IntegrationTests_Ribbon

IntegrationTests

Окно справочника разделено на две части: слева отображается дерево групп тестов, справа – список тестов выбранной слева группы. Записи справочника можно фильтровать по Названию теста (Caption) и Тегам (Tag).

Командой Execute all tests панели инструментов, как и одноименной командой главного меню, можно запустить выполнение всех активных (помеченных флагом Active) интеграционных тестов.

Каждый тест содержит один или более скриптов (классов), каждый скрипт – один или более тест-кейсов (методов):

IntegrationTests2

Caption – название теста;

Folder – группа, которой принадлежит тест;

Active – тесты с установленным флаг будут выполняться, при вызове команды Execute all tests;

Metadata tags – теги, используемые для описания функционала теста;

Developer's comments – комментарии прикладного разработчика;

Scripts – скрипты теста:

скрипты можно создавать Dictionaries_Button_1 или удалять Dictionaries_Button_4 соответствующими кнопками в панели инструментов;

при создании скрипта будет открыта его форма редактирования. По умолчанию скрипту будет присвоено имя IntegrationTest с числовым суффиксом;

в поле Display name следует указать имя скрипта, которое будет отображаться в результатах выполнения теста;

при удалении скрипт будет удален не только из теста, но и из справочника Scripts;

скрипт открывается в форме редактирования по двойному клику левой кнопкой мыши на нем в списке;

открыть скрипт выбранного теста в форме редактирования можно прямо из списковой формы справочника, выбрав пункт Edit script в контекстном меню;

порядок выполнения скриптов задается путем перемещения выбранного скрипта нажатием кнопок IntegrationTests2_arrowup и IntegrationTests2_arrowdown в панели инструментов, порядок выполнения – сверху вниз;

порядок выполнения тест-кейсов – методов внутри скрипта – также сверху вниз.

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

Кнопка Tasks_EditFormButton Start Now в панели инструментов формы редактирования теста (а также одноименный пункт контекстного меню списковой формы тестов) позволяет выполнить его немедленно.

Интеграционные тесты, как правило, взаимодействуют с базой данных. Чтобы не влиять на реальный учет, тесты выполняются в отдельных транзакциях, которые всегда откатываются. Каждый тест (все его скрипты с кейсами) выполняется в одной транзакции, поэтому несколько тестов можно выполнять параллельно, запуская их пакетом.

DevBookmark_IntegrationTestResultsРезультаты выполнения тестов сохраняются (и автоматически открываются по выполнении) в справочнике результатов "Integration test results":

IntegrationTests3

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

Выполненные тесты можно фильтровать по:

тегам, которыми была помечена версия метаданных, над которой был выполнены тесты (пункт (All) – по всем версиям);

времени выполнения интеграционных тестов, за: последнюю неделю (Last Week), последний месяц (Last Month), последний год (Last Year), все время (Any Date).

Для выполненных интеграционных тестов в списке отображаются:

Date – дата и время выполнения интеграционных тестов;

Summary – итог выполнения: число пройденных (tests passed) и проваленных (tests failed) интеграционных тестов;

VersionTag.Name – тег, которыми была помечена версия метаданных, над которой были выполнены интеграционные тесты;

Passed – результат выполнения:

Scripts_scr_DictEditForm1_CheckTick_ Passed – все тест-кейсы всех скриптов интеграционных тестов пройдены;

Scripts_scr_DictEditForm1_CheckCross_ Failed – как минимум один тест-кейс скрипта одного из интеграционных тестов провален.

Результаты выполнения выбранных интеграционных тестов отображаются справа в древовидной структуре: тест-кейсы сгруппированы по скриптам, которые в свою очередь сгруппированы по тестам. Иконка перед их названием говорит о результате их выполнения: Scripts_scr_DictEditForm1_CheckTick_ – удачном и Scripts_scr_DictEditForm1_CheckCross_ – неудачном. Если хотя бы один тест-кейс провален, результат выполнения скрипта, а также самого теста, считается также неудачным:

Test.Name – имя интеграционного теста, скрипта или тест-кейса (метода скрипта);

Passed – результат выполнения – удачный, если флаг установлен;

Duration – время выполнения в милисекундах;

Output – итог выполнения:

для интеграционного теста – число удачных (test scripts passed) и проваленных (test scripts failed) скриптов;

для скрипта – число выполненных (tests passed) и неудачных (tests failed) тест-кейсов;

для тест-кейса – выполнен (Ok) или провален (Error).

Для неудачно выполненного тест-кейса также в поле Output отображается текст ошибки (полный текст выводится в подсказке по наведению курсора):

IntegrationTests5

Из результатов выполнения тестов можно попасть обратно в редактор интеграционного теста или сразу в его скрипт по двойному клику левой кнопкой мыши на соответствующей строке результатов. Двойной же клик на строке результатов конкретного тест-кейса (метода скрипта) открывает редактор скрипта на нужной строке:

IntegrationTests4

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

IntegrationTests6

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

IntegrationTests7

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

IntegrationTests8

Следует помнить, что старые исключения обычно невозможно изучить таким образом – либо исключение нельзя десериализовать из-за несовпадения версии метаданных, либо строки в StackTrace не соответствуют текущему состоянию скрипта.

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