Qu'est-ce que le test d'évolutivité?

D'une manière générale, évolutif signifie «pouvoir changer de taille et de volume». Il en va de même pour les tests d'évolutivité. En termes simples, les tests d'évolutivité sont les tests de tout logiciel ou application pour vérifier sa capacité à supporter et à évoluer en fonction du nombre d'utilisateurs qui y accèdent à un moment particulier / spécifique. Fondamentalement, il vérifie les performances d'une application à différentes charges de travail et est donc également appelé Test de performances. Il vérifie si le système est en mesure de fonctionner correctement comme prévu, même en cas de trafic élevé, de volume de données ou de fréquence de demande, etc. Il s'agit d'un type de test non fonctionnel. Les tests d'évolutivité peuvent être mesurés sur différents paramètres en fonction du type d'application et peuvent être effectués sur le matériel, la base de données et les logiciels.

Dans le monde réel, il est très important de tester l'évolutivité du système avant sa sortie dans l'environnement de production. Envisagez un scénario de site Web de commerce électronique et le site Web fonctionne bien les jours normaux, mais au moment de la vente ou de toute occasion spéciale, la charge / le trafic sur le site Web a augmenté de 2 à 3 fois et le site Web commence à répondre très lentement ou se bloque. à un moment donné. Cela entraînera une énorme perte d'argent et de réputation sur le marché. Les applications doivent être en mesure de faire face aux différents scénarios d'un grand nombre de demandes d'utilisateurs, de volume de données et d'autres charges de travail. Les tests d'évolutivité garantissent aux développeurs que l'application est prête à être publiée et disponible pour les clients.

Beaucoup de gens utilisent les termes test d'évolutivité et test de charge de manière interchangeable, mais il y a beaucoup de différence entre les deux ci-dessus. Bien qu'il s'agisse de tests non fonctionnels, les tests de charge sont effectués pour vérifier à quel moment l'application d'une charge maximale se casse, mais le test d'évolutivité est effectué pour tester le comportement de divers attributs d'une application lors de l'application de diverses charges du minimum au maximum. Son objectif principal est de tester les performances d'une application sous différentes charges plutôt que de tester le point de défaillance de réponse d'une application.

Comment les tests d'évolutivité sont-ils effectués?

Comme indiqué ci-dessus, les tests d'évolutivité sont effectués pour vérifier les performances d'une application à différentes charges de travail. Afin d'effectuer des tests d'évolutivité, les étapes suivantes sont suivies en utilisant n'importe quel outil de test d'évolutivité disponible sur le marché.

  • La première étape consiste à définir un processus reproductible qui s'exécute tout au long du cycle de vie de l'application.
  • Recherche de tout logiciel / outil approprié pour tester l'application.
  • Créer un bon environnement de test qui est presque une réplique de l'environnement de production où l'ensemble du test est effectué.
  • Configurez le matériel requis pour effectuer des tests d'évolutivité.
  • Création de plusieurs utilisateurs virtuels sous forme de threads pour effectuer des tests sous différentes charges.
  • Créez différents scénarios de test en tenant compte des différentes conditions de test.
  • Exécutez les scénarios de test dans l'environnement de test créé ci-dessus.
  • Évaluez les résultats et observez les différents graphiques et diagrammes générés pour chaque scénario.
  • Prenez les mesures correctives en fonction des résultats trouvés dans les scénarios ci-dessus pour améliorer les performances d'une application.

Outils de test d'évolutivité

L'outil utilisé pour les tests d'évolutivité dépend de l'application que l'utilisateur souhaite tester. Bien qu'il existe de nombreux outils de test d'évolutivité disponibles sur le marché et trop open source. Certains des outils sont mentionnés ci-dessous:

  • LoadUI Pro
  • LoadNinja
  • Apache Jmeter
  • Affichage de la charge
  • Neo Load
  • Impact de la charge
  • Blitz
  • Chargeur

Il n'y a pas de classification des meilleurs et des pires outils disponibles sur le marché pour les tests d'évolutivité. Chaque outil fournit ses propres fonctionnalités spéciales pour tester l'évolutivité d'une application, mais chaque organisation a certains critères et facteurs environnementaux d'une application qui affectent également le choix d'un outil pour tester une application. Les testeurs ont besoin d'un outil de test qui peut gérer le facteur de charge dans divers scénarios créés.

Attributs de test d'évolutivité

Vous trouverez ci-dessous certains des attributs communs des tests d'évolutivité:

1) Débit

Le débit est défini comme un nombre de demandes traitées par unité de temps. Cependant, pour différentes applications, la définition du débit peut varier et est testée d'une manière différente. Par exemple, pour une application Web, le débit est testé en vérifiant le nombre de demandes d'utilisateurs traitées dans un temps unitaire alors que, dans le cas d'une base de données, le débit est mesuré par le nombre de requêtes traitées à la fois.

2) Utilisation de la mémoire

L'utilisation de la mémoire est également testée afin d'obtenir les meilleurs résultats de consommation de mémoire pour une application. Dans Utilisation de la mémoire, la quantité de mémoire utilisée pour effectuer une tâche dans une application est testée. Parce que lors de l'exécution de toute tâche, une mémoire RAM est utilisée qui doit être optimisée pour le bon fonctionnement de toute application. Pour une utilisation moindre de la mémoire, les programmeurs devraient suivre de bonnes pratiques de programmation, comme une utilisation moindre des boucles redondantes, une réduction des accès à une base de données, la gestion des validations maximales côté client uniquement, etc. Plusieurs fois, une application manque de mémoire en raison de un grand nombre de demandes, les développeurs doivent donc toujours conserver une base de données supplémentaire pour gérer de telles situations.

3) Utilisation du processeur

L'utilisation du processeur est testée pour vérifier le processeur utilisé lors de l'exécution de toute tâche dans une application. L'utilisation du processeur est mesurée en mégaHertz. Pour moins d'utilisation du processeur et plus de débit, le code de toute application Web écrite dans n'importe quel langage de programmation doit être correctement optimisé. Les développeurs doivent éviter les pratiques de programmation comme le code mort et redondant, les threads et les boucles inutiles pour réduire l'utilisation du processeur. Le sommeil est la meilleure méthode qui devrait être utilisée pour minimiser l'utilisation du CPU entre les deux.

4) Utilisation du réseau

Utilisation en réseau, la quantité de bande passante consommée pour effectuer une tâche particulière dans une application est testée. L'utilisation du réseau est mesurée par les octets, les segments, les paquets reçus ou envoyés par seconde sur le réseau. Pour qu'une application idéale donne les meilleurs résultats, l'utilisation du réseau doit être minimale. Diverses techniques d'encombrement sont utilisées par les programmeurs pour réduire la consommation du réseau et les hautes performances d'une application.

5) Temps de réponse

Il s'agit de l'un des attributs les plus importants des tests d'évolutivité. Le temps de réponse est essentiellement le temps entre la demande de l'utilisateur et la réponse du serveur d'applications. Le temps de réponse est testé à différentes charges, soit en augmentant le nombre de demandes par utilisateur, soit en augmentant le nombre d'utilisateurs pour vérifier à quel moment l'application commencera à répondre tardivement. Dans un environnement en cluster, un équilibreur de charge est utilisé pour vérifier la charge sur différents nœuds afin qu'il ne soit pas possible qu'un nœud soit surchargé par la demande et qu'un autre nœud soit inactif en attendant la demande, ce qui entraîne un temps de réponse plus long. Pour une application évolutive, le temps de réponse doit être minimum même en cas d'augmentation du trafic. Réduisez le temps de réponse. Meilleure performance de l'application.

6) Il faut du temps pour charger une page Web du site Web

Le temps nécessaire à une page Web particulière pour se charger dans une application est également très important et affecte les performances globales d'un site Web. Pour que toute page Web se charge rapidement, les programmeurs sont invités à utiliser les bonnes pratiques de programmation et à utiliser des outils légers, des images, des vidéos, etc. qui peuvent se charger facilement et rapidement.

Approches des tests d'évolutivité

Il existe deux approches pour les tests d'évolutivité:

1) Mise à l'échelle horizontale

La mise à l'échelle horizontale implique l'ajout de machines et de ressources physiques supplémentaires et donc la réduction de la charge sur chaque machine / ressource. Ce processus implique d'augmenter le nombre de nœuds au lieu d'augmenter la capacité, la charge est répartie entre les anciennes et les nouvelles ressources ajoutées. La mise à l'échelle horizontale est appelée mise à l'échelle car la mise à l'échelle se fait vers l'extérieur en augmentant les ressources.

La mise à l'échelle horizontale est effectuée par de grandes entreprises comme Google, Yahoo, Facebook, Amazon, etc. ayant de très grands projets / applications exécutés dans un environnement distribué à plusieurs nœuds. Il nécessite un niveau informatique élevé et peut être atteint à l'aide de systèmes de fichiers en cluster, à équilibrage de charge et distribués. La mise à l'échelle horizontale implique le partitionnement des données, c'est-à-dire que les données sont réparties entre différents nœuds. bien que la capacité d'un seul nœud reste la même et ne soit pas diminuée, mais la charge est divisée entre différents nœuds et donc les performances globales sont améliorées sous différentes charges. Bien que théoriquement, il soit plus facile de faire une mise à l'échelle horizontale en ajoutant les ressources dans le pool existant, mais en pratique, il est très difficile de mettre à l'échelle l'application.

2) Mise à l'échelle verticale

La mise à l'échelle verticale implique d'augmenter la puissance des machines déjà existantes en CPU, RAM, disque sur le serveur. Il peut ajouter plus de CPU au même serveur unique. Par exemple, avant que le travail soit géré par 1 CPU, en raison d'une augmentation de la charge, les performances du système commencent à se dégrader, car malgré l'utilisation de 1 CPU, le nombre de CPU a été augmenté dans le serveur unique. Si les besoins en mémoire sont augmentés de 4 Go à 16 Go pour maintenir les bonnes performances du système ou si la taille du disque est augmentée par rapport à la taille existante, une mise à l'échelle verticale est effectuée.

La mise à l'échelle verticale est généralement effectuée par des petites ou moyennes entreprises pour les petites applications où les performances peuvent être maintenues avec une charge croissante simplement en augmentant la capacité et la taille des ressources déjà utilisées. Dans la mise à l'échelle verticale, les données résident sur un seul nœud à un endroit et la charge est divisée entre les différents CPU et la mémoire via plusieurs nœuds. La mise à l'échelle verticale est relativement difficile et se limite à une capacité particulière d'une machine ou d'un serveur. MySQL est un bon exemple de mise à l'échelle verticale et peut être réalisé en passant de petites machines à des machines beaucoup plus grandes. \

Avantages et inconvénients des tests d'évolutivité

Les avantages

Vous trouverez ci-dessous certains des avantages des tests d'évolutivité:

  • L'un des avantages les plus importants des tests d'évolutivité est qu'il détermine l'expérience de l'utilisateur final sous la charge spécifique afin que des mesures correctives puissent être prises à l'avance pour corriger les problèmes et rendre l'application plus évolutive.
  • Il aide à déterminer les limites de l'application Web testée en termes de temps de réponse, d'utilisation du réseau, d'utilisation du processeur, etc.
  • Pour réduire le risque de perte énorme d'argent et la réputation de l'entreprise en raison des mauvaises performances d'une application, il est très important de faire des tests d'évolutivité rigoureux avant de la publier dans un environnement de production.
  • Il découvre la cause exacte de divers problèmes de performances dans une application en phase de test uniquement, ce qui permet d'économiser beaucoup de temps et d'argent s'il est détecté dans l'environnement de production.
  • Les tests d'évolutivité contribuent également à un suivi efficace de l'utilisation des outils.

Désavantages

Certains des inconvénients des tests d'évolutivité sont les suivants:

  • L'environnement de test n'est pas toujours exactement le même qu'un environnement de production et peut donc entraîner divers problèmes et différents résultats.
  • L'utilisation d'outils avancés pour les tests d'évolutivité et d'une équipe de test spécifiée pour les tests de performance peut entraîner un dépassement du budget des projets.
  • Le temps passé à tester chaque attribut des tests d'évolutivité est parfois très élevé et peut entraîner un retard dans le respect des délais du projet.
  • Parfois, les tests qui fonctionnent réellement bien, échouent dans la phase de test en raison de scénarios de test et de scripts de test incorrects, entraînant une perte de temps à effectuer des modifications inutiles.
  • Parfois, des erreurs fonctionnelles sont laissées pour compte et ne peuvent pas être identifiées dans les tests d'évolutivité.
  • Parfois, la fenêtre de test offerte est très étroite afin de ne pas perturber les processus métier et, par conséquent, les défauts restent découverts.

Conclusion

Dans l'industrie du logiciel, il est très important de fournir des résultats de qualité au client et pour de meilleurs résultats et performances, les tests d'évolutivité sont indispensables pour le développement complet d'une application avant sa sortie dans l'environnement de production. L'objectif principal des tests d'évolutivité est de déterminer quand une application commence à se dégrader en appliquant différentes charges de travail afin de prendre des mesures préventives et d'apporter des modifications afin de réduire le risque de perte d'argent et de réputation sur le marché. Bien que la méthode et l'outil utilisés pour les tests d'évolutivité diffèrent d'une organisation à l'autre et d'une application à l'autre.

Maintenant, presque toutes les entreprises ont ajouté des tests d'évolutivité dans le cadre de leur processus de test. Les tests d'évolutivité nécessitent une équipe distincte de professionnels et de testeurs qui ont une connaissance complète du système et de solides compétences analytiques. Il existe une forte demande de personnes sur le marché pour les tests d'évolutivité et les entreprises sont prêtes à offrir de beaux packages aux professionnels.

Articles recommandés

Ceci est un guide pour les tests d'évolutivité. Nous discutons ici des attributs, des outils et des approches des tests d'évolutivité des tests d'évolutivité ainsi que des avantages et des inconvénients des tests d'évolutivité. Vous pouvez également consulter les articles suivants pour en savoir plus -

  1. Outils de test de performance
  2. Test SOA
  3. Outils de test DevOps
  4. Test de la boîte noire
  5. Techniques de test de la boîte noire