Web-Performance Test für Telerik RadAsyncUpload Controls

21 Oktober 2016
Thomas Fiehn

Wenn ein Web-Performance Test für das Microsoft Web Test Framework erstellt wird, dann zeichnet man normalerweise einen Test auf, in dem in einem Web-Browser genau die Aktionen in der Web-Site ausgeführt werden, die getestet werden sollen. Das entsprechende Browser-Plug-In zeichnet alle Requests auf, die vom Browser zum Server gesendet werden. Nach dem Aufzeichnen des Tests sind eventuell noch manuelle Anpassungen notwendig, damit der Test funktioniert.

Wird zum Beispiel ein Produkt angelegt und die neue ID des Produkts in den nachfolgenden Requests zum Server gesendet, so wird der Test bei einem weiteren Durchlauf nicht mehr funktionieren, da ein neues Produkt eine andere ID bekommt, welche dann in den entsprechenden Requests gesendet werden muss. Wenn der Web-Performance Test fertig ist, dann funktioniert er solange, bis sich gewisse Dinge an der Anwendung ändern, die Einfluss auf den Web-Performance Test haben.

Beispiele hierfür sind:

  • die Post-Parameter haben sich geändert, die bei einem für den Test relevanten Request gesendet werden
  • die Requests für eine für den Test relevanten Seite haben sich geändert (Requests sind hinzugekommen bzw. weggefallen oder haben sich inhaltlich geändert)
  • für den Test relevante Teile der Seite haben sich geändert und der Test kann gewisse Informationen nicht mehr extrahieren

Nach einem Update einer Anwendung auf die aktuelle Version der Telerik Controls (Version 2016.x.xxx.xx) erhielten wir plötzlich den folgenden Fehler beim Ausführen eines Web-Performance Tests auf einer Seite mit einem RadAsyncUpload Control:

„Die Datei oder Assembly "Telerik.Web.UI, Version=2014.1.403.45, Culture=neutral, PublicKeyToken=121fae78165ba3d4" oder eine Abhängigkeit davon wurde nicht gefunden. Die gefundene Manifestdefinition der Assembly stimmt nicht mit dem Assemblyverweis überein. (Ausnahme von HRESULT: 0x80131040)“.

Das interessante war, dass die Anwendung (und auch die Seite mit dem Upload) korrekt funktionierten, wenn auf sie über einen Web-Browser zugegriffen wurde. Nur beim Ausführen des Web-Performance Tests trat der oben genannte Fehler auf.

Da aber in der gesamten Visual Studio Solution kein Verweis (mehr) auf diese alte Version der Telerik Controls zu finden war und auch sonst keine Datei die Zeichenfolge „2014.1.403.45“ enthielt, stellte sich die Frage, warum die Anwendung (beim Ausführen der Web-Performance Tests) diese Version der Telerik Controls sucht, obwohl diese nirgends referenziert beziehungsweise verwendet wurde. Nach einer längeren Suche konnten wir herausfinden, dass das Upload Control (RadAsyncUpload) dafür verantwortlich war. Ein Post Parameter, der von diesem Upload Control verwendet wird, ist der Parameter „rauPostData“.

Leider ist der Wert dieses Parameters in einem für den Menschen nicht lesbaren Format kodiert. Das bedeutet, dass nicht ersichtlich ist, welche Daten darin zum Server gesendet werden. Allerdings unterscheidet sich dieser Wert, wenn man den Wert für die alte und die neue Version der Telerik Controls vergleicht, in dem man die Werte abfängt, die zum Server gesendet werden, wenn man auf die Anwendung über einen Web-Browser zugreift. Wird der vom Web-Performance Test verwendete Wert – der durch die initiale Aufzeichnung festgelegt wurde – durch den aktuelle Wert ersetzt, so tritt der Fehler nicht mehr auf. Das bedeutet, dass in diesem Post Parameter die Versionsnummer der Telerik Controls enthalten sein muss.

Der Telerik Support konnte zu diesem Verhalten leider keine Auskunft geben. Vielleicht kann dieser Beitrag jemandem helfen, das gleiche Problem beim Testen des RadAsyncUpload Controls schnell zu lösen.