Traducteur | Zhu Xianzhong
Reviewer | Sun Shujuan
De manière générale, les tests logiciels sont souvent relativement simples : chaque entrée => sortie connue. Cependant, tout au long de l’histoire des tests logiciels, vous constaterez que de nombreux tests restent souvent au niveau des conjectures. En d'autres termes, lors des tests, le développeur imagine le processus de fonctionnement de l'utilisateur, estime la charge possible et analyse le temps que cela prendra, puis exécute le test et compare les résultats actuels avec la réponse de base. Si nous constatons qu’il n’y a pas de régression, alors le plan de build actuel est considéré comme correct, alors continuez les tests suivants ; S'il y a une régression, renvoyez-la. La plupart du temps, nous connaissons déjà le résultat, même s’il doit être mieux défini – les limites de la régression sont claires et pas si floues. En fait, c’est là qu’interviennent les systèmes d’apprentissage automatique (ML) et d’analyse prédictive, mettant fin à l’ambiguïté.
Une fois le test terminé, l'ingénieur de performance ne regarde pas seulement la moyenne arithmétique et la moyenne géométrique des résultats, il examine également les données en pourcentage pertinentes. Par exemple, lorsque le système est en cours d'exécution, 10 % des requêtes les plus lentes sont souvent causées par des erreurs système. Cette erreur créera une condition qui affecte toujours la vitesse du programme.
Bien que nous puissions associer manuellement les attributs disponibles dans les données, ML peut lier les attributs de données plus rapidement que vous. Après avoir identifié les conditions à l'origine de 10 % des requêtes incorrectes, les ingénieurs performances peuvent créer des scénarios de test pour reproduire le comportement. L'exécution de tests avant et après un correctif peut aider à confirmer que le correctif a été corrigé.
Figure 1 : Confiance globale dans les indicateurs de performance
L'apprentissage automatique aide à promouvoir le développement de logiciels et à rendre la technologie de développement en question plus forte et plus conviviale dans les besoins différents domaines et industries. Nous pouvons exposer des modèles de causalité en alimentant les données des pipelines et des environnements dans des algorithmes d'apprentissage profond. Les algorithmes d'analyse prédictive combinés aux méthodes d'ingénierie des performances permettent un débit plus efficace et plus rapide, obtiennent des informations sur la manière dont les utilisateurs finaux utilisent les logiciels dans des scénarios naturels et aident les développeurs à réduire la probabilité que des produits défectueux soient utilisés dans des environnements de production. En identifiant les problèmes et leurs causes dès le début, vous pouvez les corriger dès le début du cycle de développement et éviter tout impact sur la production. Dans l’ensemble, voici quelques façons d’exploiter l’analyse prédictive pour améliorer les performances des applications.
Le « Big Data » fait généralement référence à un ensemble de données. Oui, il s’agit d’un grand ensemble de données, la vitesse augmente rapidement et le contenu change considérablement. L’analyse de ces données nécessite des méthodes spécialisées afin que nous puissions en extraire des modèles et des informations. Ces dernières années, les améliorations apportées au stockage, aux processeurs, au parallélisme des processus et à la conception des algorithmes ont permis aux systèmes de traiter de grandes quantités de données dans un délai raisonnable, permettant ainsi une utilisation plus large de ces méthodes. Pour obtenir des résultats significatifs, vous devez assurer la cohérence des données.
Par exemple, chaque projet doit utiliser le même système de classement, donc si un projet utilise 1 comme valeur clé et qu'un autre utilise 5 - tout comme lorsque les gens utilisent "DEFCON 5" pour signifier "DEFCON 1" ; alors les valeurs doit être normalisé avant le traitement. Les algorithmes prédictifs se composent d’algorithmes et des données qu’ils alimentent, et le développement de logiciels génère de grandes quantités de données qui, jusqu’à récemment, restaient inutilisées, attendant d’être supprimées. Cependant, les algorithmes d'analyse prédictive peuvent traiter ces fichiers pour poser et répondre à des questions basées sur ces données pour des modèles que nous ne pouvons pas détecter, tels que :
Ces questions et leurs réponses correspondent à la vocation de l'analyse prédictive : mieux comprendre ce qui est susceptible de se produire.
Un autre élément majeur de l'analyse prédictive est l'algorithme que vous devez choisir ou mettre en œuvre avec soin. Il est crucial de commencer simplement, car les modèles ont tendance à devenir de plus en plus complexes, de plus en plus sensibles aux modifications des données d'entrée et à fausser potentiellement les prévisions. Ils peuvent résoudre deux types de problèmes : la classification et la régression (voir Figure 2).
Figure 2 : Classification et régression
Les réseaux de neurones apprennent par des exemples et utilisent des données historiques et des données actuelles pour prédire les valeurs futures. Leur architecture leur permet d’identifier des relations complexes cachées dans les données, reproduisant ainsi la façon dont notre cerveau détecte des modèles. Ils se composent de nombreuses couches qui acceptent les données, calculent des prédictions et fournissent le résultat sous la forme d’une prédiction unique.
Un arbre de décision est une méthode analytique qui présente les résultats dans une série d'options « si/alors » pour prédire les risques et les avantages potentiels d'une option spécifique. Il peut résoudre tous les problèmes de classification et répondre à des questions complexes.
Comme le montre la figure 3, un arbre de décision est similaire à un arbre descendant généré par un algorithme capable d'identifier différentes manières de diviser les données en partitions en forme de branche pour illustrer les décisions futures et aider à identifier le chemin des décisions.
Si le chargement prend plus de trois secondes, une branche dans l'arborescence peut être celle d'un utilisateur qui a abandonné son panier. En dessous, une autre branche peut indiquer s’il s’agit de femelles. Une réponse « oui » fait monter les enjeux, car l'analyse montre que les femmes sont plus susceptibles de faire des achats impulsifs, et ce retard peut conduire à la rumination.
Figure 3 : Exemple d'arbre de décision
La régression est l'une des méthodes statistiques les plus populaires. Ceci est crucial lors de l’estimation des chiffres, tels que le nombre de ressources supplémentaires que nous devons ajouter à chaque service lors de la vente du Black Friday. De nombreux algorithmes de régression sont conçus pour estimer les relations entre les variables et trouver des modèles clés dans des ensembles de données vastes et mixtes, ainsi que les relations entre elles. Cela va des simples modèles de régression linéaire (calcul d'une fonction droite qui s'adapte aux données) à la régression logistique (calcul d'une courbe) (Figure 4).
Régression linéaire et logistiqueComparaison globale | |
Régression linéaire |
Régression logistique |
est utilisée pour définir des valeurs dans une plage continue, comme le risque de pics de trafic d'utilisateurs dans les prochains mois. |
Il s'agit d'une méthode statistique où les paramètres sont prédits sur la base d'anciens ensembles. Cela fonctionne mieux pour la classification binaire : ensembles de données avec y=0 ou 1, où 1 représente la classe par défaut différente. Son nom vient de sa fonction de conversion ( est une fonction logique ) . |
Il est représenté par y=a+bx, où x est l'ensemble d'entrées utilisé pour déterminer la sortie y. Les coefficients a et b sont utilisés pour quantifier la relation entre x et y, où a est l'ordonnée à l'origine et b est la pente de la droite. |
Il est représenté par la fonction logistique : où , β0 est l'interception, β 1 est le tarif . Il utilise les données d'entraînement pour calculer des coefficients qui minimisent l'erreur entre les résultats prévus et réels. |
L'objectif est d'ajuster la ligne droite la plus proche de la plupart des points, réduisant ainsi la distance ou l'erreur entre y et la ligne droite. |
Il forme une courbe en forme de S où un seuil est appliqué pour convertir les probabilités en classifications binaires. |
Figure 4 : Régression linéaire vs régression logistique
Il s'agit de méthodes d'apprentissage supervisé car l'algorithme résout des propriétés spécifiques. L'apprentissage non supervisé est utilisé lorsque vous n'avez pas de résultat spécifique en tête, mais que vous souhaitez identifier des modèles ou des tendances possibles. Dans ce cas, le modèle analyse autant de combinaisons de caractéristiques que possible pour trouver des corrélations sur lesquelles les humains peuvent agir.
Figure 5 : Apprentissage supervisé ou non supervisé
L'utilisation d'algorithmes précédents pour mesurer les perceptions des consommateurs à l'égard des produits et des applications rend l'ingénierie de la performance plus centrée sur le consommateur. Une fois toutes les informations collectées, elles doivent être stockées et analysées grâce à des outils et algorithmes appropriés. Ces données peuvent inclure des journaux d'erreurs, des scénarios de test, des résultats de tests, des événements de production, des fichiers journaux d'application, des documents de projet, des journaux d'événements, des traces, etc. Nous pouvons ensuite appliquer cela aux données pour obtenir diverses informations :
Cette technologie prend en charge une approche de la qualité axée sur la gauche, vous permettant de prédire le temps qu'il faudra pour effectuer les tests de performance, le nombre de défauts pouvant être identifiés et le nombre de défauts pouvant en résulter. en production, obtenant ainsi une meilleure couverture des tests de performances et créant une expérience utilisateur réaliste. Les problèmes d’utilisabilité, de compatibilité, de performances et de sécurité peuvent être évités et corrigés sans impact sur les utilisateurs.
Voici quelques exemples des types d'informations qui peuvent contribuer à améliorer la qualité :
Une fois que vous savez cela, vous pouvez apporter des modifications et créer des tests pour éviter des problèmes similaires plus rapidement.
Les ingénieurs logiciels ont fait des centaines d'hypothèses depuis l'aube de la programmation. Mais les utilisateurs numériques d’aujourd’hui en sont plus conscients et moins tolérants aux erreurs et aux échecs. D’un autre côté, les entreprises s’efforcent également d’offrir des expériences utilisateur plus attrayantes et plus raffinées grâce à des services sur mesure et à des logiciels complexes de plus en plus difficiles à tester.
Aujourd'hui, tout doit fonctionner de manière transparente et prendre en charge tous les navigateurs, appareils mobiles et applications populaires. Un accident de quelques minutes peut causer des milliers, voire des millions de dollars de dégâts. Pour éviter que des problèmes ne surviennent, les équipes doivent intégrer des solutions d'observabilité et l'expérience utilisateur tout au long du cycle de vie du logiciel. La gestion de la qualité et des performances de systèmes complexes nécessite bien plus que la simple exécution de scénarios de test et de tests de charge. Les tendances peuvent vous aider à déterminer si une situation est sous contrôle, s’améliore ou se détériore, et à quelle vitesse. La technologie d'apprentissage automatique peut aider à prédire les problèmes de performances afin que les équipes puissent apporter des ajustements correctifs. Enfin, concluons en citant une citation de Benjamin Franklin : "Mieux vaut prévenir que guérir." une université de Weifang et un vétéran de l'industrie de la programmation indépendante.
Titre original :Performance Engineering Powered by Machine Learning
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!