2016-07-13 7 views
1

Ich versuche einfach REST API-Belastungstest mit Visual Studio Cloud Test auszuführen: https://www.visualstudio.com/en-us/docs/test/performance-testing/getting-started/getting-started-with-performance-testingWie verwenden Sie verschiedene .csv für jeden Kern-Agent für Visual Studio Cloud Testing?

Der Antrag enthält Autorisierungs-Token und ich vorab generierte CSV-Quelldaten, sie zu liefern. Hier ist die Beschreibung: https://msdn.microsoft.com/library/ms243142.aspx

Wenn der Test von lokalen Computer ausgeführt wird alles funktioniert gut, aber wenn ich den Test aus der Cloud starten 97% der Tests sind fehlgeschlagen.

Da mein Dienst Parallelitätsprüfung hat - ein Token kann verwendet werden, um nur eine Anfrage zu stellen. Anscheinend wird der Test von 20 Agent-Computern in der Cloud ausgeführt, und alle verwenden dieselbe CSV-Datenquelle.

Ich frage mich, ob es einen Weg gibt, wo ich die verschiedenen Datenquellen pro Cloud-Agent verteilen kann?

+0

Mögliches Duplikat von [Wie verteilen Sie VUsers auf mehrere Testagenten, wenn der Auslastungstest ausgeführt wird] (http://stackoverflow.com/questions/34314649/how-to-spread-vusers-across-multiple-test-agents-when -running-load-test) – AdrianHHH

+0

Hm, nachdem ich eine Google-Suche gemacht habe, habe ich die Möglichkeit gefunden, die Zugriffsmethode in Datenquelle für Webtest auf 'Unique' umzustellen. Wie hier beschrieben: https://blogs.msdn.microsoft.com/slumley/2008/03/14/description-of-access-methods-in-data-sources/ Leider, wenn ich den Test ausführen, bekomme ich: VS1550057: ' Ein eindeutiger Datenzugriff für eine Datenquelle wird beim Auslastungstest mit Visual Studio Team Services nicht unterstützt. –

Antwort

0

Laut Ihrem Kommentar kann die Datenquellenzugriffsmethode unique nicht mit einem VSTS CLOUD-Auslastungstest verwendet werden.

Eine Möglichkeit: Können die generierten Tokens die Agentennummer (AgentID) enthalten? Wenn ja, dann haben Sie vielleicht ein Plugin-Code enthält, basierend auf:

string tokenFromCSV = e.WebTest.Context["DataSource1.file#csv.token"].ToString(); 
string agentId = e.WebTest.Context["AgentId"].ToString(); 
if(agentId.Length==1) agentId = "0" + agentId; 
string tokenToUse = tokenFromCSV + agentId; 
e.WebTest.Context["tokenToUse"] = tokenToUse; 

Dann in den Orten, die derzeit das Token aus der CSV-Datei zu verwenden, verwenden Sie den neu geschriebenen Kontextparameter tokenToUse. Es gibt viele andere Möglichkeiten, wie die Agenten-ID mit dem Token-Wert zusammengeführt werden kann.

Eine andere Möglichkeit. Wenn nie mehr als 20 (oder eine andere nicht zu große Anzahl) Agenten verwendet werden, generieren Sie eine CSV mit 20 Spalten mit Tokenwerten. Lassen Sie die Spaltennamen die Agentennummer enthalten und lassen Sie dann von jedem Agenten nur die Werte aus seiner Spalte verwenden. Dies würde wahrscheinlich ein Plugin benötigen, um auf die korrekte Spalte zuzugreifen und den Wert in einem Kontextparameter zu speichern.

Eine andere Möglichkeit. Wenn die Anzahl der Zeilen in der CSV-Datei mehrere Male größer sein kann als die Anzahl der virtuellen Benutzer im Test. Ich denke an mindestens 10 mal so viele, aber je größer das Verhältnis, desto besser. Legen Sie die CSV-Zugriffsmethode auf Random fest. Die Tests sollten dann größtenteils mit Token laufen, die jeweils nur für einen Test verwendet werden. Es wird einige Doppelverwendungen geben und somit Fehler testen, aber Ihr Kunde könnte diese Fehlerquote akzeptieren.