Conception, technologies

Table des matières

SOAP : Tester des services web
Adobe Flex/AMF : Gérer les librairies externes
Adobe Flex/AMF : Gérer le polling et le streaming
Google Web Toolkit : Gérer les librairies externes
Sérialisation Java: Gérer les librairies externes
Oracle Forms : Créer un scénario avec des itérations

SOAP : Tester des services web

Ce tutoriel décrit comment concevoir un utilisateur virtuel comprenant des requêtes SOAP. Il présente trois différentes méthodes de création de requêtes SOAP depuis NeoLoad: à partir d'un fichier WSDL, à partir de zéro, ou bien depuis une séquence d'enregistrement.

Afin de bien comprendre ce tutoriel, il est conseillé d'avoir lu auparavant la section "Les requêtes SOAP".

Comprendre le contexte

De la même manière que NeoLoad vous laisse définir et tester des interactions HTTP, NeoLoad fournit le moyen de tester en charge des requêtes SOAP. Les requêtes SOAP sont similaires en de nombreux points aux requêtes HTTP classiques. Cela signifie que toutes les fonctionnalités de NeoLoad concernant les requêtes HTTP sont disponibles pour SOAP. Cela inclut, entre autres, l'utilisation de variables, définir des validations et bien sûr obtenir des résultats de test. Cependant, noter que les requêtes SOAP diffèrent des requêtes HTTP classiques de plusieurs façons:

  1. Les requêtes SOAP ne sont pas obligatoirement associées à des Pages web comme le sont les requêtes HTTP classiques. Si vous enregistrez une page HTML contenant des appels SOAP, ces requêtes seront associées à la page. En revanche, si vous enregistrez uniquement des requêtes SOAP, ces requêtes apparaîtront comme des requêtes indépendantes. Apprenez en plus sur le sujet dans la section intitulée « Enregistrer une requête SOAP ».

  2. Les requêtes SOAP indépendantes n'appartiennent pas à une page web et n'ont donc pas de Temps d'attente associé. Si vous voulez tester une séquence d'appels SOAP, vous devez utiliser des actions Délai pour simuler les temps d'attente. Pour plus de détails sur les actions Délai, voir le guide de référence.

  3. La façon dont NeoLoad affiche les résultats diffère de l'affichage des résultats de pages web classiques. Voir la section intitulée « Un aperçu de l'analyse des résultats SOAP ».

NeoLoad fournit trois moyens de définir une requête SOAP:

Définir une requête SOAP basée sur une définition WSDL

Notre premier exemple utilise un service web fourni par StrikeIron, ce service est un service de déguisement de texte appelé CAPTCHA. Si vous enregistrez votre email, vous pouvez tester gratuitement ce service. Le WSDL est disponible à http://ws.strikeiron.com/textdisguise/CaptchaService?WSDL.

Un CAPTCHA ("Completely Automated Public Turing test to tell Computers and Humans Apart") ou en Français: "un Test public de Turing complètement automatique qui différencie ordinateurs et humains" est un programme qui génère une image que la plupart des humains peuvent voir, mais dont le texte ne peut être extrait par un ordinateur. De nombreuses applications ont besoin de s'assurer que ce qui interagit avec elles est bien un humain et non pas un "robot". Le camouflage de texte résout ce problème en affichant un mot dans une image déformée. L'utilisateur doit spécifier la valeur lue avant de continuer.

Le web service CAPTCHA définit deux méthodes nommées GetNewWord et ValidateImageWord. La première méthode, GetNewWord, n'attend aucun argument. Elle retourne un identifiant d'image et un lien vers cette image. L'image peut être affichée et l'utilisateur doit entrer le texte qu'il voit.

La deuxième méthode, ValidateImageWord, attend deux arguments, le texte entré par l'utilisateur et l'identifiant d'image. La méthode retourne true si le texte correspond à l'image et false sinon.

La requête HTTP d'un appel à la méthode GetNewWord ressemble à:

POST http://ws.strikeiron.com/textdisguise/CaptchaService
Content-Type: text/xml; charset=utf-8
SOAPAction: "http://www.textdisguise.com/TextDisguise/CaptchaService/GetNewWord"
User-Agent: Jakarta Commons-HttpClient/3.0
Host: ws.strikeiron.com
Content-Length: 723

<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope 
  xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" 
  xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <soapenv:Header>
    <ns1:LicenseInfo 
        xmlns:ns1="http://ws.strikeiron.com" 
        soapenv:actor="" soapenv:mustUnderstand="0">
      <ns1:UnregisteredUser>
        <ns1:EmailAddress>john.doe@dot.com</ns1:EmailAddress>
      </ns1:UnregisteredUser>
      <ns1:RegisteredUser>
        <ns1:UserID/>
        <ns1:Password/>
      </ns1:RegisteredUser>
    </ns1:LicenseInfo>
  </soapenv:Header>
  <soapenv:Body>
    <GetNewWord 
        xmlns="http://www.textdisguise.com/TextDisguise/CaptchaService/">
      <GetNewWord/>
    </GetNewWord>
  </soapenv:Body>
</soapenv:Envelope>

Plusieurs points valent la peine d'être notés:

  • L'entête HTTP définit le point d'accès ("End point") de la méthode, c'est à dire l'URL du service qui est dans notre cas: http://ws.strikeiron.com/textdisguise/CaptchaService.

  • L'entête HTTP contient un élément SOAPAction .

  • La requête définit le content type: "text/xml".

  • L'entête SOAP attend un élément nsl:unregisteredUser qui doit contenir votre adresse email.

  • Le corps de la requête SOAP body (l'élément soapenv:Body) contient uniquement une référence à la méthode invoquée (GetNewWord) et n'a pas de paramètre.

Ces éléments sont générés automatiquement à partir de la définition WSDL et l'interface de NeoLoad vous permet de les modifier si besoin.

La procédure suivante décrit les étapes de création d'une requête SOAP:

  1. Créer et définir la requête SOAP définie sur la définition WSDL.

  2. Configurer la requête et modifier les paramètres.

  3. Tester la requête

  1. Créer une requête SOAP

    1. Sélectionner le mode Conception de NeoLoad.

      Sélectionner le bouton .

    2. Créer un Utilisateur virtuel

      Cliquez au bouton droit le noeud Profils d'utilisateurs virtuels et sélectionner Nouvel Utilisateur Virtuel. Tapez "Utilisateur". Cliquez sur le bouton "OK".

    3. Ajouter une nouvelle requête SOAP

      Cliquez au bouton droit sur l'utilisateur virtuel créé et sélectionnez "Insérer dans", puis "Requête SOAP".

    4. Créer la requête depuis une définition WSDL

      Sélectionnez l'option "Générer la requête depuis un fichier WSDL" et entrer l'URL du fichier. Dans notre exemple, nous utilisons l'URL suivante: http://ws.strikeiron.com/textdisguise/CaptchaService?WSDL. NeoLoad analyse le WSDL et extrait les méthodes pouvant être appelées.

      Sélectionner le bouton Suivant.

    5. Choisir la méthode à appeler

      En se basant sur la définition du WSDL, NeoLoad liste les méthodes que vous pouvez utiliser. Dans notre exemple, nous sélectionnons la méthode CaptchaServiceSoap.GetNewWord.

      Sélectionner le bouton Suivant.

    6. Définir un nom de requête

      NeoLoad fournit un nom par défaut issu du nom de méthode du WSDL. La plupart du temps vous n'aurez pas besoin de changer ce nom.

      Sélectionner le bouton Suivant.

    7. Définir le point d'accès

      Cette étape vous permet de définir l'adresse à utiliser pour invoquer le service spécifié. L'URL est spécifiée dans le WSDL et vous n'avez pas besoin de le changer la plupart du temps. Vous pouvez modifier l'URL pour basculer entre un environnement de production et un environnement de test.

      Sélectionner le bouton Terminer.

    8. Vérifier les éléments principaux de configuration

      A ce niveau, la requête SOAP est ajoutée à l'utilisateur virtuel.

      Le panneau NeoLoad de droite affiche les éléments de configuration principaux de la requête SOAP. Cela inclut l'URL d'accès au service qui définit avec les éléments Serveur et Chemin. Ces éléments ont été extraits du WSDL mais peuvent être modifiés. Comme pour les requêtes HTTP, l'élément Chemin peut utiliser des variables NeoLoad.

      Le WSDL peut être modifié ou rechargé. Le rechargement est utilisé lorsque la requête SOAP et le WSDL sont désynchronisés.

      [Avertissement]Avertissement

      Recharger le WSDL réinitialise les paramètres précédents qui seront perdus.

    9. Vérifier les entêtes HTTP

      La plupart des requêtes SOAP nécessitent au moins deux entêtes HTTP lorsque la requête est effectuée au travers d'HTTP. Il est préférable de vérifier que ces éléments sont correctement positionnés. Ils sont accessibles par la fenêtre Paramètres avancés en cliquant le bouton :

      Dans notre exemple ces éléments sont ContentType et SOAPAction. Si votre framework de web services requiert d'autres entêtes HTTP vous pouvez les ajouter dans cette même fenêtre.

  2. Configurer la requête SOAP

    Avant de tester la requête SOAP, d'autres éléments comme les valeurs de paramètres d'appels ainsi que les types d'encoding doivent être configurés. Utiliser le bouton pour accéder à la fenêtre de configuration SOAP.

    1. Définir les paramètres du corps du message

      L'onglet Paramètres vous permet de définir la structure du corps du message. L'arbre de gauche affiche les paramètres d'appel.

      Comme mentionné précédemment, la méthode GetNewWord n'attend aucun argument ou un argument vide donc la liste des paramètres n'affiche des cet élément vide, donc l'arbre n'a qu'un élément vide nommé GetNewWord. S'il y avait eu d'autres arguments, ils auraient été affichés dans cet arbre. Pour notre exemple, aucune configuration n'est nécessaire.

    2. Définir les entêtes SOAP

      Sélectionner l'onglet Entêtes pour définir et configurer les éléments liés à l'entête SOAP. Les entêtes sont présentées de la même manière que les paramètres de requête. L'arbre de gauche affiche la structure et le contenu des entêtes SOAP. Utiliser les boutons et pour ajouter ou supprimer des éléments. Utiliser les boutons et pour déplacer les éléments.

      La structure des paramètres contient soit des conteneurs, comme UnregisteredUser dans notre cas, ou des éléments feuille comme EmailAddress. Le but des éléments Conteneur est de contenir d'autres éléments. Cliquer au bouton droit sur un conteneur permet d'ajouter ou de supprimer des éléments fils. NeoLoad ne permet que d'ajouter des éléments compatibles avec la définition du WSDL.

      D'un autre côté les éléments feuille ne peuvent contenir d'autres éléments mais ont une valeur associée. Dans notre exemple vous devez entrer une adresse email valide pour l'élément EmailAddress.

      Pour les conteneurs et les feuilles, vous pouvez définir des attributs. Encore une fois, les attributs doivent être cohérents avec le WSDL. Encoder permet d'utiliser des caractères spéciaux comme '<', '>' ou '&'.

    3. Configurer les paramètres avancés

      Le panneau Paramètres avancés vous permet de configurer le style de binding de la requête ainsi que les formats des attachements. Cette information a été extraite du WSDL, vous devez bien connaître ces notions si vous décidez de modifier ces paramètres.

    4. Voir le XML

      Le dernier onglet affiche le contenu XML tel qu'il sera envoyé. NeoLoad génère ce contenu à la volée d'après les paramètres que vous avez défini. Cliquer au bouton droit sur le contenu XML et sélectionner Indenter le XML pour indenter le XML.

      [Astuce]Astuce

      Vous pouvez rechercher une expression particulière en cliquant au bouton droit Rechercher... ou en utilisant le raccourci clavier: CONTROL + F.

  3. Tester la requête SOAP

    En créant un utilisateur virtuel temporaire, NeoLoad fournit une méthode facile et rapide de tester vos requêtes SOAP. Sélectionner le bouton pour tester votre requête.

    1. Démarrer la vérification

      Si vous déjà testé des utilisateurs virtuels avec NeoLoad, vous êtes familier avec cette fenêtre. En sélectionnant le bouton Lancer la validation, NeoLoad génère une requête SOAP et l'envoie au point d'accès spécifié. NeoLoad affiche le code de réponse associé et le nombre d'assertions ayant échouée pour la requête. Lorsque la ligne est sélectionnée, la fenêtre affiche plus de détails dans la partie basse du panneau. Vous pouvez choisir d'afficher la requête SOAP envoyée ou la réponse XML.

      [Astuce]Astuce

      Vous pouvez rechercher une expression particulière en cliquant au bouton droit Rechercher... ou en utilisant le raccourci clavier: CONTROL + F.

      [Astuce]Astuce

      Cliquer au bouton droit sur le contenu XML et sélectionner Indenter le XML pour indenter le XML.

      Si vous suivez notre exemple, la première fois que vous soumettrez la requête, la réponse ressemblera au texte suivant: (les entêtes HTTP ont été omises):

      <?xml version="1.0" encoding="utf-8"?>
      <soap:Envelope 
           xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" 
           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
           xmlns:xsd="http://www.w3.org/2001/XMLSchema">
        <soap:Header/>
        <soap:Body>
          <soap:Fault>
            <faultcode>soap:Client</faultcode>
            <faultstring>
              Thank you for your attempt to try this Web service. Before the 
              free trial can occur, 
              you must first validate your email address. 
              Simply click on the link in the email that was just sent to you, 
              and you will then be able to invoke every Web service 
              within the StrikeIron Web Services Marketplace, including this one.
            </faultstring>
            <faultactor/>
          </soap:Fault>
        </soap:Body>
      </soap:Envelope>

      Comme indiqué par l'élément faultstring, tout ce que vous avez à faire pour utiliser ce service un nombre limité de fois est de valider l'adresse email que vous avez envoyé en suivant le lien que Strikelron vous a communiqué. Une fois l'adresse validée, la réponse devrait ressembler à:

      <?xml version="1.0" encoding="utf-8"?>
      <soap:Envelope 
          xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" 
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
          xmlns:xsd="http://www.w3.org/2001/XMLSchema">
        <Header xmlns="http://schemas.xmlsoap.org/soap/envelope/">
          <SubscriptionInfo xmlns="http://ws.strikeiron.com">
            <LicenseStatusCode>1</LicenseStatusCode>
            <LicenseStatus>Valid key</LicenseStatus>
            <LicenseActionCode>0</LicenseActionCode>
            <LicenseAction>Decremented hit count</LicenseAction>
            <RemainingHits>4</RemainingHits>
            <Amount>0</Amount>
          </SubscriptionInfo>
        </Header>
        <soap:Body>
          <GetNewWordResponse 
              xmlns="http://www.textdisguise.com/TextDisguise/CaptchaService/">
            <GetNewWordResult>
              <CaptchaImageGuid>
                82e16912-14c1-4253-bbcb-699585e3ba63
              </CaptchaImageGuid>
              <Url>
                http://www.textdisguise.com/TextDisguise/CaptchaService/
                CaptchaImage.aspx?
                guid=82e16912-14c1-4253-bbcb-699585e3ba63
              </Url>
            </GetNewWordResult>
          </GetNewWordResponse>
        </soap:Body>
      </soap:Envelope>
      

      A partir d'ici vous pouvez utiliser le lien défini par l'élément Url dans une page HTML. Comme précisé dans la section suivante, vous pouvez alors utiliser la méthode ValidateImageWord et CaptchaImageGuid pour valider le texte entré par l'utilisateur.

Définir manuellement une requête SOAP

Cette section décrit comment définir une requête basée sur du XML au lieu de partir de la définition WSDL.

Nous illustrerons nos propos en continuant notre exemple précédent et en invoquant la méthode ValidateImageWord. Cette méthode attend deux paramètres, un identifiant d'image, le CaptchaImageGuid retourné par la méthode GetNewWord et le texte entré par l'utilisateur. La méthode ValidateImageWord retourne true si le texte entré par l'utilisateur et l'image correspondent. Le XML que nous allons utiliser pour la requête est le suivant:

<?xml version="1.0" encoding="UTF-8"?>
<soapenv:Envelope 
    xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" 
    xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <soapenv:Header>
    <ns1:LicenseInfo 
        xmlns:ns1="http://ws.strikeiron.com" 
        soapenv:mustUnderstand="0">
      <ns1:UnregisteredUser>
        <ns1:EmailAddress>john.doe@dot.com</ns1:EmailAddress>
      </ns1:UnregisteredUser>
      <ns1:RegisteredUser>
        <ns1:UserID/>
        <ns1:Password/>
      </ns1:RegisteredUser>
    </ns1:LicenseInfo>
  </soapenv:Header>
  <soapenv:Body>
    <ValidateImageWord 
        xmlns="http://www.textdisguise.com/TextDisguise/CaptchaService/">
      <captchaImageGuid>53fd3b31-1089-455b-a1b6-d78bc73f80b9</captchaImageGuid>
      <word>SUBPRIMATE</word>
    </ValidateImageWord>
  </soapenv:Body>
</soapenv:Envelope>
  1. Créer une requête SOAP manuellement

    1. Sélectionner le mode Conception de NeoLoad

      Utiliser le bouton .

    2. Créer une nouvelle requête

      Cliquez au bouton droit sur l'utilisateur virtuel et sélectionner "Insérer dans", puis "Requête SOAP".

    3. Spécifier la création manuelle

      Sélectionner l'option Générer la requête manuellement.

      Sélectionner le bouton Suivant.

    4. Choisir un nom pour la requête

      Entrer un nom pour cette requête.

      Dans notre exemple nous nommerons la requête ValidateImageWord.

      Sélectionner le bouton Suivant.

    5. Définir le point d'accès

      Il s'agit de l'URL où le service web est situé. Dans notre exemple, le point d'accès (end point) est: http://ws.strikeiron.com:80/textdisguise/CaptchaService.

      Sélectionner le bouton Terminer.

    6. Vérifier les éléments principaux de configuration

      A ce niveau, la requête SOAP est ajoutée à l'utilisateur virtuel sélectionné précédemment.

      Le panneau NeoLoad de droite affiche les éléments de configuration principaux de la requête SOAP. Cela inclut l'URL d'accès au service qui définit avec les éléments Serveur et Chemin. Comme pour les requêtes HTTP, l'élément Chemin peut utiliser des variables NeoLoad.

    7. Vérifier les entêtes HTTP

      La plupart des requêtes SOAP nécessitent au moins deux entêtes HTTP lorsque la requête est effectuée au travers d'HTTP. Il est préférable de vérifier que ces éléments sont correctement positionnés. Ils sont accessibles par la fenêtre Paramètres avancés en cliquant le bouton :

      Dans notre exemple ces éléments sont ContentType et SOAPAction.

  2. Configurer le contenu XML

    Pour configurer le XML, sélectionner le bouton Editer le contenu XML.

    A ce niveau, vous devez définir la requête XML soit en effectuant un copier-coller d'une requête que vous testez ou définir manuellement chaque noeud et attribut de la requête. Nous utiliserons le copier-coller dans notre exemple.

    Copier puis coller une requête XML existante dans le panneau Texte XML est le moyen le plus facile de définir le contenu XML. Dans notre exemple, nous copions le contenu de la méthode ValidateImageWord:

    Vous pouvez aussi utiliser le panneau Arbre XML pour définir manuellement ou par éditer les éléments XML. NeoLoad construit automatiquement une vue à partir de l'autre (Arbre XML à partir de Texte XML et vice versa). Le panneau Arbre XML ressemble à:

    A ce niveau la requête est complètement définie et vous pouvez la tester.

  3. Tester la requête SOAP

    En créant un utilisateur virtuel temporaire, NeoLoad fournit une méthode facile et rapide de tester vos requêtes SOAP. Sélectionner le bouton pour tester votre requête.

    1. Démarrer la vérification

      Si vous avez déjà testé des utilisateurs virtuels avec NeoLoad, vous êtes familier avec cette fenêtre. En sélectionnant le bouton Lancer la validation, NeoLoad génère une requête SOAP et l'envoie au point d'accès spécifié. NeoLoad affiche le code de réponse associé et le nombre d'assertions ayant échouée pour la requête. Lorsque la ligne est sélectionnée, la fenêtre affiche plus de détails dans la partie basse du panneau. Vous pouvez choisir d'afficher la requête SOAP envoyée ou la réponse XML.

      [Astuce]Astuce

      Vous pouvez rechercher une expression particulière en cliquant au bouton droit Rechercher... ou en utilisant le raccourci clavier: CONTROL + F.

      [Astuce]Astuce

      Cliquer au bouton droit sur le contenu XML et sélectionner Indenter le XML pour indenter le XML.

Utiliser l'Extracteur de Variables

Basée sur les deux exemples précédents, cette section montre brièvement comment vous pouvez, comme les requêtes HTTP, utiliser l'extraction de variable avec les requêtes SOAP.

L'idée est de:

  1. extraire l'identifiant d'image (le CaptchaImageGuid) de la réponse à la requête GetNewWord.

  2. puis injecter cette variable dans la requête ValidateImageWord.

  1. Extraire l'identifiant d'image (le CaptchaImageGuid) de la réponse à la requête GetNewWord.

    1. Sélectionner le mode Conception en sélectionnant le bouton .

    2. Sélectionner l'onglet Utilisateurs Virtuels.

    3. Ouvrir l'utilisateur virtuel.

    4. Sélectionner la requête GetNewWord d'où l'identifiant sera extrait.

    5. Ouvrir l'onglet Extracteur de Variable

      1. Ouvrir la fenêtre des paramètres avancés en utilisant le bouton .

      2. Sélectionner l'onglet Extracteurs de Variable:

    6. Définir une nouvelle variable

      Sélectionner le bouton pour créer une nouvelle variable d'extraction. Dans notre exemple, nous définissons la variable captchaImageGuid. La manière d'identifier et d'extraire la valeur est plutôt simple car la réponse XML est simple. Nous voulons extraire tout ce qui apparait entre les tags XML <captchaImageGuid> et </captchaImageGuid> tags:

      A ce niveau, la définition de l'extraction est terminée. A chaque invocation de GetNewWord, NeoLoad extraira l'identifiant d'image et l'attribuera à la variable captchaImageGuid.

      Pour plus d'informations sur l'extraction de variables, se reporter à la section intitulée « Créer un extracteur de variable » et au guide de référence.

  2. Réinjecter la valeur dans la requête ValidateImageWord

    1. Sélectionner la requête ValidateImageWord où l'identifiant doit être injecté.

    2. Sélectionner le bouton Editer le contenu XML.

    3. Sélectionner l'onglet Arbre XML.

    4. Sélectionner l'élément captchaImageGuid dans l'arbre XML.

    5. Utiliser le picker de variables en utilisant le bouton .... Vous pouvez aussi commencer à taper ${c et NeoLoad suggérera des noms de variables.

    6. Choisir la variable captchaImageGuid

      La fenêtre du contenu XML devrait ressembler à:

      Avec une telle configuration NeoLoad extrait l'identifiant d'image de la réponse à GetNewWord et l'injecte dans la requête ValidateImageWord.

Enregistrer une requête SOAP

Cette section illustre un autre moyen de définir une requête SOAP. De toutes les manières détaillées jusque là, celle-ci ressemble le plus à ce que vous avez l'habitude de faire pour une application web classique: agir en tant qu'utilisateur et laisser NeoLoad enregistrer les requêtes et les réponses. Notre exemple utilise l'API de recherche Google, donc si vous voulez essayer cette API vous avez besoin de créer un compte et d'obtenir une clé: APIs Google.

Description

L'exemple est très simple afin de comprendre le mécanisme sous-jacent:

La page HTML que nous enregistrerons contient un bouton Test et une zone de texte contenant la requête à envoyer. Le bouton test permet d'envoyer la requête et la réponse est affichée dans la zone de texte. La requête comprend une invocation à l'API de recherche Google. Le corps de la requête comprend entre autre un élément key que vous obtenu de Google. L'élément XML q est le texte à rechercher. Dans notre interface nous pouvons modifier ces paramètres en éditant le champ de texte avant de soumettre la requête.

Le code Javascript qui gère la requête se connecte au point d'accès du service, positionne les entêtes HTTP et envoie le contenu du champ de texte. Lorsque la réponse est reçue, son contenu est copié dans le champ de texte. Noter que le code fonctionne uniquement avec Microsoft Internet Explorer.

Le listing suivant contient le code de la page SOAPTest.html et de la fonction appelée lorsque le bouton Test est cliqué:

<html>
 <body>

<h1>Google</h1>
  
  <script type="text/javascript">
   function doIEGoogle() {
    
      textarea = document.getElementById("debugbox");
      xhr = new ActiveXObject("Microsoft.XMLHTTP");
      xhr.open('POST', "http://api.google.com/search/beta2");
      xhr.setRequestHeader("SOAPAction", "urn:GoogleSearchAction");
      xhr.setRequestHeader("Content-Type", "text/xml; charset=utf-8");
      xhr.onreadystatechange = 
         function() {
            if(xhr.readyState != 4) return;
            if(xhr.status != 200) {
               textarea.value = xhr.status + " " + xhr.statusText 
                  + "\n" + xhr.responseText;
               return;
            }
            textarea.value = xhr.responseText;
         };
      xhr.send(textarea.value);
   }   
   
  </script>
  
  <form name="input" action="javascript:doIEGoogle()">
   <input type="submit" value="Test">
  </form>
  <p></p>
  
  <textarea rows="30" cols="100" name="debugbox">
<?xml version='1.0' encoding='UTF-8'?>
<SOAPENV:Envelope 
 xmlns:SOAPENV="http://schemas.xmlsoap.org/soap/envelope/" 
 xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
 xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<SOAPENV:Body>

<ns1:doGoogleSearch
 xmlns:ns1="urn:GoogleSearch"
 SOAPENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">
 
 <key xsi:type="xsd:string">ABQIAAAA-YwsmHQspwIU9OcKL4b5rhTd9gLE95ZWCg
lQjFVS1XYlL9GwFBSIRS2y1JQBK8NE1ktm1oJWkWiTZQ</key>
 <q xsi:type="xsd:string">load testing web applications</q>
 <start xsi:type="xsd:int">0</start>
 <maxResults xsi:type="xsd:int">3</maxResults>
 <filter xsi:type="xsd:boolean">false</filter>
 <restrict xsi:type="xsd:string"/>
 <safeSearch xsi:type="xsd:boolean">false</safeSearch>
 <lr  xsi:type="xsd:string"/>
 <ie  xsi:type="xsd:string"/>
 <oe xsi:type="xsd:string"/>
</ns1:doGoogleSearch>

</SOAPENV:Body>
</SOAPENV:Envelope>

   </textarea>
    
 </body>
</html>
Enregistrer la page

Afin d'enregistrer cette page de test nous suivons exactement la même procédure que pour enregistrer une page web classique. Puis nous avons sélectionné le bouton Test et attendu les résultats de l'API Google. Nous avons stoppé l'enregistrement à ce stade.

L'utilisateur virtuel contient un noeud nommé /search/beta2.

[Important]Important

Les requêtes SOAP indépendantes n'appartiennent pas à une page web et n'ont donc pas de Temps d'attente associé. Si vous voulez tester une séquence d'appels SOAP, vous devez utiliser des actions Délai pour simuler les temps d'attente. Pour plus de détails sur les actions délai, voir le guide de référence.

NeoLoad a correctement identifié la requête comme étant une requête SOAP: les propriétés URL, Serveur, Chemin et Méthode ont été correctement positionnées.

Editer la requête SOAP

Si vous sélectionnez le bouton Editer le contenu XML et si vous choisissez la vue Arbre XML, vous pouvez facilement naviguer parmi les éléments de la requête. C'est typiquement l'endroit où vous pouvez utiliser des variables, pour changer par exemple le texte de recherche du paramètre q.

Tester la requête SOAP

Comme pour toute requête SOAP, vous pouvez tester la requête enregistrée en utilisant le bouton qui ouvre la fenêtre de validation:

Dans notre exemple, le code Javascript ne fait que remplir la zone de texte avec le XML reçu. Dans un cas réel, la page HTML ferait évidemment quelque chose d'utile comme analyser la réponse et afficher du HTML.

Enregistrer à partir d'un client SOAP existant

L'exemple précédant montre comment enregistrer des requêtes en utilisant un navigateur internet. Se reporter au guide de référence pour voir comment enregistrer à partir d'un client SOAP existant.

Un aperçu de l'analyse des résultats SOAP

Contrairement aux requêtes HTTP qui appartiennent à des pages web, les requêtes SOAP sont souvent définies en dehors de toute page web. Cela a un impact sur la manière dont NeoLoad affiche les résultats. Si vous définissez un scénario qui inclut des requêtes SOAP, ces requêtes ne sont pas affichées dans la synthèse du test.

Dans notre cas le scénario ne contient qu'une seule page nommée SOAPTest.html. Voici la synthèse du test:

Comme décrit dans la capture d'écran suivante, seul l'onglet Valeurs vous permet d'accéder aux statistiques de la requête SOAP, dans notre exemple la requête /search/beta2. Bien sûr, toutes les possibilités de graphe sont également disponibles pour les requêtes SOAP (onglet Graphiques).