【发布时间】:2016-05-27 17:31:20
【问题描述】:
我是一名没有负载测试经验的开发人员,想学习如何做到这一点。
我有一个简单的客户端服务器应用程序,客户端向服务器发送请求,服务器返回响应。
我想对此进行负载测试,但我不确定如何执行此操作。这是我的 GetResponse 方法,它接收来自服务器的响应。
Response GetResponse(Request request)
{
string data = Newtonsoft.Json.JsonConvert.SerializeObject(request);
System.Net.WebClient wb = new System.Net.WebClient();
string response = wb.UploadString("http://localhost:8080", data);
return Newtonsoft.Json.JsonConvert.DeserializeObject<Response>(response);
}
我最初的想法是编写一个例程来同时发送大量的获取响应请求,然后尝试监控 CPU 滴答声或其他以查看它的执行情况。
谁能告诉我这是否是正确的方法?我也不确定要收集的最佳统计数据是什么?
提前致谢
编辑....
Whist 等待答案我已经编写了以下内容,它添加了一个新线程并根据需要处理请求。请您评论一下这是否足以了解我需要什么或者我是否需要一个合适的负载测试工具?
DateTime startTime;
DateTime endTime;
Console.WriteLine("Test how many concurrent users?");
string users = Console.ReadLine();
int usersCount;
if (int.TryParse(users, out usersCount) && usersCount > 0)
{
startTime = DateTime.Now;
_countDown = new CountdownEvent(usersCount);
for (var i = 0; i < usersCount; i++)
{
string userName = string.Format("user{0}", i);
Task.Factory.StartNew(() => TestRun(userName));
}
_countDown.Wait();
endTime = DateTime.Now;
Console.WriteLine("All tasks are completed!");
Console.WriteLine(string.Format("Av time(ms) per user: {0}", (endTime - startTime).TotalMilliseconds / usersCount));
}
Console.WriteLine("Press any key to exit");
Console.ReadKey();
}
public static void TestRun(object userName)
{
Thread newThread = new Thread(DoWork);
newThread.Start(userName);
}
public static void DoWork(object userName)
{
LoadTest.Test(userName.ToString());
_countDown.Signal();
}
【问题讨论】:
标签: c# performance testing webclient load-testing