Ich bin ein Entwickler, der keine Lasttest-Erfahrung hat und gerne lernen würde, dies zu tun.Belastungstest WebClient Server
Ich habe eine einfache Client-Server-Anwendung, wo der Client eine Anfrage an den Server sendet und der Server sendet eine Antwort zurück.
Ich möchte diesen Test laden, aber ich bin mir nicht sicher, wie das geht. Hier ist meine GetResponse-Methode, die eine Antwort vom Server erhält.
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);
}
Meine erste Gedanken sind eine Routine zu schreiben, um eine Last senden von Reaktionsanforderungen alle zur gleichen Zeit und dann versuchen und überwachen die CPU tickt oder andere zu sehen, wie er ausführt.
Kann mir jemand sagen, ob dies der richtige Weg ist? Ich bin mir auch nicht wirklich sicher, was die besten Statistiken zu sammeln sind?
Vielen Dank im Voraus
EDIT ....
Whist eine Antwort abzuwarten ich folgendes geschrieben haben, die einen neuen Thread erstellt und bearbeitet die Anfragen nach Wunsch. Könnten Sie mir bitte sagen, ob dies ausreicht, um zu sehen, was ich brauche oder brauche ich ein geeignetes Lasttest-Tool?
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();
}
Vielen Dank für Ihre Antwort ... Während ich auf eine Antwort wartete ich hatte gehen Sie zum Schreiben eines Programms, um einige gleichzeitige Anfragen auszuführen (siehe oben) ... Ist das etwas, das die Last testen würde? Oder brauche ich immer ein richtiges Testwerkzeug, wie du gesagt hast. Ich habe nur Express vs so wird nicht ihr Werkzeug installiert haben. – user3284707