MSTest - запустить «LoadTests» и записать результаты в базу данных SQL Server - PullRequest
0 голосов
/ 06 ноября 2018

Если вы хотите сконфигурировать VS «Load Tests» для записи результатов на сервер базы данных, используйте , следуя инструкциям .

Если вы хотите запускать «нагрузочные тесты» через powershell на отдельном компьютере ( думаю, шаг выпуска TFS 2018 ), вы используете , следуя инструкциям .

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

.\mstest /testcontainer:"C:\XXX\ABC.loadtest"

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

Примечание: @AdrianHHH указывает, что файл "TRX" является только сводкой и что большая часть информации хранится локально (файл MDF / LDF) в папке пользователя текущего пользователя, выполняющего нагрузочные тесты.

Обновление 1

Хм Интересно, где это сохранилось:

(Любопытно, также нажмите на значок «?» В поле «Управление тестовым контроллером», ничего ...) enter image description here

Это не в сохраненном XML:

<RunConfigurations>
    <RunConfiguration Name="Run Settings1" Description="" ResultsStoreType="Database" TimingDetailsStorage="AllIndividualDetails" SaveTestLogsOnError="true" SaveTestLogsFrequency="0" MaxErrorDetails="200" MaxErrorsPerType="1000" MaxThresholdViolations="1000" MaxRequestUrlsReported="1000" UseTestIterations="false" RunDuration="10" WarmupTime="0" CoolDownTime="0" TestIterations="100" WebTestConnectionModel="ConnectionPerUser" WebTestConnectionPoolSize="50" SampleRate="5" ValidationLevel="High" SqlTracingConnectString="" SqlTracingConnectStringDisplayValue="" SqlTracingDirectory="" SqlTracingEnabled="false" SqlTracingFileCount="2" SqlTracingRolloverEnabled="true" SqlTracingMinimumDuration="500" RunUnitTestsInAppDomain="true" CoreCount="0" ResourcesRetentionTimeInMinutes="0" AgentDiagnosticsLevel="Warning">
      <CounterSetMappings>
        <CounterSetMapping ComputerName="[CONTROLLER MACHINE]">
          <CounterSetReferences>
            <CounterSetReference CounterSetName="LoadTest" />
            <CounterSetReference CounterSetName="Controller" />
          </CounterSetReferences>
        </CounterSetMapping>
        <CounterSetMapping ComputerName="[AGENT MACHINES]">
          <CounterSetReferences>
            <CounterSetReference CounterSetName="Agent" />
          </CounterSetReferences>
        </CounterSetMapping>
      </CounterSetMappings>
      <LoadGeneratorLocations>
        <GeoLocation Location="Default" Percentage="100" />
      </LoadGeneratorLocations>
    </RunConfiguration>
  </RunConfigurations>

Они не сохраняются в моем файле "testsettings" по умолчанию:

<?xml version="1.0" encoding="UTF-8"?>
<TestSettings name="Local" id="02cad612-043b-447d-993e-a9b9b0547c9d" 
     xmlns="http://microsoft.com/schemas/VisualStudio/TeamTest/2010">
  <Description>These are default test settings for a local test run.</Description>
  <Deployment enabled="false" />
  <Execution hostProcessPlatform="MSIL">
    <TestTypeSpecific />
    <AgentRule name="Execution Agents">
    </AgentRule>
  </Execution>
  <Properties>
    <Property name="TestSettingsUIType" value="UnitTest" />
  </Properties>
</TestSettings>

Так что мне нужно найти, где когда-либо сохраняется эта информация о конфигурации, тогда, возможно, я смогу найти способ передать ее в MSTest. Кто-нибудь еще понимает, как это работает?

Обновление 2

Мой TRX-файл содержит «строку подключения» , но я не думаю, что это относится к моей базе данных, моя база данных пуста, при запуске через powershell она завершается, но все, что я вижу, это «TRX» "файл.

Обновление 3

Это хитро, я продолжаю пробовать разные способы определить, где хранятся данные / учетные данные «Управление конфигурацией теста». Один из способов сделать это - использовать Process Monitor от Microsoft . Вы действительно можете увидеть, откуда он изначально заполняется:

enter image description here

Это из Application Hive , конечно, напрашивается вопрос, откуда взялся «Application Hive», вот где все становится немного мутным, есть множество различных вызовов для многих файлов. Распространенной тенденцией является то, что на папку «Temp \ Local» часто ссылаются.

Я удалил всю папку «Temp» для своей учетной записи пользователя (в процессе теряется вся моя конфигурация VS), и после повторного открытия моего решения это выглядит так, как будто это дало эффект. Когда я открываю свой файл «LoadTest», строка «Загрузить хранилище результатов теста» теперь пуста. Фактически все окно «Управление тестовым контроллером» было восстановлено по умолчанию (пусто).

Мне известно, что конфигурация для этого окна «Управление тестовым контроллером» сохраняется во временной папке. Однако мне еще предстоит определить, где она находится и / или как изменить / автоматически заполнить эту информацию сценарием powershell.

1 Ответ

0 голосов
/ 08 ноября 2018

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

privateregistry.bin

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

enter image description here

Это указывало, что:

"Строка подключения SQL НЕ хранится в файлах загрузки. настройки, похоже, специфичны для ПК, поэтому мне пришлось изменить их при сборке сервер - в одном файле загрузки (address.loadtest), как показано, затем все другие тесты загрузки принимают ту же строку подключения. "

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

Нагрузочные тесты явно не предназначены для облегчения этого процесса, я не думаю, что многие пытались сделать то, что я сделал. Все статьи просто говорят вам использовать их облачный сервис . Я уверен, что это касается только веб-тестов. Если вы используете нагрузочное тестирование для тестирования юнит-тестов , вам почти не повезло (без этого обходного пути). Я действительно надеюсь, что это получит официальную поддержку в будущем, было бы очень хорошо как запустить / просмотреть все типы нагрузочных тестов из TFS. Пока что мне придется продолжать использовать эту работу.

...