Azure 负载测试不报告数据驱动的 url

Posted

技术标签:

【中文标题】Azure 负载测试不报告数据驱动的 url【英文标题】:Azure Load test does not report data driven urls 【发布时间】:2019-07-03 15:05:35 【问题描述】:

我有一个简单的负载测试,它基本上在恒定负载下执行单个 webtest。该 webtest 连接到一个 xml 文件数据源,该数据源包含指向我整个站点的 url。

当我从本地环境执行负载测试时,测试摘要页面会报告“前 5 个最慢的页面”中的各个 url,即“https://mysite.or/page”。但是当我从 Azure 执行相同的测试(即在 .testsettings 中将测试运行位置更改为 VSTS)时,链接报告为“https://EnviromentSitemap.url.loc”。这似乎只是一个报告问题,我可以验证 azure 是否正确调用了数据源中的 url。为什么 Azure 的测试不会报告从数据源构造的 url?

负载测试摘要:从本地执行 在 Azure 上执行相同的测试

网络测试

<?xml version="1.0" encoding="utf-8"?>
<WebTest Name="GenericSitemap" Id="02954e81-f3a7-4c9c-94f5-3a4304f88361" Owner="" Priority="2147483647" Enabled="True" CssProjectStructure="" CssIteration="" Timeout="0" WorkItemIds="" xmlns="http://microsoft.com/schemas/VisualStudio/TeamTest/2010" Description="" CredentialUserName="" CredentialPassword="" PreAuthenticate="True" Proxy="default" StopOnError="False" RecordedResultFile="" ResultsLocale="">
  <Items>
    <Request Method="GET" Guid="01c37ffa-92db-42e8-9d25-a042dcd0123d" Version="1.1" Url="https://EnviromentSitemap.url.loc" ThinkTime="0" Timeout="300" ParseDependentRequests="True" FollowRedirects="True" RecordResult="True" Cache="False" ResponseTimeGoal="0" Encoding="utf-8" ExpectedHttpStatusCode="0" ExpectedResponseUrl="https://EnviromentSitemap.url.loc" ReportingName="" IgnoreHttpStatusCode="False" />
  </Items>
  <DataSources>
    <DataSource Name="Sitemap" Provider="Microsoft.VisualStudio.TestTools.DataSource.XML" Connection="|DataDirectory|\..\Data\sitemap.xml">
      <Tables>
        <DataSourceTable Name="url" SelectColumns="SelectOnlyBoundColumns" AccessMethod="Random" />
      </Tables>
    </DataSource>
  </DataSources>
  <ContextParameters>
    <ContextParameter Name="Enviroment" Value="mysite.net" />
  </ContextParameters>
</WebTest>

【问题讨论】:

我不知道为什么会在您报告时发生。对于可能的解决方法,您可以创建一个WebTestRequestPlugin,其PreRequest 方法设置e.Request.ReportingName 属性。您可能需要自己构建名称或扩展上下文参数。我认为最终报告的名称只有最后一个 / 之后的字符。 (抱歉,目前无法检查或验证这些想法。) 【参考方案1】:

感谢@AdrianHHH。我通过创建 requestPlugin 并将其设置在数据驱动的请求上来使其工作。

这是我的插件:

[DisplayName("Set Request Params")]
[Description("Fix request urls when run from Azure")]
public class SetRequestParams : WebTestRequestPlugin

    public override void PreRequest(object sender, PreRequestEventArgs e)
    
        e.Request.ReportingName = e.Request.Url;
    

【讨论】:

以上是关于Azure 负载测试不报告数据驱动的 url的主要内容,如果未能解决你的问题,请参考以下文章

Azure Devops 负载测试完成后如何发送邮件通知

Azure 回复 url 在 AWS 负载均衡器后面总是不安全

在 Azure 中使用 Visual Studio Online 加载测试性能计数器

中车电动彭再武:商用车用电驱系统可靠性设计与测试

大量接口数据驱动思路

Azure 负载测试。了解虚拟用户如何影响性能