Le test de performance pour les geeks... et les autres aussi !

Le test de performance pour les geeks... et les autres aussi !

Vous développez ou souhaitez développer des logiciels ou des applications web ? Vous êtes ingénieur IT ou DSI et travaillez sur la refonte d’un outil en place dans votre entreprise ? Infogérant pour le compte d’une TPE ou d’une PME ? 

Sur un marché hautement concurrentiel où vous vous devez d’être rapide, voire le premier, avec un logiciel ou une application web performant(e), un site internet réactif, le test de performance est incontournable. 

La bonne nouvelle ? Il existe des solutions permettant d’automatiser cette phase de test et de vous accompagner dans votre production.
appvizer vous propose une introduction aux étapes et enjeux des tests de performance ainsi qu’aux outils existants.

Suggestion de logiciels pour vous

The English Quiz

The English Quiz
Spécialiste des évaluations d’anglais en ligne
Essai Gratuit
Voir ce logiciel

LockPass

LockPass
Gestionnaire de mots de passe pour entreprise
Essai Gratuit - 14 jours
Voir ce logiciel

LockTransfer

LockTransfer
Partagez vos fichiers de manière sécurisée
Essai Gratuit - 14 jours
Voir ce logiciel

Les tests informatiques : petit tour d’horizon

En développement web, deux niveaux de tests existent : 

  • le niveau structurel (le code),
  • le niveau fonctionnel (les fonctionnalités).

Ici, nous recensons pour vous les principaux tests fonctionnels et leurs objectifs, l’enjeu étant d’identifier un maximum de comportements problématiques (bugs) d’un système pour les corriger. 

Les différents résultats se recoupant souvent, et le temps et les ressources financières étant limités, il est rare et inutile de tous les cumuler.

Le test de performance : définition

Le test de performance détermine la bonne exécution d’un système informatique en mesurant ses temps de réponse sans contexte particulier.
Son objectif est de fournir des métriques sur la rapidité de l’application.

Le test de performance répond à un besoin des utilisateurs et des entreprises en matière de vitesse

Dans le cas d’un test de performance continu, il démarre dès le début des phases de développement, et est adapté à chaque étape du cycle de vie de l’application, jusqu’aux tests de charge complets.

On peut dire que tous les tests présentés ci-dessous sont des tests de performance, mais avec des mises en situation plus précises.

Le test de rendement

Le test de rendement est un test de performance plus poussé, qui détermine la bonne exécution d’un système informatique par la mesure de ses temps de réponse en fonction de sa sollicitation par des utilisateurs, dans un contexte réaliste. Cette distinction existe surtout au Québec.
Il établit un rapport entre performances et ressources utilisées (mémoire, bande passante).

Il répond à un besoin des utilisateurs en matière de vitesse et de qualité

Le test de charge (load testing) et de montée en charge (scalability)

Le test de charge permet de mesurer le comportement d’un système en fonction de la charge d’utilisateurs simultanés attendus, appelée la population cible.
En augmentant le nombre d’utilisateurs par paliers, il recherche les limites en capacité du système, pour valider la qualité de service avant déploiement.

Il répond à la question de charge maximale supportée.

Test de performance : infographie test de charge, scalability

Le test de stress, de rupture (stress testing)

Au-delà du test précédent, celui-ci va simuler l’activité maximale attendue tous scénarios fonctionnels confondus, au plus haut du trafic, pour voir comment le système réagit dans un contexte exceptionnel (explosion du nombre de visites, panne, etc.).

Le test se déroule jusqu’à ce que le taux d’erreurs et les temps de chargement ne soient plus acceptables.

Cette liste de tests n’est pas exhaustive, il y a aussi : 

  • le test de dégradations des transactions, 
  • le test d’endurance (robustesse, fiabilité), 
  • le test de résilience, 
  • le test de vieillissement, etc.

La campagne de test de performance

En amont du développement d’un logiciel, d’une application ou d’un site web, il est indispensable de mettre en place une méthodologie avec :

  • l’élaboration du cahier des charges et la définition des objectifs, 
  • la constitution de l’équipe de projet web, 
  • la planification, notamment des phases de testing, 
  • le bilan, etc. 

Tout au long du développement, une surveillance de la production a lieu, aussi appelée monitoring

On parle de surveillance d’un environnement IT en temps réel et en continu, pour réagir rapidement aux problèmes rencontrés par l’écosystème.
Elle se distingue de la surveillance des tendances, pour laquelle les données sont historisées afin d’avoir une vue sur le long terme des utilisations du système, des fonctionnalités préférées, etc.

La gestion de projet web

Les méthodes agiles sont de plus en plus prisées dans les projets web, notamment la méthode Scrum qui établit : 

  • des rôles définis, 
  • un rythme itératif (des essais répétés et comparés), 
  • des réunions précises et limitées dans le temps, 
  • une planification en sprint (délai) court, 
  • une approche Test Driven qui consiste à établir les règles de tests avant de coder,
  • un suivi grâce à un graphique d’avancement, etc. 

Le chef de projet web accompagne son équipe pour définir des objectifs et exécuter la campagne de tests.
Il met en place des tunings (paramétrages) permettant d’améliorer le comportement applicatif, d’analyser les causes possibles de ralentissement avec les développeurs et de valider le monitoring avec la production.
Il est important que l’équipe projet (webdevelopers, webdesigners, traffic managers, chefs de produit, chefs de projet) soit composée de membres de l’équipe build (construction) et de l’équipe run (exécution) pour avoir une vision de A à Z du projet.

Ces différents acteurs ajustent les tests pour mise en production selon leurs expériences et en fonction du contexte.

D’autres bonnes pratiques sont préconisées pour une bonne gestion de projet web, notamment :

  • la réalisation d’un Proof Of Concept (POC), une méthode pour s’assurer que le processus global est compris et définir les rôles de chacun ;
  • la planification de périodes probatoires durant lesquelles les équipes run prennent la main, en fin de production, avec le support technique des équipes build.

Quels sont les objectifs des tests de performance ?

Les objectifs sont nombreux et multiples. En effet, les tests peuvent permettre :

  • de connaître la capacité du système et ses limites,
  • de détecter et surveiller ses points faibles, 
  • d’optimiser ses coûts en infrastructure et en exécution,
  • de s’assurer qu’il fonctionne sans erreurs sous certaines conditions de charge,
  • d’optimiser les temps de réponse pour améliorer l’expérience utilisateur (UX),
  • de vérifier la stabilité entre la version de production et la version n+1,
  • de reproduire un problème de production,
  • d’anticiper une montée en charge future, l’ajout d’une fonctionnalité,
  • d’évaluer la possibilité d’installer un APM (application portfolio manager, gestionnaire d’application), 
  • de veiller au bon comportement du système et de ses applications tierces externes, en cas de panne puis de reconnexion, etc.

Quelques étapes clés d’une campagne de tests

Avant de commencer, il est important de veiller à l’automatisation en amont de la chaîne de test, recueil des données et génération des rapports, avec le bon outil.

Il est aussi primordial de bien définir et de calibrer les scénarios pour qu’ils soient représentatifs de l’utilisation attendue sur une période donnée.

  1. Identification de l’environnement de test, du périmètre :
    • les composants testés (front, back, stockage),
    • les pages testées,
    • l’architecture SOA (dépendances entre les sous-systèmes),
    • les contraintes d’architecture (équipement réseau, cache distribué, etc.) ;
  2. Détermination des critères d’acceptation (les exigences ou requirements) :
    • la concurrence d’accès/débit (le nombre d’utilisateurs simultanés),
    • le temps de réponse,
    • le temps d’affichage,
    • les ressources utilisées ;
  3. Conception des scénarios :
    • lancés quand il y a assez de données à évaluer,
    • documentés click après click pour être reproductibles à l’identique,
    • simplifiés dans un premier temps (warm test) pour valider la cohérence de l’infrastructure,
    • déclinés par type d’utilisateur et par fonctionnalité, etc. ;
  4. Configuration de l’environnement de test :
    • la mise en place des sondes (agents de mesure) dans chaque composant,
    • la prise en compte de leur influence sur le fonctionnement du système ;
  5. Réalisation des tests (avec injecteur de charges et de scénarios) et recueil des métriques ;
    • Analyse des résultats et exécution des tests à nouveau :
      • la recherche des patterns (scénarios) qui empêchent une bonne exécution du système et le composant concerné,
      • la rédaction d’un diagnostic.

    Choix des métriques (indicateurs clés)

    Il ne faut pas en sélectionner trop à la fois, au risque de ne rien surveiller correctement et de perdre de vue le but de la campagne de tests.
    Il y a deux types de métriques, les business et les techniques.

    Les métriques business :

    • le nombre de transactions, 
    • le nombre de pages interrogées,
    • le temps de réponse d’une fonctionnalité ou d’une page (inscription, paiement), 
    • la fonctionnalité la plus utilisée,
    • le nombre de users simultanés, 
    • le nombre d’opérations par unité de temps, etc.

    Les métriques techniques :

    • le CPU load : charge du Central Processing Unit, soit la charge du processeur (occupation en % et/ou temps de chargement),
    • l’activité moyenne du système (load average),
    • l’activité du réseau (bande passante consommée),
    • l’activité et l’occupation des disques,
    • l’occupation de la mémoire (RAM usage),
    • les données de transfert pendant le test (transaction rate ou throughtput), 
    • l’activité de la base de données,
    • les hit et miss du cache Varnish (comportement du serveur de cache HTTP), etc.

    Les logiciels de test de performance

    Un outil de gestion des tests de performance va généralement comporter :

    • Un injecteur de charge (ou générateur de charge, moteur de charge) qui simule les actions des utilisateurs et la charge en conséquence. 
      Ces actions sont définies puis historisées dans des programmes (scripts) automatisant les scénarios. 
      L’injecteur dispose toujours d’une API (interface de programmation) pour gérer des requêtes HTTP/HTTPS, voire d’autres protocoles (SQL, Websocket, citrix, JMS…).​​​​

    Sur le web, on trouve de nombreuses références à ces 4 logiciels de tests de charge open source : Gatling, Apache JMeter, ApacheBench et NeoLoad, complémentaires à une solution de gestion de tests globale.

    Par exemple, NeoLoad est une plateforme de test de charge permettant : 

    • de simuler l’activité des utilisateurs,
    • de monitorer le fonctionnement des serveurs,
    • d’automatiser les tests avec votre serveur d’intégration continue,
    • de générer des statuts échec/réussite automatiques basés sur vos niveaux de service,
    • d’optimiser la collaboration,
    • de réduire les phases de build/test tout en garantissant la qualité.

    • Des sondes, placées au niveau du système cible et de ses composants, pour remonter des données de mesure sur leur comportement. 
      Il est conseillé de privilégier les interfaces de programmation disponibles en natif au sein des composants techniques, l’utilisation d’agents pouvant perturber le fonctionnement optimal du système.

    Pourquoi adopter un logiciel de gestion de test ?

    Les solutions de tests de performances simplifient et automatisent les tests : 

    • elles créent les scénarios de tests, 
    • elles les configurent avec ou sans script (programme dédié), 
    • elles simulent des utilisateurs virtuels avec collecte des mesures,
    • elles mettent en relation les données envoyées par l’injecteur et recueillies par les sondes,
    • elles génèrent automatiquement des rapports, à l’usage des non-experts, à partir des métriques.

    Si vous êtes à l’aise avec la programmation, vous pouvez opter pour un logiciel open source, mais pour les novices, un logiciel professionnel vous fera gagner beaucoup de temps et de tranquillité d’esprit.

    Focus sur SpiraTest

    Édité par Inflectra, SpiraTest est plus qu’une solution en ligne de gestion de tests logiciels, c’est aussi un outil collaboratif de gestion des versions et de gestion de projet web.

    Depuis sa plateforme unique, vous pouvez gérer l’ensemble de vos exigences, tests et incidents tout en assurant une traçabilité totale pendant le cycle de test.
    Elle permet de développer des scénarios de test, de les exécuter et les automatiser, mais aussi de paramétrer tous vos champs et critères de tests en amont.

    Test de performance : SpiraTest

    Ses capacités collaboratives permettent l’affectation et le suivi des bugs et incidents, ainsi que la création et la distribution des rapports d’activité.

    Vous rentrez et planifiez vos exigences par module, les regroupez, les priorisez puis planifiez les sorties des différentes versions (releases) par sprint (période définie).

    Regardez la vidéo de démonstration (en anglais) :

    Atouts complémentaires :

    • un accès depuis tout terminal (ordinateur, tablette, smartphone) en temps réel,
    • un hébergement de vos données dans la zone géographique de votre choix,
    • un nombre illimité de tests, d’exigences (requirements), de tâches et d’utilisateurs,
    • la signature électronique,
    • de nombreuses applications connectées dont Redmine, NeoLoad (injecteur de charges), etc.,
    • 5 langues supportées : français, anglais, espagnol, portugais, polonais,
    • la réversibilité totale des données,
    • une sauvegarde quotidienne.

    Coût : à partir de 80 $ pour 3 utilisateurs. 
    Version d’essai gratuite.

    Découvrez plus d’outils de gestion de tests sur notre page Gestion de tests logiciels, mais aussi notre page Supervision applicative. Parmi eux : Equafy, Octoperf, RG Supervision, Runscope, SpiraTest et TestLaucher.

    Suggestion de logiciels pour vous

    Smart GDPR

    Smart GDPR
    1ère Plateforme Européenne de mise en conformité RGPD
    Démonstration gratuite
    Voir ce logiciel

    Vade Secure Office 365

    Vade Secure Office 365
    La solution native de protection de votre messagerie Office
    Démarrer un essai gratuit
    Voir ce logiciel

    Cirrus Shield

    Cirrus Shield
    CRM pour booster vos ventes et la satisfaction clients !
    Démonstration gratuite
    Voir ce logiciel
    Commenter cet article

    Ajouter un commentaire