Generische Leistungstestbibliothek zum Ausführen von in .NET c# geschriebenen Lasttests
- Ursprünglich für Entwickler (und bis hin zu Eckfallszenarien) für maximale Flexibilität gedacht.
- Aber einfach genug, um es zum Schreiben von Integrationstests zu verwenden – nur für mehr Threads. :) :)
- NuGet:
Install-Package Viki.LoadRunner -pre
Kurze Einführung
Die aktuelle Dokumentation liegt nur in Form von Codebeispielen vor.
- Es ist noch lange nicht fertig, aber meiner Meinung nach sollte es gut genug sein, um zu sehen, ob dieses Tool nützlich sein kann.
Beginnen Sie mit diesem kleinen Setup, um ein Gefühl dafür zu bekommen, wie es konfiguriert ist.
- Um einen voll funktionsfähigen Test zu erstellen, müssen drei Dinge definiert werden (siehe QuickStartDemo.cs):
- [1] Schreiben Sie eine Szenario-Implementierung und definieren Sie den Code selbst, der mehrmals gleichzeitig ausgeführt wird.
- [2][Optional] Konfigurieren Sie, wie Ergebnisse aggregiert/präsentiert werden.
- [3] Konfigurieren Sie die Strategie, wie der Test ausgeführt wird (z. B. wie viele Threads, wie lange er ausgeführt werden soll usw.).
- Realer Fall und einfaches Lasttestszenario zur Messung der „etwas theoretischen“ Leistung eines einfachen http-Servers – https://github.com/Vycka/HttpMockSlim/tree/master/tests/HttpMockSlim.LoadTest
HistogramAggregator ist ein Standardtool zum Aggregieren von Ergebnissen mit definierten Dimensionen/Metriken
- Aufgrund seiner Flexibilität wird es einige Zeit dauern, bis die Dokumentation fertig ist.
- Bis dahin sollte es leicht genug sein, es durch verschiedene Verwendungsmöglichkeiten in bereits verfügbaren Beispielen herauszufinden:
- HistogramAggregatorDemo.cs#L30 – WiP
- QuickStartDemo.cs#L64
- RawDataMeasurementsDemo.cs#L59
- AggregationImpactDemo.cs#L39
- BatchAndWaitDemo.cs#L29
- Es gibt auch eine generische Version dieses Histogramms, um es für Ihre eigenen benutzerdefinierten Daten zu verwenden:
new Histogram<T>()
- Es enthält einige generische Dimensionen und Metriken, aber angesichts des benutzerdefinierten Typs und der erforderlichen Aggregation müssen möglicherweise einige benutzerdefinierte IDimension<T>s und IMetric<T>s implementiert werden
Rest des Demoprojekts:
- Index
- Funktionsspezifische Demos (WiP)
- RawDataMeasurementsDemo.cs
- ScenarioFactoryDemo.cs
- Motordurchgang (WiP)
- TheoreticalSpeedDemo.cs – Theoretischer Durchsatz ohne Durchführung von Messungen.
- AggregationImpactDemo.cs – Theoretischer Durchsatz mit angehängter Aggregationspipeline.
Bis das Demoprojekt abgeschlossen ist, kann man sich auch meine chaotischen Setups ansehen, die ich zum Debuggen verwende:
- src/Playground/Program.cs
Zukünftige TODOs
Bei Fragen/Anregungen/etc. können Sie mich gerne kontaktieren.