【发布时间】:2016-02-11 15:42:49
【问题描述】:
我正在设置性能测试并测试上传功能的性能。我现在想测试 5 个用户同时单击上传按钮时的性能。我不知道如何实现一种方法来做到这一点。以下是我为一位用户设置的测试。
[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());
}
【问题讨论】:
-
您要测试什么:用户界面、网络还是服务器?我可以在 UI 方面提供帮助,但通常会使用
curl(或 Windows 等价物)这样的低级 HTTP 工具来测试上传... -
UploadFiles() 中的 C# 代码只是上传一个 CSV 文件,然后等待按钮启用。所以测试是在 UploadFiles() 中处理的。我只是在测量 UploadFiles() 完成所需的时间。该代码有效,我只需要一种方法来使用 UploadFiles() 方法一次测量 5 个用户的每个时间。我认为这可能更适合 JMeter,但我想知道 Selenium/VS 中是否有一种方法可以在多个测试中同时执行操作。
-
是的,有多个浏览器/会话,我只是想检查一下您想要实现的目标。我同意 JMeter 可能更合适,假设您只想“驱动”上传而不是测试 UI 响应能力、用户体验等。5 可能是我想要运行的浏览器会话数的上限。
-
其实现在,我正在做的就是测试 UI 响应性。我现在不需要收集其他指标。我等到上传完成后启用按钮,然后收集那些挂钟时间。
-
我不确定您使用的是什么测试框架,但您可以明确创建 5 个您选择的 IWebDriver 实例,参数化
PerfSingleUserUploadLargeDataSet以接受驱动程序参数而不是成员变量,并且只需通过单独的线程为每个驱动程序显式调用该方法即可。可能会很混乱,但它应该可以让您对上传进行并行测试。
标签: c# visual-studio selenium