2016-07-07 5 views
1

Ich habe ein Problem, das hoffentlich eine einfache Lösung hat, die ich übersehe ... das ist das erste Mal, das ich Datei-Upload-Parameter mit Visual Studio-Leistungstest-Tools verwende. Als ich meinen Webleistungstest zum ersten Mal durchführte, fand mein Test die Datei und lud sie wie erwartet hoch. Wenn ich den Test jetzt erneut ausfühle, erhalte ich einen 500 Internal Server-Fehler im Abschnitt "Details" der Ergebnisse, und ich habe festgestellt, dass mein Dateiname ein Zeitstempel enthält, der dem korrekten Namen in der Anfrage vorangestellt ist. Da sich mein Dateiname nicht ändert, führt dies dazu, dass Visual Studio mein Dokument nicht finden kann.Visual Studio Performance Test Datei Upload-Parameter Präfixe Datum

Ich generierte Code für diesen Test, weil ich die SSL-Einstellungen manuell zurücksetzen musste. Mein Dokument wurde in den Ordner Testergebnisse verschoben, weil ich die Methode damit als DeploymentItem versehen habe. Visual Studio hat dies automatisch gemacht, als ich den Code generiert habe, was sehr nett war, aber das Problem könnte sein ... Jede Hilfe wäre sehr willkommen! Hier ist die POST-Anfrage Ich mache:

WebTestRequest request11 = new WebTestRequest((this.Context["Environment"].ToString() + "/Submit/Upload")); 
request11.Method = "POST"; 
request11.Headers.Add(new WebTestRequestHeader("Referer", (this.Context["Environment"].ToString() + "/Submit/Index/fakefolder456"))); 
FormPostHttpBody request11Body = new FormPostHttpBody(); 
request11Body.FormPostParameters.Add(new FileUploadParameter("files", "Test3.pptx", "application/vnd.openxmlformats-officedocument.presentationml.presentation", true)); 
request11Body.FormPostParameters.Add("folderId", "fakeId123"); 
request11Body.FormPostParameters.Add("fileNamePairs", "[{\"OriginalFileName\" : \"Test3.pptx\",\"NewFileName\" : \"Test3.pptx\"}]"); 
request11Body.FormPostParameters.Add("__RequestVerificationToken", this.Context["$HIDDEN1.__RequestVerificationToken"].ToString()); 
request11.Body = request11Body; 
yield return request11; 
request11 = null; 
+0

Welcher Dateiname? Es gibt 3 von 'Test3.pptx' im angezeigten Code. Es gibt auch 'OriginalFileName' und' NewFileName'. Was sind die Anfrage und die Antwort, wenn der Test ausgeführt wird? – AdrianHHH

+0

Ich habe nur einen Webtest auf Code aus Debugging-/Diagnosegründen umgestellt. Alles andere, was ich benötigt habe, wurde besser über Plugins erledigt. Die Umwandlung in Code macht den Rest des Tests viel schwieriger zu verwalten und zu modifizieren. Wenn Sie wirklich eine ganze Anfrage über die Umwandlung in C# -Code machen müssen, dann empfehle ich, den Webtest-Kontext (Rechtsklick) Menübefehl 'Webtest extrahieren' zu verwenden und dann diese eine Anfrage zu konvertieren. – AdrianHHH

+0

Wissen Sie, ob ich die Anforderung SecurityProtocolType mit einem Plugin festlegen kann? Ich habe noch nie zuvor Plugins benutzt, werde aber recherchieren ... Ich muss diese Codezeile hinzufügen, damit meine Leistungstests funktionieren, die meine Anfrage anweisen, TLS 1.2 für die SSL-Verschlüsselung zu verwenden: 'ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12;' – GoldAnchor

Antwort

1

die Lösung Figured aus meiner Issue-- meine Datei-Upload-Parameter eine Einstellung hatte „Gene Eindeutiger Name“ auf „true“. Die Methode von Visual Studio, einen Dateinamen eindeutig zu machen, besteht darin, das Datum und die Uhrzeit von heute zu übernehmen und sie dem angegebenen Dateinamen voran zu stellen. Außerdem müssen Sie sicherstellen, dass die Datei, die Sie hochladen möchten, in Ihren Ausgabeordner übertragen wird. Ich habe dies getan, indem ich auf meine Testsettings-Datei doppelklickte, das Kästchen "Enable deployment" anklickte und dann meine Datei zu den zu deployenden Dateien hinzufügte. Ich glaube, das wird die Datei für jeden einzelnen Test bereitstellen, aber es wäre besser, die Datei nur für meinen Test bereitzustellen. Diese Links geholfen in meiner Forschung: https://blogs.msdn.microsoft.com/edglas/2008/08/05/how-to-upload-a-file-in-a-web-test/,

https://blogs.msdn.microsoft.com/alikl/2010/04/26/file-upload-in-a-web-test-the-case-of-submitting-a-form-with-javascript/,

https://social.msdn.microsoft.com/Forums/en-US/3d094493-9b9b-4c78-bb98-f80068a643fc/is-it-possible-to-add-deployment-item-to-the-webtest-using-code?forum=vstswebtest.

Für diejenigen von Ihnen, die AdrianHHH die ausgezeichnete Hilfe in den Kommentaren zu lesen, habe ich gelernt, wie man Web-Test-Plugins Ben Day Plural Kurs „Load Testing mit Visual Studio“ https://app.pluralsight.com/library/courses/load-testing-visual-studio-2013/table-of-contents, und mein Plugin sieht wie folgt zu schreiben:

namespace WebTestPlugins 
{ 
    public class SsoAuth : WebTestPlugin 
    { 
     public override void PreWebTest(object sender, PreWebTestEventArgs e) 
      { 
      // Set the security protocol to TLS 1.2 
      ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12; 
      } 
    } 
} 
Verwandte Themen