Ticker

6/recent/ticker-posts

L’apprentissage automatique change l’avenir des tests logiciels

 La majorité des équipes de développement de logiciels croient qu’elles ne testent pas bien. Ils comprennent que l’effet des défauts de qualité est important, et ils investissent massivement dans l’assurance de la qualité, mais ils n’obtiennent toujours pas les résultats qu’ils veulent. Cela n’est pas dû à un manque de talent ou d’effort - la technologie soutenant les tests logiciels n’est tout simplement pas efficace. L’industrie a été mal desservie.

Il ne peut pas y avoir une version réussie jusqu’à ce que le logiciel a été correctement et soigneusement testé, et les tests peuvent parfois prendre des ressources importantes compte tenu de la quantité de temps et d’efforts humains nécessaires pour faire le travail correctement. Ce besoin béant commence tout juste à être comblé.

L’apprentissage automatique (ML), qui a perturbé et amélioré tant d’industries, commence tout juste à faire son chemin dans les tests logiciels. Les têtes tournent, et pour cause: l’industrie ne sera plus jamais la même. Alors que l’apprentissage automatique est toujours en croissance et en évolution, l’industrie du logiciel l’emploie de plus en plus, et son impact commence à changer considérablement la façon dont les tests logiciels seront effectués à mesure que la technologie s’améliorera.

Examinons l’état actuel des choses dans les tests logiciels, passons en revue la façon dont l’apprentissage automatique s’est développé, puis explorons comment les techniques ml changent radicalement l’industrie des tests logiciels.


Quelques antécédents sur les tests logiciels

Le test logiciel est le processus d’examen si le logiciel fonctionne comme il a été conçu pour. Les tests d’assurance qualité fonctionnelle (QA), la forme de test qui garantit que rien n’est fondamentalement cassé, sont exécutés de trois façons : unité, API et test de bout en bout.

Le test unitaire est le processus de s’assurer qu’un bloc de code donne la sortie correcte à chaque entrée. API teste les interfaces d’appel entre les modules de code pour s’assurer qu’ils peuvent communiquer. Ces tests sont petits, discrets et destinés à assurer la fonctionnalité de morceaux de code hautement déterministes.

Le test de bout en bout (E2E) permet de s’assurer que l’ensemble de l’application fonctionne lorsqu’elle est mise en place et fonctionne dans la nature. E2E teste comment tout le code fonctionne ensemble et comment l’application fonctionne comme un seul produit. Les testeurs interagiront avec le programme comme un consommateur le ferait grâce à des tests de base (où ils testent ce qui est fait à plusieurs reprises) et des tests de bord (où ils testent des interactions inattendues). Ces tests permettent de découvrir quand l’application ne répond pas de la façon dont un client le voudrait, ce qui permet aux développeurs d’effectuer des réparations.

Les tests E2E conventionnels peuvent être manuels ou automatisés. Les tests manuels obligent les humains à cliquer sur l’application chaque fois qu’elle est testée. C’est long et sujet aux erreurs. L’automatisation des tests consiste à écrire des scripts pour remplacer les humains, mais ces scripts ont tendance à fonctionner de manière incohérente, et nécessitent un énorme temps de maintenance à mesure que l’application évolue. Les deux méthodes sont coûteuses et reposent fortement sur l’intuition humaine pour réussir. L’ensemble de l’espace d’essai E2E est suffisamment dysfonctionnel pour être perturbé par les techniques d’IA/ML.

Qu’est-ce que l’apprentissage automatique?

Alors que l’apprentissage automatique est souvent utilisé synonyme d’IA, ils ne sont pas strictement la même chose. L’apprentissage automatique utilise des algorithmes pour prendre des décisions, et il utilise les commentaires de l’entrée humaine pour mettre à jour ces algorithmes.

Un bon exemple est la vision automatique. Une application de vision automatique peut identifier quelque chose comme un chat alors qu’en fait c’est un chien. Un humain le corrige (en lui disant, « non, c’est un chien ») et l’ensemble des algorithmes qui décident si quelque chose est un chat ou une mise à jour de chien basée sur cette rétroaction. L’apprentissage automatique est conçu pour prendre de meilleures décisions au fil du temps en fonction de ces commentaires continus des testeurs et des utilisateurs.

Machine Learning a eu du mal à atteindre le monde des tests E2E en raison du manque de données et de commentaires. Les tests E2E sont généralement construits grâce à l’intuition humaine sur ce qui est important à tester, ou quelles fonctionnalités semblent importantes ou risquées. De nouvelles applications utilisent les données d’analyse de produits pour informer et améliorer l’automatisation des tests, ouvrant la porte à des cycles d’apprentissage automatique afin d’accélérer considérablement la maintenance et la construction des tests.

Alors, quel est l’avenir des tests logiciels?

L’avenir des tests logiciels est des tests plus rapides, des résultats plus rapides, et surtout, des tests qui apprennent ce qui compte vraiment pour les utilisateurs. En fin de compte, tous les tests sont conçus pour s’assurer que l’expérience utilisateur est merveilleuse. Si nous pouvons enseigner à une machine ce que les utilisateurs se soucient, nous pouvons tester mieux que jamais.

Traditionnellement, les tests accusent un retard de développement, tant en vitesse qu’en utilité. L’automatisation des tests est souvent un point faible pour les équipes d’ingénierie. ML peut aider à en faire une force.

Ce que ML signifie pour l’avenir du test logiciel, c’est l’autonomie. Les machines intelligentes pourront, à l’aide des données de l’utilisation actuelle de l’application et de l’expérience de test passée, construire, maintenir, exécuter et interpréter des tests sans entrée humaine.

Il est probable que tous les aspects du développement de logiciels ne devraient pas être automatisés. Compte tenu d’une longue tradition de tests E2E étant principalement entraînée par l’intuition humaine et la main-d’œuvre, l’industrie dans son ensemble peut d’abord résister à la remise du processus aux machines. Dans pratiquement toutes les entreprises, les initiés soutiennent que les machines ne pourraient jamais faire le travail d’un humain. Ceux qui ont résisté à la montée de ML et doublé sur le travail humain se retrouvent souvent laissés pour compte.

Une histoire familière se déroule dans le monde des tests : l’automatisation des tests pilotée par ml n’en est qu’à ses balbutiements aujourd’hui, mais elle n’est probablement qu’à quelques années de prendre le contrôle de l’industrie.

Tests autonomes de bout en bout

L’avantage principal de Machine Learning dans les tests E2E est de pouvoir tirer parti de données d’analyse de produits très complexes pour identifier et anticiper les besoins des utilisateurs. Les tests pilotés par ML sont capables de regarder chaque interaction utilisateur sur une application Web, de comprendre les trajets communs (et de bord) que les utilisateurs traversent, et de s’assurer que ces cas d’utilisation fonctionnent toujours comme prévu.

Si cette machine teste de nombreuses applications, elle peut apprendre de toutes ces applications pour anticiper l’impact des nouvelles modifications apportées à une application sur l’expérience utilisateur. Grâce à ces données, les tests pilotés par ml peuvent déjà construire des tests meilleurs et plus significatifs que les humains.

Les tests développés par l’automatisation pilotée par ML sont construits et maintenus plus rapidement et beaucoup moins cher que l’automatisation des tests construite par les humains. Ces tests mènent à des déploiements beaucoup plus rapides (et de meilleure qualité) et sont une aubaine pour le budget de n’importe quel VP Engineering.

Qu’en est-il des testeurs?

Qu’en est-il des gens qui font actuellement ces travaux?

Les ingénieurs de qualité ont encore un rôle majeur à jouer dans le développement de logiciels. La façon la plus efficace d’assurer la qualité dans les logiciels est d’intégrer le contrôle de la qualité dans la conception et le développement du code lui-même. Le test n’existe que parce que ce processus est imparfait.

Comme ML prend en charge le fardeau des tests E2E auprès des ingénieurs d’essai, ces ingénieurs peuvent utiliser leur expertise de concert avec les ingénieurs logiciels pour construire du code de haute qualité à partir de la base. De nos propres entrevues sur la question, il semble que la plupart des ingénieurs de qualité préféreraient de loin cela à broyer loin à l’entretien d’essai toute la journée.

L’avenir s’annonce prometteur

ML offre un processus de test logiciel plus rationalisé et plus efficace. Il établit un processus mieux équipé pour gérer le volume de développements et créer les tests spécialisés nécessaires. Les tests logiciels intelligents signifient des tests basés sur des données, des résultats précis et un développement industriel innovant.

Nous espérons que cet article vous a aidé à vous préparer à l’avenir des tests logiciels et les choses étonnantes que l’apprentissage automatique a en réserve pour notre monde.