Можно ли одновременно запустить два тестовых случая в наборе тестов в Microsoft Test Manager 2010?

Я пытаюсь создать модульный тест для запуска на двух машинах в Microsoft Test Manager 2010. В этом тесте я хочу, чтобы некоторый тестовый код на стороне клиента и сервера выполнялся одновременно; тест на стороне клиента зависит от успешной работы теста на стороне сервера.

При сборке набора тестов в диспетчере тестов я хочу иметь возможность установить для обоих тестов одинаковое значение порядка (чтобы они выполнялись одновременно), но проверка предотвращает это; установка порядка, как показано ниже: Test Suite

Есть ли способ добиться одновременного выполнения теста, который мне нужен?


person andrew_scfc    schedule 13.08.2013    source источник
comment
Как они могут работать одновременно, если одно зависит от другого?   -  person Andrew Clear    schedule 14.08.2013
comment
Сервер предоставляет некоторые данные для использования клиентом. Затем клиент что-то делает с этими данными и отправляет их обратно на сервер. Однако сервер может выйти из строя при первом же препятствии, например. запуск службы WCF в этом случае, и я хотел бы, чтобы эта ошибка была записана в результате теста «Тест сервера». Конечно, если бы этот сбой произошел, «Тест клиента» также не прошел бы, но это правильно, поскольку он не может связаться с сервером, чтобы продолжить свою часть теста. Надеюсь, это имеет смысл!   -  person andrew_scfc    schedule 15.08.2013
comment
Это настолько далеко от модульного теста, насколько это возможно. Не можете ли вы имитировать поведение и выполнять каждый тест изолированно?   -  person Andrew Clear    schedule 15.08.2013
comment
На самом деле полностью согласен, тег вводит в заблуждение, это не модульный тест, это действительно тест системной интеграции очень высокого уровня. Я просто хочу использовать способность Test Manager распределять компоненты между машинами и регистрировать успехи и неудачи этих компонентов в результатах теста. Может быть, это неправильный инструмент для работы, и если да, то я был бы признателен за любые предложения относительно альтернативы? Спасибо за ваше время до сих пор.   -  person andrew_scfc    schedule 16.08.2013
comment
Эти тестовые примеры автоматизированы вашими модульными тестами? Как вы хотите начать тесты? (вручную: из диспетчера тестов? с помощью bat-файла? автоматически: с помощью определения сборки?) Важно ли для вас иметь результаты обоих тестов в одном файле результатов теста?   -  person Elena    schedule 11.09.2013
comment
Тесты будут запускаться автоматически определением сборки как ночной интеграционный тест. Не обязательно, чтобы оба результата теста отображались в файле результатов теста, но мне нужно, чтобы они выполнялись одновременно, поскольку они зависят друг от друга. Существует одна альтернатива этому, которая заключается в настройке теста на стороне сервера, работающего как внешнее приложение на серверной машине для связи с клиентским тестом. Единственная проблема заключается в том, что нет способа точно зафиксировать ошибки на стороне сервера, как в файле результатов теста.   -  person andrew_scfc    schedule 16.09.2013
comment
Используете ли вы LabDefaultTemplate в этом определении сборки? Если да: что делает это определение сборки? Начнется ли реальная сборка вашего кода? Будет ли развернута последняя сборка в тестовой среде? Если нет: как вы собираетесь начать тесты? Используете tcm.exe? Извините за столько вопросов, но я хочу точно понять, как выглядит ваша тестовая среда. Поскольку вы определенно не сможете установить одно и то же значение заказа для обоих тестовых случаев через MTM, я пытаюсь предложить другое решение.   -  person Elena    schedule 18.09.2013
comment
С вопросами проблем нет, буду благодарен за помощь! Я использую LabDefaultTemplate, который создает последний код, развертывает последний код, а затем запускает Test Suite из Test Manager. В идеале я бы хотел, чтобы тест сервера выполнялся на одном компьютере, а тест клиента — на другом. Затем, когда оба теста завершены, результаты тестирования клиента и сервера будут собраны и представлены после сборки.   -  person andrew_scfc    schedule 18.09.2013


Ответы (2)


Извините за поздний ответ... Я пропустил уведомление о ваших ответах на мой вопрос :-( Извините за это!

Если вы все еще ищете решение, вот мое предложение.

Я полагаю, у вас есть тестовая среда, состоящая из двух машин (для сервера и клиента). Если это так, вы не сможете запускать тесты на обоих из них, или, лучше сказать, у вас не будет достаточного контроля над запуском тестов. Проверьте Как запускать автоматические тесты на нескольких в то же время
На самом деле я разместил соответствующий вопрос на «Форуме разработчиков Visual Studio», вы можете проверить ответы, которые я получил здесь: Можно ли запустить тест на нескольких виртуальных машинах, принадлежащих к одной среде, используя рабочий процесс сборки-развертывания-тестирования

Все это означает, что вы в конечном итоге создадите две среды, каждая из которых состоит из одной машины (одна для сервера и одна для клиента).
Но тогда вы не сможете ссылаться на обе среды в своем определении сборки, если вы можете выбрать только одну среду в DefaultLabTemplate.

Это приводит к решению, которое я могу предложить:

  1. Создайте две лабораторные среды
  2. Create three build definitions
    • the first one will only build your test code
    • второй развернет последнюю успешную сборку из первого и запустит тесты в серверной среде.
    • третий развернет последнюю успешную сборку из первой и запустит тесты в клиентской среде.
  3. Автоматически запускать первое определение сборки ночью
  4. Запустите последние два одновременно позже.

Я знаю, это не очень приятно...
Вам придется синхронизировать определение сборки, создающее тестовый код, с двумя определениями сборки, запускающими тесты.

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

Другой вариант, я еще не пробовал, может быть таким:

  1. Используйте единую тестовую среду, состоящую из двух машин, и используйте для них разные роли (сервер и клиент соответственно).
  2. В MTM создайте две Настройки тестирования (одну для роли сервера и одну для роли клиента).
  3. Создайте файл bat для запуска тестов с помощью инструмента tcm.exe (см. Как: запускать автоматические тесты из командной строки с помощью Tcm для получения дополнительной информации).
    Вам потребуется два вызова tcm.exe, по одному для каждой Настройки теста вы создали.
    Поскольку вызов tcm.exe просто ставит в очередь тестовый запуск и возвращает (более или менее) немедленно, этот файл ванны запустит тесты (более или менее) одновременно .
  4. Create a build definition using DefaultLabTemplate. This definition will:
    • build test code
    • разверните их на обеих машинах в вашей среде
    • запустите свой сценарий ванны в качестве последнего шага развертывания
      (вам нужно будет убедиться, что этот сценарий расположен на машине сборки, или развернуть его там, или сделать его доступным с машины сборки)

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

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

person Elena    schedule 23.10.2013
comment
Елена, спасибо, что нашли время ответить! Это долгосрочная задача, и я могу попробовать одно из ваших предложений в следующий раз, когда буду писать тесты для своего компонента. - person andrew_scfc; 27.11.2013

Да, вы можете с измененным файлом TestSettings. http://blogs.msdn.com/b/vstsqualitytools/archive/2009/12/01/executing-unit-tests-in-parallel-on-a-multi-cpu-core-machine.aspx

person AAATechGuy    schedule 06.09.2013
comment
Это позволит запускать тесты одновременно на одной машине, но не позволит запускать их одновременно на нескольких машинах в диспетчере тестов. Этот ответ действительно отвечает на вопрос заголовка, но не на мой конкретный случай, поэтому, надеюсь, он может помочь кому-то еще: - person andrew_scfc; 16.09.2013