In meiner Firma verwenden wir JMeter als Teil unserer Release-Pipeline, um verschiedene Tests (Rauch, Last, etc.) durchzuführen. Da ich jetzt kompliziertere Testszenarien entwickle, verwende ich eine Menge BeanShell und bin besorgt darüber, dass JMeter mit fehlgeschlagenen BeanShell-Skripten völlig in Ordnung zu sein scheint, und ich möchte einen Weg finden, fehlzuschlagen Tests, wenn BeanShell fehlschlägt.JMeter scheitert nicht an BeanShell-Fehlern
Wenn ein Syntaxfehler vorliegt, schlägt das Skript fehl, meldet die Protokolldatei, aber es verhindert nicht, dass die gesamte Testsuite erfolgreich ist, solange die fehlende BeanShell-Ausführung keinen weiteren Fehler verursacht . Beispiel (Klicken für Bild in voller Größe):
Wie oben gesehen, ich habe einen Sampler mit einem Post-Prozessor, das Beanshell einen Syntaxfehler enthält. Wenn der Fehler ausgeführt wird, wird der Fehler protokolliert und der Fehlerzähler oben wird erhöht, aber das ist alles. Wenn der Benutzer dies nicht bemerkt, wird der Fehler in unseren Freigabevorgang verschoben, was unsere Tests weniger zuverlässig macht. Wenn ich JMeter mit der Befehlszeile ausführen, ist dies das Ergebnis:
Writing log file to: /home/user/jmeter/jmeter.log
Creating summariser <summary>
Created the tree successfully using Bad BeanShell Test.jmx
Starting the test @ Fri Feb 24 12:23:11 CET 2017 (1487935391815)
Waiting for possible Shutdown/StopTestNow/Heapdump message on port 4445
summary = 2 in 00:00:01 = 1.9/s Avg: 382 Min: 29 Max: 736 Err: 0 (0.00%)
Tidying up ... @ Fri Feb 24 12:23:13 CET 2017 (1487935393168)
... end of run
Wieder alles in Ordnung scheint, nur die Protokolldatei etwas falsch ist, um herauszufinden. Und das Hinzufügen eines Post-Test-Skripts zum Suchen nach Fehlern in der Datei ist kein guter eigenständiger Testfall.
Ich versuchte einen BeanShell Listener, aber es scheint nicht die Ergebnisse der Skriptkompilierung/-ausführung offenzulegen (SampleEvent enthält keine nützlichen Informationen), und selbst nach vielen Suchen, fand ich keine Möglichkeit, es zu tun überhaupt.
Es könnte ein Listener sein, eine Assertion, benutzerdefinierte Java-Code auf einem Plugin, eine Befehlszeilenkonfiguration, alles, solange ich es einmal auf meiner Testsuite hinzufügen kann, und zumindest einen Fehler auslösen oder die Suite zu abbrechen stellen Sie sicher, dass es untersucht wird.
Danke. Scheinbar schneller und bessere Fehlerberichte, was nett ist, aber dieser Ansatz erfordert immer noch einen aktiven Aufwand, um das Skript auf eine bestimmte Weise zu programmieren, um solche Fehler zu erfassen. Als Entwickler sehe ich es als einen Job für die Plattform selbst, nachdem der Interpreter ausgeführt wurde und weiß, ob Fehler vorhanden waren. Warum können solche Informationen nicht dazu verwendet werden, den Test abzubrechen oder einen Fehler zu setzen, anstatt den Entwickler zu zwingen Tricks anwenden, um dasselbe Ergebnis zu erreichen? Wie auch immer, danke für deine Antwort, es ist meine beste Alternative bisher. – mdrg