Assurance qualité
Retour au Labo
Utilisation de l'apprentissage automatique dans les tests de performance
Mise en œuvre de techniques d'apprentissage automatique pour relever les défis des tests de performance
Définition des paramètres
https : //www.qualitestgroup.com/white-papers/lets-perform-right-performance-testing-planning-overcoming-challenges/
Remerciements :
Je remercie Christy Jacob et Nikhil Guddati pour leur assistance technique avec les algorithmes d'apprentissage automatique et les données de test de performance utilisées dans ce livre blanc.
Résumé
Alors que l'apprentissage automatique est populaire dans divers domaines, tels que les médias sociaux, les recommandations de produits, etc., ce livre blanc se concentre sur l'implémentation d'algorithmes d'apprentissage automatique dans le domaine des tests de performance.
Vue d'ensemble : L'apprentissage supervisé est une tâche d'apprentissage automatique dans laquelle une fonction est apprise, ou une relation est établie entre un ensemble donné de caractéristiques d'entrée et de caractéristique de sortie en utilisant l'ensemble de données de formation. Cette fonction apprise est ensuite utilisée pour prédire les sorties pour un nouvel ensemble d'entrées provenant de l'ensemble de données de test.
La régression est un type de tâche d'apprentissage supervisé utilisé pour prédire la valeur cible en fonction de la relation entre les variables obtenues à partir de l'ensemble de données.
L'environnement de test est l'un des défis critiques des tests de performance.
Idéalement, l'environnement de test de performance devrait être dimensionné avec la même capacité que celui de la production, afin d'éviter tout risque lié à l'interprétation des caractéristiques de performance du système pour l'environnement de production. Cependant, les environnements dédiés ne sont généralement pas disponibles pour des raisons budgétaires, et certaines industries renoncent à exécuter des tests dans un environnement de production pour des raisons de sécurité. Par conséquent, les testeurs se retrouvent avec des environnements limités pour les tests de performance. Ces tests comportent des risques supplémentaires.
Nous avons utilisé l'apprentissage automatique pour répondre à ces problématiques. Le résultat de ces expériences a été documenté dans ce livre blanc.
Procédure de l'apprentissage automatique
Pour mettre en œuvre l'apprentissage automatique pour les tests de performance, nous allons aborder les étapes de la création et de l'évaluation d'un modèle d'apprentissage automatique :
Pour commencer, nous devons identifier les entrées et définir les sorties attendues. Le temps de réponse est un paramètre critique qui doit être surveillé de près pendant les tests de performance. Ainsi, dans cet exemple, nous allons prédire le temps de réponse d'une page/requête en utilisant comme entrées : Échantillons totaux, Octets envoyés, Octets reçus, et Nom de la requête.
Sortie (étiquette) -> Temps de réponse
Entrée (Caractéristique) -> Sujets, Octets envoyés, Octets reçus, Requête/Page
Génération de données de formation
La première étape, la plus essentielle, consiste à collecter des données pertinentes correspondant à l'énoncé de notre problème. Nous avons généré des données d'entrée en exécutant des tests de performance à l'aide de JMeter dans un environnement de test contrôlé (pour éliminer les interférences dues aux performances du serveur ou au trafic réseau supplémentaire).
Les rapports de performance générés par ces tests contiennent les données suivantes : Octets envoyés, octets, sujets, nom de la requête et temps de réponse.
Le test de performance documenté ci-dessous a généré 490 enregistrements pour chaque demande de page.
Choix d'un modèle d'apprentissage automatique
Le processus de formation d'un modèle d'apprentissage automatique consiste à assigner un algorithme (l'algorithme d'apprentissage) pour apprendre à partir des données de formation. Le modèle d'apprentissage automatique est le résultat créé par le processus de formation.
Nous avons installé la bibliothèque d'apprentissage automatique et y avons ajouté nos données de test de performance. La bibliothèque a évalué divers algorithmes avec des calculs et des paramètres variables pour identifier le modèle le plus performant.
Pour nos données de test, les algorithmes suivants ont été évalués. L'algorithme FastTreeRegression a donné la meilleure précision, soit 82,3 %.
Évaluation du modèle
L'évaluation du modèle vise à estimer la précision de généralisation d'un modèle sur la base de données futures (non vues/hors échantillon)Maintenant que nous avons un modèle d'apprentissage automatique, nous l'avons utilisé pour prédire le temps de réponse pour un nouvel ensemble de données (qui n'a pas été utilisé pour la formation du modèle). Les résultats de ce modèle ont été testés par rapport aux données réelles, et l'écart était dans les limites acceptables.
Caractéristique (Entrée) Sortie (étiquette)
Nom de la demande Échantillons totaux par page Octets Octets envoyés Temps de réponse prédit Temps de réponse réel Écart (millisecondes)
L'écart par rapport aux valeurs réelles est de quelques millisecondes pour les prédictions faites par l'algorithme. Il a donc réussi à évaluer les performances de l'application sans avoir à créer une réplique de l'environnement de production.
Le comportement de chaque application varie en fonction de la charge. La génération d'un modèle optimal dépend donc des données recueillies lors de tests de performance. En fonction du comportement de l'application, nous devons estimer quelle partie des données fournira les résultats les plus précis. C'est pourquoi il est essentiel de générer une série de données test pour une meilleure prédiction.
Références
https : //www.agileconnection.com/presentation/machine-learning-and-data-science-quality-and-performance-engineering
https : //www.datasciencecentral.com/profiles/blogs/performance-testing-training
https : //data-flair.training/blogs/machine-learning-applications/