2012-04-17 5 views
10

Ich habe einen Test, wo Benutzer anmelden und Suchbegriff im Suchfeld eingeben und erhalten die Ergebnisse. Schließlich meldet sich ab.So generieren Sie gleichzeitige Benutzer laden in Jmeter

Jetzt möchte ich Parallelität mit Jmeter testen. Das ist es, was ich mir ausgedacht habe.

Test plan 
    Thread group 
    + Login request 
    + Synchronizing Controller 
    + Search string 
    + Synchronizing Controller 
    + Logout 

Ich habe 10 Anzahl der Threads hinzugefügt. Ich habe 5 im Synchronisierungs-Controller hinzugefügt. Also, wenn ich den Test durchführe, werde ich die Gleichzeitigkeit von 5 Benutzern bekommen? Rest 5 Benutzer werden gleichzeitige Benutzer sein?

Auch ich habe angefordert, wenn Login-Seite lädt. Um Parallelität bei der Anmeldung zu erreichen, habe ich alle Anfragen im Transaktions-Controller hinzugefügt und Synchronization Controller als Kind zum Transaktions-Controller hinzugefügt. Bitte lassen Sie mich wissen, wenn ich es richtig mache.

Bitte lassen Sie mich auch wissen, wenn es eine andere Möglichkeit gibt, Parallelität für bestimmte Aktionen zu erreichen (zB: 5 Benutzer treffen gleichzeitig auf die Login-Schaltfläche).

Antwort

16

Zunächst einmal sollten Sie versuchen, zwischen "gleichzeitig" und "gleichzeitig" zu unterscheiden. Sie sind normalerweise sehr ähnlich, aber beim Belastungstest haben sie unterschiedliche Bedeutungen. Simultan bedeutet zwei oder mehr Anfragen gleichzeitig. Gleichzeitig werden zwei oder mehr Threads (Skripts) parallel ausgeführt.

Sie sprechen also davon, dass Sie versuchen, JMeter so zu konfigurieren, dass mehrere gleichzeitige Anforderungen simuliert werden. Aber eigentlich gibt es einen viel, viel besseren Ansatz als das. Anstatt sich darauf zu konzentrieren, dieselbe Anfrage zur gleichen Zeit zu beantworten, was in JMeter schwierig ist, sollten Sie Ihren Test so einrichten, dass er eine realistische Darstellung der Art von Last darstellt, die Ihre Anwendung unterstützen soll. Wenn Sie das gut machen, indem Sie zufällige Wartezeiten, Durchsatz-Controller und eine realistische Anzahl von Threads verwenden, dann testen Sie automatisch den gemeinsamen Zugriff und führen gleichzeitig echte, gültige und nützliche Leistungstests durch.

Also, im Grunde, den Synchronisierungs-Timer fallen lassen, verwenden Sie stattdessen einen konstanten Durchsatz-Timer, konfigurieren Sie Wartezeiten und dann berechnen Sie die richtige Anzahl von Threads, um die gewünschte Last zu generieren.

Der zusätzliche Bonus zu diesem Ansatz besteht darin, dass Sie weniger wahrscheinlich falsch negative Ergebnisse auslösen werden. Wenn Sie zum Beispiel Ihren Server mit fünf gleichzeitigen Anmeldeanforderungen ansprechen, stellen Sie möglicherweise fest, dass dieser Aufruf single-threaded ist und die Antwortzeiten zunehmen. Aber vielleicht ist das egal, vielleicht sind die Chancen von zwei Login-Anrufen gleichzeitig so gering, dass es sich nicht lohnt, Zeit damit zu verbringen, den Code zu ändern. Dies ist ein sehr, sehr wichtiges Konzept beim Belastungstest - vielleicht am wichtigsten - Sie müssen realistische Ziele haben, ohne diese könnten Sie Tests durchführen, falsche Fehler finden und generell Zeit für immer verschwenden.

+1

Danke für die sehr gute Erklärung. Aber meine Situation ist etwas anders. Ich möchte nur sehen, wenn 5 Benutzer Login und Such-Taste gleichzeitig treffen, wie mein Server reagiert. Deshalb habe ich den Synchronisationscontroller verwendet. Als ich meinen Test mit dem Synchronisations-Controller durchführte, bekam ich ein paar Ergebnisse. Ich habe 10 Threads in Thread-Gruppe und 5 in Synchronisation erwähnt. Also ich dachte, es wird als 5 gleichzeitige Benutzer und 5 gleichzeitig laufen. Aber so läuft es nicht. Test sendet Login und Suchanfrage in 2 Batches. Jede Charge enthält 5 Benutzer. – user1169236

+1

Auch hier müssen Sie die Unterschiede zwischen gleichzeitig und gleichzeitig verstehen. Sie sind anders. Ein synchroner Timer gibt Ihnen Gleichzeitigkeit, mehrere Threads geben Ihnen Gleichzeitigkeit. –

+0

Danke für die Vorschläge! Ich habe die Lösung. – user1169236