Tests de performance avec Visual Studio Tester (Partie 1)

       Visual_StudioTester

De nos jours, de nombreuses entreprises cherchent à déterminer la qualité et l'endurance de leurs applications. Que ce soit des Webservices, des sites internet, la stabilité de leurs infrastructures...

Je vous propose de voir dans la première partie :

  • La création d'un test Performance Web
  • Les enchaînes des scénarios
  • L'extraction "Custom" JSON (fonctionnalité manquante)
  • Liens utiles

Puis dans la 2ème partie :

  • Import de fichiers de Datasource
  • Les LoadTests permettant de simuler une charge ou déterminer le seuil de rupture...
  • Liens utiles

Test de performance Web

Création d'un projet et d'un test

Dans un premier temps, je vais vous montrer la création d'un projet Test de performance.

01_CreateProject

Puis créer, un test.

02_CreateTest

2 options s'offrent à vous :

  • La première est l'enregistrement automatique par explorateur internet qui se lance automatique.
  • L'autre consiste à créer manuellement le scénario, nous allons nous focaliser sur cette méthode.

Paramétrage d'un test

03_ScenarioTest

Comme vous pouvez le constater, la box de "Propriétés" est importante pour le paramétrage de l'appel.

Les options importantes sont :

  • L'url d'appel
  • La méthode d'appel GET / POST ...

Appel d'une page web

Nous allons faire un appel sur le site de "google" en faisant une recherche sur le mot "test", en faisant un clique droit sur le test WEB puis ajouter un "Query String Parameter" avec les arguments : "Q" et la valeur "test".

04_AppelScenarioTest

Résultat, vous venez de simuler un appel de recherche sur Google, simple comme bonjour.

Enchaînement d'appels

Etant donné que vous êtes expert en création de tests, vous êtes capable de créer plusieurs tests à la suite...

Mais on se demande comment passer les arguments d'un appel vers un autre ? La réponse se situe simplement sur les règles d'extraction et d'ajout de paramètres entre les appels.

On prend un cas simple, j'appelle un WebService qui me renvoie du Texte et j'extraie son contenu HTML, je fais un clique droit "Add extractRule...".

05_ExtractRule

Selon ce que je veux extraire, j'ai une panoplie de type d'extraction, le plus simple pour notre cas est "Extract Text".

Pour ré-utiliser les paramètres extraits, il suffit de cliquer automatiquement pour sélectionner l'argument, ou d'ajouter les doubles accolades comme par exemple : {{monArgument}}.

Voila une introduction des différents cas les plus utilisés des tests de performances sur Visual Studio.

La partie 2 sera beaucoup plus intéressante car après avoir vu comment faire du vélo, nous allons faire des marathons sur un vélo. A tout de suite.

Extraction JSON

Comme vous pouvez le voir, dans les règles d'extraction, aucune méthode ne nous permet d'extraire du JSON qui est pourtant très répandu sur internet de nos jours.

05_ExtractRule

Pour cela, il suffit d'ajouter à votre projet, le code suivant :

using Microsoft.VisualStudio.TestTools.WebTesting;
using Newtonsoft.Json.Linq;
using System;
using System.ComponentModel;
using System.Globalization;

namespace ADP
{
    [DisplayName("JSON Extraction Rule")]
    [Description("Extracts the specified JSON value from an object.")]
    public class JsonExtractionRule : ExtractionRule
    {
        public string Name { get; set; }

        public override void Extract(object sender, ExtractionEventArgs e)
        {
            if (e.Response.BodyString != null)
            {
                try
                {
                    var json = e.Response.BodyString;
                    var data = JObject.Parse(json);

                    if (data != null)
                    {
                        e.WebTest.Context.Add(this.ContextParameterName, data.SelectToken(Name));
                        e.Success = true;
                        return;
                    }
                }
                catch (Exception ex)
                {
                    e.Message = ex.Message;
                    e.Success = false;
                    //throw new Exception("Error JSON, impossible to parse : " + e.Message);
                }
            }

            e.Success = false;
            e.Message = String.Format(CultureInfo.CurrentCulture, "Not Found: {0}", Name);
        }
    }
}

En compilant ce code, vous pouvez voir l'apparition d'une méthode "JSON Extraction Rule".

Liens Utiles

Laisser un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Captcha *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.