Добро пожаловать на третий пост в нашей серии о разработке и тестировании баз данных с использованием SQL Server Data Tools и Team Foundation Server. В предыдущих постах мы обсуждали непрерывную интеграцию с SSDT и TFS, а также модульное тестирование с помощью SQL Server Data Tools. В этом посте мы сосредоточимся на запуске тестов в Visual Studio для обеспечения качества вашей сборки.
Visual Studio 2012 и 2013 предлагают пять типов тестов, доступных для пользователей:
- Модульные тесты
- Тесты пользовательского интерфейса
- Тесты производительности веб-приложений
- Тесты нагрузки
- Общие тесты
Эти тесты, часто называемые тестами на дымовую проверку или тестами подтверждения сборки (BVT), необходимы для проверки функциональности и стабильности вашего приложения.
Требования к программному обеспечению
Для запуска модульных тестов вам понадобится Visual Studio 2010, 2012 или 2013, как минимум в версии Professional. Встроенная оболочка SQL Server Data Tools недостаточна для этой цели.
Настройка и запуск запланированных тестов
При создании тестов на подтверждение сборки вам потребуется использовать Visual Studio, систему контроля версий и средство сборки Team Foundation Build (msbuild). Вот шаги для настройки и запуска запланированных тестов после успешной сборки вашего приложения:
- Напишите свои тесты и проверьте их с помощью системы контроля версий.
- Создайте определение сборки.
- Добавьте компьютер в группу пользователей TestBuildController.
- Настройте агент сборки.
- Запустите определение сборки BVT.
Для целей этого поста мы будем использовать тот же проект, что и в предыдущих постах. Вы можете найти прикрепленный проект здесь. В предыдущем посте мы создали простой модульный тест, чтобы проверить, правильно ли работает наш сценарий непрерывного развертывания. Теперь мы хотим, чтобы этот сценарий выполнялся в рамках нашего процесса проверки после развертывания базы данных нашего интеграционного экземпляра.
Создание определения сборки
Чтобы создать определение сборки, перейдите в меню Сборка на домашней странице Team Explorer и нажмите на Создать определение сборки. Дайте имя и описание вашей сборке. В меню Триггер выберите непрерывную интеграцию.
В меню Процесс убедитесь, что все ваши проекты или решение выбраны в разделе Элементы для сборки. В разделе Основные -> Автоматизированные тесты -> Источник тестов нажмите многоточие (…) и убедитесь, что ваш сборочный модуль тестов указан там. По умолчанию он указывает шаблон, который находит все DLL-файлы с “test” в их имени. Эта строка поиска будет рекурсивно искать в каталогах все DLL-файлы, соответствующие шаблону в бинарных каталогах.
Теперь, когда вы выполняете проверку, тест будет выполняться в рамках процесса сборки. Однако остается одна проблема – пользователь, выполняющий тест, будет вашим именем компьютера в домене, и, вероятно, у него не будет прав на чтение базы данных, на которой вы собираетесь запустить тест.
Требуемые разрешения для выполнения модульных тестов в SQL Server Data Tools
Для выполнения модульных тестов на базе данных вам необходимо иметь следующие разрешения:
- Действие: Выполнить тест
- Соединение контекста выполнения: 1
- Соединение контекста с привилегиями: 1
- Действие: Выполнить предварительный или последующий тест
- Действие: Выполнить скрипты TestInitialize и TestCleanup
- Действие: Развернуть изменения базы данных перед запуском тестов
- Действие: Сгенерировать данные перед запуском тестов
Как видите, существуют два типа соединений с базой данных контекста: контекст выполнения и контекст с привилегиями. Соединение контекста с привилегиями требует больше разрешений из-за выполняемых задач.
Изменение разрешений контекста
Чтобы изменить разрешения контекста, щелкните правой кнопкой мыши на вашем тестовом проекте и выберите Конфигурация тестирования SQL Server. В появившемся диалоговом окне вы можете указать или создать соединение с базой данных и выполнить другие настройки, например, развернуть базу данных перед запуском теста. В нашем случае, поскольку мы уже делаем это в рамках проекта непрерывной интеграции, нет необходимости развертывать базу данных снова перед запуском тестов.
Контекст выполнения равен 1, и если вы его указываете, контекст с привилегиями будет равен 2 (для выполнения скриптов предварительной или последующей сборки и/или развертывания базы данных перед запуском тестов).
Использование интегрированной безопасности с модульными тестами
Ваши тесты всегда будут выполняться контроллером. В моем случае, он имеет то же имя, что и имя моего компьютера, и работает под учетной записью NT AUTHORITY\NETWORK SERVICE. Это служба Windows, работающая с настраиваемой учетной записью, поэтому ее изменение пр