0

我已经在MS Visual Studio 2015中创建了Web性能和负载测试项目。在该项目下,我创建了一些Web性能测试。如何更改Web性能测试执行路径

但是我们有不同的团队环境,我们希望所有服务器上运行这些测试,所以我用下的每个Web性能测试

“上下文参数”更改URL地址使用上下文PARAM后,URL变为: https://{{WebServer}}/WebSite/account/signin并且按预期工作。

但是,我想知道是否有配置文件其中我可以更新服务器路径,所以不需要每次都更改Web测试。 我尝试了不同的选项Local.testsettingstest.runsettings。但不能使其动态。

谢谢。

回答

1

有几个选项。

  1. 上下文参数可以在负载测试中设置。在那里设置的值覆盖Web测试中设置的值。使用这种方法,也许你可以制作好几个负载测试副本,每个必需的环境一个。

  2. 环境变量可以设置或覆盖上下文参数的值。设置名称为“Test.MyWebServer”的环境变量将覆盖MyWebServer上下文参数的值。

0

感谢您的回复。但我们不想重复测试用例。 目前,我们正在阅读的配置文件中WebTestPlugin类作为

public class LoginAssistPlugin : WebTestPlugin 
{ 
     ExeConfigurationFileMap fileMap = new ExeConfigurationFileMap(); 
     fileMap.ExeConfigFilename = configFilePath; 
     _config = ConfigurationManager.OpenMappedExeConfiguration(fileMap, ConfigurationUserLevel.None); 
} 

上述方法被写入插件类的构造函数。 而服务器主机名被设置为静态变量。然后,我们使用WebTestPlugin类中的其他可重写方法(如下所示)来替换Web性能测试中的WebContext参数。

public override void PreRequest(object sender, PreRequestEventArgs e) 
     { 
      e.Request.Url = e.Request.Url.Replace("{{WebServer}}", _webServer); 
      e.Request.Url = e.Request.Url.Replace("{{IdentityServer}}", _identityServer); 

      e.Request.QueryStringParameters.ToList().ForEach(param => param.Value = param.Value.Replace("{{WebServer}}", _webServer)); 
      e.Request.QueryStringParameters.ToList().ForEach(param => param.Value = param.Value.Replace("{{ClientId}}", _clientId)); 
      e.Request.QueryStringParameters.ToList().ForEach(param => param.Value = param.Value.Replace("{{WebClientPath}}", _webClientPath)); 

      //if(e.WebTest.Name == "signin") 
      // e.Request.QueryStringParameters.ToList().ForEach(param => param.Value = param.Value.Replace("{{UserName}}", userName)); 

      e.Request.Headers.ToList().ForEach(header => header.Value = header.Value.Replace("{{WebClientPath}}", _webClientPath)); 
      e.Request.Headers.ToList().ForEach(header => header.Value = header.Value.Replace("{{IdentityServer}}", _identityServer)); 
      e.Request.Headers.ToList().ForEach(header => header.Value = header.Value.Replace("{{WebServer}}", _webServer)); 
      e.Request.Headers.ToList().ForEach(header => header.Value = header.Value.Replace("{{ClientId}}", _clientId)); 

      if (_token != null) 
      { 
       e.Request.Headers.Add("Authorization", "Bearer " + _token); 
      } 
     } 

然后这个插件用于每个web性能测试。 任何更多的帮助/提示将是hlpfull。

+0

这不是一个答案。请编辑原始问题以包含此信息。但也请在上面的问题中*和“我们不想重复测试用例”*之间明确地表明*之间的矛盾,以便不必每次都改变网络测试*。 – AdrianHHH

+0

我同意,这不是确切的答案,但它满足我的需求。 “我们不希望重复测试用例意味着” - 我们为各个团队以及分段和集成环境设立了分支机构,我们希望通过命令提示符在所有这些环境中运行这些测试,并最小化用户交互。所以我们需要从配置文件中读取Web服务器路径。 “所以网络测试不需要每次都改变” - 也指同一事物,不同分支上的结果应该在MTM中可见。我希望,我已经澄清了这个疑问。 – Pushkar

相关问题