【发布时间】:2019-04-09 07:11:02
【问题描述】:
如果您想配置您的 VS“负载测试”以将结果写入数据库服务器,请使用 following instructions。
如果您想通过 powershell 在单独的机器上运行“负载测试”(think TFS 2018 release step),请使用 following instructions。
我想在多台机器上以自动化的方式同时执行这两项操作,但是没有太多关于此的文档,我可以像这样运行我的测试:
.\mstest /testcontainer:"C:\XXX\ABC.loadtest"
但结果被踢出到“TRX”文件而不是放入数据库中(there is some discussion on this)。如何将结果放入外部数据库,就像我在本地运行时一样(按照上面的说明)?
注意:@AdrianHHH 指出“TRX”文件只是一个摘要,大部分信息都存储在本地(MDF/LDF 文件)在当前运行负载测试的用户的用户文件夹中。
更新 1
嗯,我想知道这是在哪里持续存在的:
(好奇,也点击“管理测试控制器”框中的“?”图标,什么都没有……)
它不在保存的 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 file does contains a "connection string" 但我不认为这是我的数据库,我的数据库是空的,通过 powershell 运行它完成,但我看到的只是“TRX”文件。
更新 3
这很棘手,我一直在尝试各种方法来确定此“管理测试配置”数据/凭据的存储位置。我这样做的一种方法是使用微软的Process Monitor。您实际上可以看到它最初是从哪里填充的:
它来自Application Hive,当然这引出了一个问题,“Application Hive”是从哪里填充的,这就是事情变得有点模糊的地方,对许多文件有不同的调用。一个常见的趋势是经常引用“Temp\Local”文件夹。
我删除了我的用户帐户的整个“临时”文件夹(在此过程中丢失了我的所有 VS 配置),并且在重新打开我的解决方案时,它似乎有效果。当我打开我的“LoadTest”文件时,“Load test results store”行现在是空的。事实上整个“管理测试控制器”窗口已经恢复到默认状态(空)。
我知道相信此“管理测试控制器”窗口的配置已保存在临时文件夹中。但是,我还没有找到它的位置和/或如何使用 powershell 脚本更改/自动填充该信息。
【问题讨论】:
-
“结果被踢出到“TRX”文件,而不是被放入数据库中” 不。结果的简短摘要进入 TRX 文件。我已经通过
mstest.exe运行负载测试,结果保存在 SQL 数据库中。.loadtest文件中指定了哪些“运行设置”,Storage Type和Timing Details Storage属性的值是什么? -
一台计算机上可能有多个负载测试结果数据库。当测试在不同的帐户下运行时,可能会发生这种情况。在不同的用户帐户中查找文件
LoadTest2010.mdf和LoadTest2010_log.ldf。在我的计算机上,它们位于文件夹“C:\Users\AdrianHHH”中。对于“Update 2”文本,如果在 Visual Studio 中打开 TRX 文件会发生什么情况,它会显示负载测试的结果吗? -
我通过
mstest.exe运行了测试,结果没有保存到数据库中,当然这发生在与我最初设置负载测试不同的系统上,所以这可能是问题所在。我将使用“RunConfiguration”行的详细信息更新问题。我确实看到我的系统上存在“MDF”和“LDF”文件,但这不是最佳选择,而不是将其保存在本地,我希望它写入单独的 SQL 服务器实例。当我使用截屏配置在 VS 中运行它时,它会这样做。但不是通过 mstest 命令行在单独的机器上(想想 TFS 部署) -
真正的问题是:“管理测试控制器”配置存储在哪里,通过 MSTest 在不同机器上运行负载测试时如何复制该配置?我想在最初的问题中,我并没有指出范围超过了一台机器,但这是一个基本点,也是我在 VS 中的本地机器上遇到的原始行为持续存在问题的真正原因。我将在澄清该部分的情况下更新问题。
标签: powershell tfs mstest load-testing