Wie wird der gleichzeitige Modifizierungstest für die Anwendung von Grails durchgeführt?

9

Ich würde gern Tests ausführen, die simulieren, dass Benutzer bestimmte Daten gleichzeitig für eine Grails-Anwendung ändern.

Gibt es irgendwelche Plug-Ins / Tools / Mechanismen, die ich verwenden kann, um dies effizient zu tun? Sie müssen nicht grailsspezifisch sein. Es sollte möglich sein, mehrere Aktionen gleichzeitig auszulösen.

Ich würde es vorziehen, die Tests auf Funktionsebene durchzuführen (bisher verwende ich Selenium für andere Tests), um die Ergebnisse aus der Benutzerperspektive zu sehen. Natürlich kann dies zusätzlich zum Integrationstest durchgeführt werden, wenn Sie empfehlen, gleichzeitige Modifizierungstests auf Integrationsebene durchzuführen.

    
Jörg Brenninkmeyer 12.11.2010, 08:47
quelle

7 Antworten

2

Ich habe kürzlich Geb (http://grails.org/plugin/geb/) dafür verwendet. Es ist eine Ebene über WebDriver und Selenium usw. Es ist sehr einfach ein Grails-Skript zu schreiben, um als Benutzer in Ihrer App zu agieren und dann einfach mehrere Instanzen auf verschiedenen Konsolen auszuführen. Geb verwendet eine jQuery-Stilsyntax, um Dinge im DOM zu finden, was sehr cool ist:

%Vor%

Stellen Sie Ihr Skript einfach in scripts / YourScript.groovy und dann können Sie "Grails YourScript" ausführen, um es auszuführen. Ich habe einige Nebenläufigkeitsprobleme aufgespürt, indem ich mehrere davon mit voller Geschwindigkeit ausgeführt habe. Sie müssen einen Krieg aufbauen und ihn richtig einsetzen, da Grails im Entwicklungsmodus sehr langsam ist und ziemlich schnell außerhalb des Permgen-Speicherplatzes läuft.

    
David Tinker 23.10.2011 11:03
quelle
0

Ich denke, Sie können (einfach) mehrere Selenium-Skripte auf einmal ausführen, oder?

Wir testen hier, indem wir mehr als 20 iMacros-Skripte gleichzeitig ausführen und auf diese Weise 20+ gleichzeitige Benutzer in unserer Webanwendung simulieren.

    
FrankJK 12.11.2010 09:59
quelle
0

Nur eine Idee: Es scheint schwierig zu sein, Client-Starts gleichzeitig zu starten, aber können sie aufeinander warten , bevor Sie Daten ändern ?

So protokolliert ein Client seinen Prozess weiterhin: "Client x Zugriff auf DATEN", "Client x Bearbeitung von DATEN" in einer Datei. Sie sehen auch diese Protokolldatei, um den Fortschritt anderer Clients zu sehen. Dann erlauben Sie einem Klienten nicht, eine DATA zu bearbeiten, bis ein anderer Kunde hereinkommt, um diese DATEN zu redigieren.

    
Hoàng Long 01.12.2010 03:53
quelle
0
___ qstnhdr ___ Wie wird der gleichzeitige Modifizierungstest für die Anwendung von Grails durchgeführt? ___ answer7865743 ___

Ich habe kürzlich Geb (http://grails.org/plugin/geb/) dafür verwendet. Es ist eine Ebene über WebDriver und Selenium usw. Es ist sehr einfach ein Grails-Skript zu schreiben, um als Benutzer in Ihrer App zu agieren und dann einfach mehrere Instanzen auf verschiedenen Konsolen auszuführen. Geb verwendet eine jQuery-Stilsyntax, um Dinge im DOM zu finden, was sehr cool ist:

%Vor%

Stellen Sie Ihr Skript einfach in scripts / YourScript.groovy und dann können Sie "Grails YourScript" ausführen, um es auszuführen. Ich habe einige Nebenläufigkeitsprobleme aufgespürt, indem ich mehrere davon mit voller Geschwindigkeit ausgeführt habe. Sie müssen einen Krieg aufbauen und ihn richtig einsetzen, da Grails im Entwicklungsmodus sehr langsam ist und ziemlich schnell außerhalb des Permgen-Speicherplatzes läuft.

    
___ antwort4331752 ___

Ich habe festgestellt, Grinder ist ein ausgezeichnetes Werkzeug für schwere Belastungstests. Wenn mehrere Instanzen gleichzeitig dieselben Tests durchführen, können Probleme mit Nebenläufigkeiten in Ihrer App auftreten, die bei normalen Tests nicht auftreten.

Wenn Sie dies innerhalb von Unit-Tests oder In-Code-Integrationstests tun möchten, können Sie immer mehrere Threads im Code ausführen und die Aufgabe ausführen lassen, die Sie testen möchten.

    
___ answer4163461 ___

Ich denke, Sie können (einfach) mehrere Selenium-Skripte auf einmal ausführen, oder?

Wir testen hier, indem wir mehr als 20 iMacros-Skripte gleichzeitig ausführen und auf diese Weise 20+ gleichzeitige Benutzer in unserer Webanwendung simulieren.

    
___ answer4356958 ___

Sind Sie hauptsächlich daran interessiert, mehrere aktive Benutzer zu testen, im Gegensatz zu denen, die nur eine HttpSession haben? Solid-Load-Tests basieren auf wirklich sehr guten Funktionen. Testen jedoch. Wie werden Ihre Funktionstests heute organisiert und durchgeführt? Grails hat dafür auch ein Plug-in * und scheint sich im Plug-in-Portal in der Spitze der Pops zu befinden.

Versuchen Sie zu testen, wie der optimistische Sperrmechanismus unter Last funktioniert?

Wenn der frühere Anwendungsfall derjenige ist, der mehr bedeutet, klingt es so, als ob Sie nach JUnitPerf . Hier ist die - & gt; herunterladen

* Funktionstest & lt; 1.2.7 & gt; - Funktionsprüfung

    
___ answer4612139 ___

WebTest basiert auf Ant, das die parallele Aufgabe . Möglicherweise können Sie dies in Verbindung mit dem Webtest-Plugin verwenden, um einige Aktionen parallel auszuführen. Ich habe es noch nie versucht.

    
___ tag123testing ___ Softwaretesten ist eine Aktivität, die darauf abzielt, ein Attribut oder eine Fähigkeit eines Programms oder Systems zu bewerten und festzustellen, ob es die erforderlichen Ergebnisse erzielt. ___ tag123grails ___ Grails ist ein Open-Source-Framework für Web-Anwendungen, das die Groovy-Programmiersprache verwendet, die wiederum auf der Java Virtual Machine (JVM) und Java basiert das "Kodieren nach Konvention" und verwendet gängige Java-Technologien wie Hibernate und Spring. ___ qstntxt ___

Ich würde gern Tests ausführen, die simulieren, dass Benutzer bestimmte Daten gleichzeitig für eine Grails-Anwendung ändern.

Gibt es irgendwelche Plug-Ins / Tools / Mechanismen, die ich verwenden kann, um dies effizient zu tun? Sie müssen nicht grailsspezifisch sein. Es sollte möglich sein, mehrere Aktionen gleichzeitig auszulösen.

Ich würde es vorziehen, die Tests auf Funktionsebene durchzuführen (bisher verwende ich Selenium für andere Tests), um die Ergebnisse aus der Benutzerperspektive zu sehen. Natürlich kann dies zusätzlich zum Integrationstest durchgeführt werden, wenn Sie empfehlen, gleichzeitige Modifizierungstests auf Integrationsebene durchzuführen.

    
___ answer7834053 ___

Sehen Sie sich MultithreadedTC an. Es sieht so aus, als könnte es verwendet werden, um bestimmte Interleaving-Fälle auszuüben, bei denen mehrere Threads Ihren Code auf eine Weise ausführen, die Sie als potenziell riskant betrachten.

Ich bezweifle, dass Sie eine praktische Möglichkeit finden, bestimmte Multithread-Interleaving-Fälle mit Selenium zu testen, da Selen einen Browser steuert, der Anfragen an Ihren Server sendet. Ich habe noch nie von einem Weg gehört, Code für Multithread-Interleaving-Tests zu instrumentieren, wenn die Threads als echte Web-Anfragen an einen laufenden Webserver gestartet werden.

    
___ tag123functionaltesting ___ Funktionsprüfung ist ein Qualitätssicherungs- (QA) -Prozess und eine Art von Black-Box-Test, der seine Testfälle auf die Spezifikationen der zu testenden Softwarekomponente stützt. ___ tag123optimisticlocking ___ Beim Koordinieren von Aktualisierungen aus mehreren Datenbanksitzungen ist optimistisches Sperren eine Strategie, bei der davon ausgegangen wird, dass alle Aktualisierungen ohne Konflikte abgeschlossen werden können. Es hält keine Sperren für Datensätze während der Bearbeitung durch den Benutzer, sondern überprüft, ob andere Änderungen vorgenommen wurden, wenn der Benutzer versucht, die Änderungen zu übernehmen. Wenn zwei Sitzungen versuchen, dieselben Daten zu bearbeiten, wird der zweite, der festgeschrieben wird, zurückgewiesen und muss die Änderung wiederholen. Siehe auch pessimistisches Sperren. ___ answer4321038 ___

Nur eine Idee: Es scheint schwierig zu sein, Client-Starts gleichzeitig zu starten, aber können sie aufeinander warten , bevor Sie Daten ändern ?

So protokolliert ein Client seinen Prozess weiterhin: "Client x Zugriff auf DATEN", "Client x Bearbeitung von DATEN" in einer Datei. Sie sehen auch diese Protokolldatei, um den Fortschritt anderer Clients zu sehen. Dann erlauben Sie einem Klienten nicht, eine DATA zu bearbeiten, bis ein anderer Kunde hereinkommt, um diese DATEN zu redigieren.

    
___ tag123concurrentmodification ___ Die gleichzeitige Änderung ist ein häufiges Problem bei einigen threadverwendenden Anwendungen, wenn Locks / Syncronization nicht ordnungsgemäß verwendet werden. Dies kann zu Fehlern oder Ausnahmen führen, z. B. ConcurrentModificationException in Java. ___
01001111 02.12.2010 04:44
quelle
0

Sind Sie hauptsächlich daran interessiert, mehrere aktive Benutzer zu testen, im Gegensatz zu denen, die nur eine HttpSession haben? Solid-Load-Tests basieren auf wirklich sehr guten Funktionen. Testen jedoch. Wie werden Ihre Funktionstests heute organisiert und durchgeführt? Grails hat dafür auch ein Plug-in * und scheint sich im Plug-in-Portal in der Spitze der Pops zu befinden.

Versuchen Sie zu testen, wie der optimistische Sperrmechanismus unter Last funktioniert?

Wenn der frühere Anwendungsfall derjenige ist, der mehr bedeutet, klingt es so, als ob Sie nach JUnitPerf . Hier ist die - & gt; herunterladen

* Funktionstest & lt; 1.2.7 & gt; - Funktionsprüfung

    
mikesalera 05.12.2010 01:56
quelle
0

WebTest basiert auf Ant, das die parallele Aufgabe . Möglicherweise können Sie dies in Verbindung mit dem Webtest-Plugin verwenden, um einige Aktionen parallel auszuführen. Ich habe es noch nie versucht.

    
leebutts 06.01.2011 05:49
quelle
0

Sehen Sie sich MultithreadedTC an. Es sieht so aus, als könnte es verwendet werden, um bestimmte Interleaving-Fälle auszuüben, bei denen mehrere Threads Ihren Code auf eine Weise ausführen, die Sie als potenziell riskant betrachten.

Ich bezweifle, dass Sie eine praktische Möglichkeit finden, bestimmte Multithread-Interleaving-Fälle mit Selenium zu testen, da Selen einen Browser steuert, der Anfragen an Ihren Server sendet. Ich habe noch nie von einem Weg gehört, Code für Multithread-Interleaving-Tests zu instrumentieren, wenn die Threads als echte Web-Anfragen an einen laufenden Webserver gestartet werden.

    
Joe Sondow 20.10.2011 09:46
quelle