2016-05-27 9 views
0

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(); 
    } 

Antwort

0
  1. Zunächst einmal benötigen Sie ein Lasttest-Tool. Wenn Ihre Visual Studio-Lizenz es zulässt, wäre die einfachste Option die Verwendung von MS VS Load Testing Framework. Wenn Sie keine Web- und Load-Testtypen haben, gibt es eine Nummer free and open source load testing tools.
  2. Test selbst erstellen. Als Entwickler sollten Sie wissen, wie man eine HTTP-Anfrage erstellt. Wenn nicht - die meisten Lasttest-Tools bieten Record- und Replay-Funktionalität.
  3. Sobald der Belastungstest funktioniert, können Sie mit der Erhöhung der Anzahl virtueller Benutzer beginnen und die zugehörigen Metriken und KPIs im Auge behalten, d. H.:

    • Anzahl der gleichzeitigen Benutzer vs Reaktionszeit
    • Anzahl der gleichzeitigen Benutzer vs Durchsatz
    • Transaktionen pro Sekunde
    • Server Zugriffe pro Sekunde
    • Reaktionszeit:

    • Was ist die maximale Anzahl gleichzeitiger Benutzer/Anfragen pro Sekunde ist Ihre Anwendung ist ohne Fehler dienen kann und mit angemessener Reaktionszeit

    • Wenn Anwendung überlastet und reagiert nicht funktioniert es in den normalen Betriebsmodus zurück, wenn die Last
  4. Analyse über Metriken verringert möglich:

    • bestimmen maximale Leistung und Kapazität Ihrer Anwendung
    • den Engpass identifizieren und um funktionieren, wenn möglich
+0

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