Bienvenue à Blogs CodeS-SourceS Identification | Inscription | Aide

Azra [Florent Santin]

.Net, X'Net, aucun lien de parenté V2.0

Actualités


  • MSN Alerts
    View Florent Santin's profile on LinkedIn
Tester des applications Web utilisant Ajax

Aujourd'hui les tests ont une place de plus en plus essentielle dans le cycle de développement applicatif. Avec l'édition Microsoft Visual Studio 2005 Team Edition for Tester, Microsoft assiste les développeurs dans la création de tests au travers de la mise à disposition d'un outillage permettant de gérer plusieurs cas:

  • Unitaires
  • Manuel
  • Génériques
  • Ordonnés
  • Procédures stockées et requête
  • Charge
  • et Web

Les deux derniers types de test fonctionnent très bien ensembles et sont vraiment optimums pour valider des scénarios d'utilisation de vos pages web et anticiper la manière dont le serveur et l'application à tester vont supporter la charge.

Pour les tests Web, VS 2005 TE For Tester propose un recorder (plugin venant s'ajouter par dessus Internet Explorer) permettant d'enregistrer un scénario de navigation au travers d'un ensemble de page Web et de capturer celui-ci afin de permettre:

  • sa réexécution
  • sa modification dynamique: pour par exemple modifier de manière aléatoire les variables envoyées en querystring
  • Définir les différents niveaux de validation du test: si il y à écrit "vous êtes connecté" dans la page, si la page est renvoyée du serveur au client en moins de 2 secondes, si tel ou tel tag html est présent dans la page renvoyée...

Ce recorder est pratique mais il souffre d'un manque majeur: il ne permet pas de capturer les requêtes Ajax (XMLHttpRequest) et se contente des "POST" et des "GET" de base.

Par exemple, un test de navigation vers la page live.com puis une petite modification du portail donne ceci:

 

Et sa reproduction dans un test Web visual Studio 2005 ceci:

Hors, de plus en plus de pages contiennent des appels asynchrones et il devient maintenant indispensable d'être capable de valider le bon fonctionnement de celle-ci. Dans notre cas précédant nous ne voyons par exemple pas apparaitre les appels Ajax permettant de remplir le contenu des gadgets.

Dans la version actuelle de VS 2005 TE For Tester, la seule façon de prendre en compte ces requêtes est de les capturer dans un outil tiers (Fiddler ou Web Development Helper) et de reproduire leurs appels par code sous forme de WebRequest dans le test Web. Pour ceci il suffit de générer le code relatif au scénario de test grâce à l'option "Generate Code..." présente dans le menu contextuel et d'aller compléter celui-ci en écrivant la représentation des différents appels Ajax:

'------------------------------------------------------------------------------ ' <auto-generated> ' This code was generated by a tool. ' Runtime Version:2.0.50727.312 ' ' Changes to this file may cause incorrect behavior and will be lost if ' the code is regenerated. ' </auto-generated> '------------------------------------------------------------------------------ Option Strict Off Option Explicit On Imports Microsoft.VisualStudio.TestTools.WebTesting Imports System Imports System.Collections.Generic Imports System.Text Namespace TestProjectAjax Public Class WebTest1Coded Inherits ThreadedWebTest Public Sub New() MyBase.New() Me.PreAuthenticate = True End Sub Public Overrides Sub Run() Dim request1 As WebTestRequest = New WebTestRequest("http://www.live.com/") request1.ThinkTime = 4 MyBase.Send(request1) Dim request2 As WebTestRequest = New WebTestRequest("http://www.live.com/getstarted.aspx") request2.ThinkTime = 2 MyBase.Send(request2) Dim request3 As WebTestRequest = New WebTestRequest("http://www.live.com/") request3.ThinkTime = 6 request3.QueryStringParameters.Add("addTemplate", "basics%2Cnews%2Csports%2Centertainment", False, False) MyBase.Send(request3) ' Insertion des requêtes Ajax si besoin Dim request4 As WebTestRequest = New WebTestRequest("http://www.live.com/") MyBase.Send(request4) End Sub End Class End Namespace

 

Cette technique fonctionne mais n'est pas forcement très rapide à mettre en œuvre car nécessite de reporter chaque appel en block de code.

La nouveauté, c'est que depuis une de ses dernières versions, l'outil Fiddler permet de générer le scénario de test par rapport à ce qu'il a enregistré, et la, le gain des temps est énorme vu que Fiddler peut maintenant être utilisé comme recorder à la place du plugin d'IE.

Pour reprendre le même scénario de test sur la page live.com, Fiddler capturera les appels suivants:

 

 

On remarque que l'information capturée est cette fois-ci complète et que tout les appels client/serveur sont matérialisés, y compris les requêtes Ajax que les gadgets utilisent.

Il ne reste plus qu'a demander a Fiddler de nous générer le scénario de test à partir de la sélection souhaitée et nous voila en présence d'un fichier .Webtest pouvant être ouvert avec Visual Studio 2005 Team Test afin d'être rejoué, validé et éventuellement pris en compte dans un test de scénario de charge. La boucle est bouclée vous revoila de nouveau dans Visual Studio 2005.

 

 

 

 

Voila, vous n'avez maintenant plus de pretextes valables pour ne pas automatiser le test de vos applications Web :)

Posted: dimanche 17 décembre 2006 18:05 par azra
Classé sous : ,
Ce post vous a plu ? Ajoutez le dans vos favoris pour ne pas perdre de temps à le retrouver le jour où vous en aurez besoin :

Commentaires

Pas de commentaires

Les commentaires anonymes sont désactivés

Les 10 derniers blogs postés

- [TechDays2012] Oui j’y serai! par Blog de Jérémy Jeanson le il y a 11 heures et 34 minutes

- TFS Integration Tools – Suivi des synchronisations avec Reporting Services par Vivien Fabing le 02-05-2012, 17:46

- CSS Content State Selectors (Personnal Draft) par Le blog de FremyCompany le 02-04-2012, 15:38

- MBA : Pourquoi faire et comment le choisir ? par Blog Technique de Romelard Fabrice le 02-03-2012, 14:22

- Y'a des erreurs qui peuvent rendre le développeur violent par Aleks's Blog le 02-02-2012, 16:33

- [Hyper-V 3] Présentation des commandlets PowerShell par Blog de SPBrouillet (Pierrick BROUILLET) le 01-31-2012, 16:01

- IIS7 – Compression GZIP par Atteint de JavaScriptite Aiguë [Cyril Durand] le 01-31-2012, 15:52

- SharePoint 15 Technical Preview Managed Object Model Software Development Kit par Matthew le 01-31-2012, 12:34

- Office 15 Technical Preview - Open specification Update par Matthew le 01-31-2012, 10:14

- TFS Integration Tools – Installation par Vivien Fabing le 01-31-2012, 00:06