2016-02-11 34 views
1

我正在设置性能测试并测试上传函数的性能。我想现在在5个用户同时点击上传按钮时测试性能。我不知道如何实现这个方法。以下是我为一位用户设置的测试。在Selenium中同时启动一行代码C#Visual Studio

[Test] 
    [Category("PerfSingleUser")] 
    public void PerfSingleUserUploadLargeDataSet() 
    { 
     driver.GoToHomePage(); 

     DateTime startDateTime = DateTime.Now; 
     var sw = Stopwatch.StartNew(); 
     UploadFiles(); 
     sw.Stop(); 

     //Logging of performance results 
     var testDesc = string.Format("Time for ALEX to upload a large data set (AC2Q15Files) in a {0} browser", Browser.GetType()); 
     StoreResultsInCSV(startDateTime, testDesc, elapsed); 

     Assert.IsTrue(sw.Elapsed < TimeSpan.FromSeconds(20), "Uploading large data set, AC2Q15Files, in a {0} browser exceeded" + 
      "20 seconds", browser.GetType()); 
    } 
+0

你想要测试什么:用户界面,网络或服务器?我可以帮助用户界面,但通常会使用低级HTTP工具(如curl(或Windows等效))来测试上传... –

+0

UploadFiles()中的C#代码只是上传CSV文件,然后等待按钮变为启用。所以在UploadFiles()中处理测试。我只是在测量UploadFiles()完成所需的时间。代码起作用,我只需要一种方法来使用UploadFiles()方法一次从5个用户测量每个时间。我认为这可能更适合JMeter,但我想知道Selenium/VS中是否有方法能够在多个测试中同时执行某些操作。 –

+0

是的,在多个浏览器/会话中,我只是想检查你试图达到的目标。我同意JMeter可能更适合,假设你只是想“驱动”上传而不是测试UI响应,用户体验等。5可能是我想要运行的浏览器会话数量的上限。 –

回答

0

我只是用计划任务的线程 - 我不这样做C#,但也许同样this

你可以一次启动所有的WebDriver实例(5可能是你最想要在一个运行的最多)。一旦他们准备好了,并且您正在测试的页面已经完全加载到每个页面中,请为每个将执行实际上传的单独任务线程创建一个单独的任务线程。

然后简单地安排所有任务线程以固定偏移量(或在固定时间,例如未来一秒)运行。这应该在彼此的几毫秒内完成,并且这可能与使用真实浏览器时同时接近。