【发布时间】:2016-09-09 22:56:15
【问题描述】:
我有一些针对我的应用程序运行的相对简单的事务,例如“启动用户会话”,通过 SilkPerformer 运行 VS 项目时通常需要几秒钟。当我尝试使用 VS 2015 性能测试工具(在控制器本地)执行相同的事务时,响应时间大约增加了 12 秒,重复。
我有一个事务记录器,它可以捕获每个事务的响应时间,因此我可以在 VS 中执行期间单独查看它们,我想知道我是否在某处遗漏了某个设置,或者我可以对配置进行更改项目,因为它看起来好像项目正在安排交易的执行。无论是直接在代理上还是在控制器上运行,我都会得到相同的行为,因此它似乎与网络无关。
这是正在执行的代码示例:
public interface ITestTransactionTimer : IDisposable { }
public class TestTransactionTimer : ITestTransactionTimer
{
public TestContext TestContext { get; private set; }
public string TransactionName { get; private set; }
public TestTransactionTimer(TestContext testContext, string transactionName)
{
this.TestContext = testContext;
this.TransactionName = transactionName;
this.TestContext.BeginTimer(this.TransactionName);
}
public void Dispose()
{
this.TestContext.EndTimer(this.TransactionName);
}
}
public class NoOpTestTransactionTimer : ITestTransactionTimer
{
public void Dispose() { }
}
protected ITestTransactionTimer LogTransaction(string transactionName)
{
if ((null == this.TestContext) || !this.TestContext.Properties.Contains("$LoadTestUserContext"))
{
return new NoOpTestTransactionTimer();
}
return new TestTransactionTimer(this.TestContext, transactionName);
}
private TestContext testContextInstance;
public TestContext TestContext
{
get { return testContextInstance; }
set { testContextInstance = value; }
}
//starting User Session
[DataSource("Microsoft.VisualStudio.TestTools.DataSource.CSV", "C:\\Path\\Data.csv", "Data#csv", DataAccessMethod.Sequential), DeploymentItem("C:\\Path\\Data.csv"), TestMethod]
public void smokeTest()
{
sUserName = "domain\\"+TestContext.DataRow["user"].ToString();
sPassword = TestContext.DataRow["password"].ToString();
prospectClientId = TestContext.DataRow["prospectClientId"].ToString();
accountNumber = TestContext.DataRow["accountNumber"].ToString();
correlationId = "startUserSession - " + obj.ToString();
// Start User Session
using (this.LogTransaction("t1_startUserSession"))
{
ChannelFactory<IAppShellService> cfsus = null;
try
{
using (ChannelBuilder.mPContext(ref appShellServiceClient, "IAppShellService", sUserName, sPassword, 0, null, correlationId, false, effectiveDate, ref cfsus))
{
var userSessionResult = appShellServiceClient.StartUserSession();
}
}
catch (Exception ex)
{
Console.WriteLine(ex);
}
finally
{
cfsus.Close();
}
}
}
【问题讨论】:
-
这个问题你解决了吗?如果没有,请在阅读minimal reproducible example 后提出问题edit。如果您已经解决了问题,请阅读stackoverflow.com/help/accepted-answer。
标签: c# visual-studio-2015