2011-01-05 7 views
3

Ich arbeite gerade an dem Schreiben einer Auslastungstestanwendung, die Auslastungstest mit Visual Studio 2010 nutzt. Der Auslastungstest simuliert 20 Benutzer auf demselben Computer, und ich brauche einige Daten zu In-Memory zwischen allen simulierten Benutzern geteilt werden.Visual Studio Load Test Virtuelle Benutzer Simulation

Ich war überrascht, ich nicht Dokumentation der Beantwortung der folgenden Fragen finden konnten:

Was jeden laufenden Kontext von dem anderen virtuellen Benutzer seperates? Führt jeder virtuelle Benutzer die Tests in seinem eigenen Prozess durch? Vielleicht in einer eigenen App-Domain? Oder nur auf einem eigenen Thread? Ich muss wissen, denn wenn jeder Benutzer Tests in seinem eigenen Prozess ausführt, dann wird der gesamte In-Memory-Cache nicht geteilt und wird für jeden Benutzer erstellt, anstatt nur einmal für alle Benutzer, was für mich schlecht ist.

Antwort

1

Sie können Process Explorer (http://technet.microsoft.com/en-us/sysinternals/bb896653 es ist eine erweiterte Version von Task-Manager) verwenden, um die Antwort zu erhalten.

Führen Sie einen Visual Studio Load-Test aus, und öffnen Sie Process Explorer. Überprüfen Sie, ob neue Prozesse erstellt werden. Suchen Sie dann den Visual Studio-Prozess und doppelklicken Sie darauf. Wählen Sie dann die Registerkarte .NET-Leistung, und es sollte die Liste aller Anwendungsdomänen in dem Prozess anzeigen.

Übrigens, heute haben wir eine Fiddler Extension für Belastungstest namens StresStimulus - http://stresstimulus.stimulustechnology.com veröffentlicht. Wo wir alle virtuellen Benutzer auf verschiedenen Threads im selben Prozess halten.

1

Dies ist am nächsten zu einer Antwort, die ich bisher gefunden habe.

http://blogs.msdn.com/b/billbar/archive/2007/06/13/coded-web-tests-and-web-test-plug-ins-should-not-block-the-thread.aspx

Die Antwort ist, dass es ein einziger Prozess pro Maschine ist es, die Belastungstests tut, werden mehrere Threads verwendet, aber der virtuelle Benutzer „optimiert“ viele pro Thread zu arbeiten.

In Bezug auf was Sie tun möchten, wird das Erstellen einer statischen Klasse mit einem statischen Konstruktor einen gemeinsamen Speicherblock zwischen allen virtuellen Benutzern erhalten. Der Vorbehalt ist, dass es sich um eine Multithread-Umgebung handelt und die entsprechende Vorsicht bei Ihrem Code zu beachten ist.

+1

Dies ist möglicherweise sehr offensichtlich, aber bedenken Sie, dass jede Lösung, die statische Klassen/Variablen zur gemeinsamen Nutzung von Daten zwischen virtuellen Benutzern verwendet, nicht für die Einrichtung mehrerer Agenten geeignet ist. – agentnega