2 Stimmen

Belastungstest einer Webdienstmethode mit Powershell

Ich möchte eine Webdienstmethode einem Belastungstest unterziehen, indem ich sie mehrere tausend Mal kurz hintereinander aufrufe. Die Methode hat einen einzelnen String-Parameter, den ich bei jedem Aufruf variieren möchte.

Ich habe vor, ein Powershell-Skript zu schreiben, das diese Methode in einer Schleife mehrmals aufruft.

Gibt es eine bessere Möglichkeit, dies zu tun?

3voto

Sunny Milenov Punkte 21296

Wenn Sie einen Anruf nach dem anderen tätigen, wird Ihnen das nicht viel nützen, da es Ihnen nicht zeigt, wie sich der Dienst bei einer hohen Belastung durch viele gleichzeitige Verbindungen verhält.

Verwenden Sie eine Multithreading-Lösung (ich weiß nicht, ob Powershell dies bietet).

Einige Open-Source-Prüfwerkzeuge sind aufgelistet aquí . Stellen Sie Ihren Webdienst einfach so ein, dass er auch GET-Anfragen akzeptiert, nicht nur SOAP (Standard), damit Sie die URLs bilden können.

1voto

kgiannakakis Punkte 100768

Für diese Situationen würde ich Folgendes verwenden JMeter . Sie müssen zuerst damit herumspielen, aber es ist sehr flexibel, es führt Anfragen in verschiedenen Threads aus, es zeigt die Ergebnisse grafisch an und es erlaubt Ihnen auch, Ihre Aufträge zu skripten.

Ich würde auch empfehlen, es nicht auf demselben Rechner wie den Server zu starten und wenn möglich zwei oder mehr Instanzen auf verschiedenen Rechnern zu starten, um die Last zu simulieren.

0voto

rbrayb Punkte 43179

Ich persönlich würde etwas verwenden wie openSTA .

Damit kann eine Sitzung mit einer Website aufgezeichnet und anschließend über eine relativ einfache Skriptsprache wiedergegeben werden.

Sie können auch ganz einfach Webdienste testen und Ihre eigenen Skripte schreiben.

Sie können Skripte in einem Test nach Belieben zusammenstellen und die Anzahl der Iterationen, die Anzahl der Benutzer in jeder Iteration, die Anlaufzeit für die Einführung jedes neuen Benutzers und die Verzögerung zwischen den einzelnen Iterationen konfigurieren. Die Tests können auch für die Zukunft geplant werden.

Es ist quelloffen und kostenlos.

Es erstellt eine Reihe von Berichten, die in einer Tabellenkalkulation gespeichert werden können. Wir verwenden dann eine Pivot-Tabelle, um die Ergebnisse einfach zu analysieren und grafisch darzustellen.

0voto

NotMe Punkte 86089

Es hängt wirklich davon ab, ob es noch andere Anforderungen gibt. Wie z.B. Protokollierung, Historie, etc.

Wenn es schnell und einfach gehen soll, sind Sie hier richtig.

Wenn Sie etwas Robusteres benötigen, können Sie entweder ein individuelles Test-Harness in der Sprache Ihrer Wahl erstellen oder Dinge wie Mercury, MS Team Tester, nUnit oder Ähnliches verwenden.

0voto

davidp_1978 Punkte 101

Für diejenigen, die darüber stolpern und nicht die bereits erwähnten Optionen von Drittanbietern verwenden wollen. Wie die akzeptierte Antwort erwähnt, ist eine Multi-Thread-Lösung am besten, dies kann in PowerShell erreicht werden:

ForEach -Parallel ($item in $collection) {  }

https://docs.microsoft.com/en-us/powershell/module/psworkflow/about/about_foreach-parallel

Obwohl die Anzahl der Threads auf 5 begrenzt werden könnte: Verwendet das parallele foreach von Powershell höchstens 5 Threads?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X