« C’est l’application la plus étonnante de l’apprentissage automatique que j’aie jamais vue.
Mike Krieger, cofondateur d’Instagram.
Les propos de Mike Krieger ne sont pas des hyperboles. Si la ML est capable de réaliser des choses remarquables en termes d’analyse et de compréhension des données, GitHub Copilot change totalement la donne en raison de l’utilité potentielle qu’il peut offrir aux développeurs de produits du monde entier.
Les copilotes de codage et l’IA générative aident les équipes à débloquer d’énormes avantages, tels que l’accélération du cycle de vie du développement logiciel à des vitesses jusqu’ici inimaginables. Cependant, l’impact de la technologie sur la RPA et les tests de logiciels sont deux des frontières les plus excitantes de cette technologie étonnante.
Dans cet article, nous examinerons comment les copilotes de codage et l’IA générative ont modifié les mondes des tests logiciels et de la RPA à l’heure actuelle, avant d’explorer leur impact futur sur la technologie.
Les copilotes et l’IA générative dans
le développement de logiciels : Un abécédaire
L’IA générative et les copilotes de codage sont relativement nouveaux dans le paysage du développement logiciel. Avant d’évoquer leur impact sur l’espace, il convient d’examiner leur parcours et leur mode de fonctionnement.
1. Les codeurs automobiles alimentés par l’IA
Les grands modèles de langage (LLM) se sont remarquablement améliorés au cours des dernières années. L’augmentation exponentielle de la taille des ensembles de données et de la puissance de calcul s’est accompagnée d’une amélioration de la qualité des résultats.
De nombreux secteurs verticaux peuvent bénéficier des LLM. La génération de textes, d’images, de vidéos et d’autres formes de médias est l’un des sujets les plus traités. Toutefois, si ces cas d’utilisation sont impressionnants, les implications pour les développeurs sont peut-être bien plus intéressantes.
Il existe un certain nombre d’autocodeurs LLM sur le marché. Cependant, GitHub CoPilot est peut-être le plus connu et le plus abouti. Cela s’explique en grande partie par le fait qu’il est formé sur le dépôt GitHub. Il a accès à des millions d’exemples de code source ouvert, de meilleures pratiques, d’architecture d’application et autres, ce qui lui permet de fournir des résultats polyvalents et de haute qualité.
2. Comment fonctionnent les copilotes de codage ?
L’une des façons les plus simples d’expliquer le fonctionnement des copilotes de codage est d’examiner le produit phare dans ce domaine, GitHub CoPilot. L’application est basée sur le modèle ChatGPT-3 d’OpenAi.
Tout comme ChatGPT et d’autres LLM similaires, CoPilot est basé sur des milliards de paramètres. Pendant le développement de ChatGPT-3, OpenAI a commencé à construire un programme de codage dédié appelé OpenAI Codex. Microsoft a acheté un accès exclusif au produit.
Cependant, l’élément clé ici est que Microsoft possédait déjà GitHub. Si vous êtes un programmeur, vous connaissez GitHub. Il s’agit en fait d’une plateforme web utilisée pour le contrôle des versions et la collaboration dans les projets de développement de logiciels. Ils ont formé le codex OpenAI sur la bibliothèque GitHub qui contient des millions de lignes de code public à source ouverte.
CoPilot utilise l’apprentissage automatique pour trouver des modèles et des relations entre les lignes de code. Tout comme ChatGPT, il examine un mot ou une ligne et calcule la probabilité de ce qui devrait suivre sur la base d’un vaste référentiel de données historiques.
La puissance des copilotes IA réside dans leur capacité à suggérer des extraits de code au fur et à mesure que les développeurs les modifient. Il s’agit d’une sorte d’autocomplétion suralimentée pour le codage. Lorsque les codeurs entrent une ligne de code, le LLM compare le début de ce code avec son immense bibliothèque de projets antérieurs. À partir de là, il propose des lignes probabilistes et des lignes de code inédites.
Les avantages évidents sont que les développeurs peuvent gagner un temps considérable grâce à cette autocomplétion. Il améliore la productivité et, dans de nombreux cas, la précision du code.
3. Qu’en est-il de l’IA générative pour le codage et le développement ?
Comme le montre l’histoire de CoPilot, l’IA générative et les copilotes ont des racines similaires. Il s’agit de deux technologies qui utilisent les probabilités statistiques pour prédire les besoins des utilisateurs sur la base d’informations imputées.
Cependant, la grande différence entre le logiciel de copilotage et l’IA générative est que cette dernière est basée sur des invites. En bref, cela signifie que les utilisateurs entrent un ensemble d’instructions écrites dans la machine et que celle-ci produit un contenu. Comme le savent tous ceux qui ont utilisé ChatGPT ou des applications similaires, ce résultat peut prendre la forme de texte, d’images, de vidéo ou de code.
Ainsi, bien que les méthodes utilisées par les codeurs pour parvenir à un codage automatisé soient différentes, nous pouvons les placer dans un cadre similaire de codage automatisé ou génératif assisté par l’IA.
L’évolution des tests de logiciels
Les tests de logiciels sont réactifs et en constante évolution. En l’espace de quelques décennies, il a évolué et s’est transformé pour répondre à de nouvelles exigences et utiliser les progrès technologiques.
1. Tests manuels :
Les premiers jours des tests de logiciels ont été marqués par des tests manuels. Ce type de test était coûteux et prenait beaucoup de temps, car il exigeait des experts en assurance qualité qu’ils passent les logiciels au peigne fin en développant une série de cas de test, en les exécutant et en enregistrant les résultats, en programmant des correctifs et en répétant le processus.
S’assurer que tous les scénarios et situations possibles étaient couverts par ces tests constituait un défi majeur, et si l’on ajoute à cela le temps et les coûts nécessaires, les tests manuels étaient gourmands en ressources. Il était également très sensible aux erreurs humaines, ce qui était amplifié par les options de distribution limitées, ce qui signifiait qu’il était difficile de corriger rapidement les bogues non découverts.
2. Essais scénarisés :
Les tests scriptés ont représenté un grand pas en avant pour la communauté de l’assurance qualité. Au lieu d’examiner manuellement le code et les scénarios de test, les développeurs ont pu écrire des programmes capables de tester les logiciels automatiquement. Les grands avantages sont que les tests sont devenus plus efficaces et moins sujets à l’erreur humaine. Toutefois, pour y parvenir, il a fallu une planification et un codage compétents, précis et longs à mettre en œuvre pour assurer une couverture complète.
3. Automatisation des tests :
L’automatisation des tests était la prochaine évolution des tests. Des outils comme ZAPTEST ont permis d’offrir aux codeurs tous les avantages des tests scriptés, mais avec une interface sans code. Là encore, les principaux avantages sont le gain de temps, les tests réutilisables et adaptables, les tests de l’interface utilisateur et de l’API, ainsi que les tests multiplateformes et multiappareils.
4. Tests basés sur les données :
Les tests pilotés par les données ont permis de résoudre le problème des tests de logiciels qui traitent différents ensembles de données. Il s’agit là encore d’une forme d’automatisation des tests, mais cette méthode implique la création de scripts de test et leur exécution sur des ensembles de données assignés. Ce type de test a permis aux développeurs de travailler plus rapidement, d’isoler les tests et de réduire le temps passé à répéter les cas de test.
5. Tests génératifs de l’IA :
Les tests d’IA générative sont la dernière innovation en matière de tests de logiciels. En utilisant les LLM, les équipes d’assurance qualité peuvent créer des cas de test et des données de test qui contribuent à accélérer le processus de test. Ces cas de test sont très flexibles et modifiables, ce qui permet aux développeurs de réutiliser et de réorienter les tests et d’augmenter considérablement la portée des tests.
L’utilisation actuelle des copilotes et des
L’IA générative dans les tests de logiciels et la RPA
L’IA générative et les copilotes ont eu un impact important sur les tests de logiciels. Cependant, plutôt que de remplacer purement et simplement les codeurs, ces outils ont contribué à renforcer les testeurs. En bref, ils permettent aux développeurs d’être plus rapides et plus efficaces et, dans de nombreux cas, d’améliorer la qualité des tests.
L’enquête
Enquête sur les développeurs de Stack Overflow en 2023
donne un aperçu de l’utilisation actuelle des outils d’IA au sein de la communauté des développeurs de logiciels. L’une des parties les plus intéressantes de l’enquête indique que si un peu plus de la moitié des développeurs se disent intéressés par les outils d’IA pour les tests de logiciels, moins de 3 % d’entre eux déclarent faire confiance à ces outils. De plus, seulement 1 personne sur 4 a indiqué qu’elle utilisait actuellement des outils d’IA pour tester des logiciels.
Ce qui est intéressant dans ces statistiques, c’est qu’elles montrent que l’utilisation des outils d’IA n’est pas encore très répandue et que les premiers à les adopter peuvent encore en tirer un avantage.
1. Cas d’utilisation de l’IA copilote et générative dans les tests de logiciels et la RPA
Les copilotes et l’IA générative ont un impact sur tous les domaines du développement logiciel. Voici quelques-unes des façons dont la technologie peut contribuer aux tests de logiciels et à la RPA.
Analyse des besoins
L’analyse des besoins est un élément clé du cycle de développement des logiciels. Le processus consiste à comprendre les exigences des parties prenantes et les différentes caractéristiques nécessaires à la construction d’un logiciel. L’IA générative peut aider les équipes dans l’idéation en proposant de nouvelles idées et perspectives.
Planification des tests
Une fois que les exigences des tests sont bien comprises, les équipes d’assurance qualité doivent les répartir dans un calendrier afin de garantir une couverture adéquate des tests. Ce type de travail nécessite de l’expertise et de l’expérience, mais Generative AI peut soutenir les équipes à l’aide d’exemples et de guides, et leur recommander des outils particuliers et les meilleures pratiques en fonction de leurs besoins spécifiques.
Création de cas de test
Les équipes d’assurance qualité peuvent utiliser les LLM pour analyser le code, les exigences des utilisateurs et les spécifications des logiciels afin de comprendre les relations sous-jacentes du système. Une fois que l’IA a compris les entrées et les sorties ainsi que les comportements attendus du logiciel, elle peut commencer à élaborer des scénarios d’essai qui testeront le logiciel.
Les avantages ne se limitent pas à un gain de temps et à un codage manuel. La création de cas de test par l’IA peut également conduire à une couverture plus complète parce qu’elle peut explorer des domaines que les ingénieurs d’assurance qualité n’auraient pas envisagés, ce qui conduit à des constructions plus fiables.
Recherche et résolution de bogues
L’apprentissage automatique permet aux professionnels de l’assurance qualité de réduire considérablement le temps nécessaire pour localiser et résoudre les bogues. Dans les tests de logiciels, de nombreux bogues sont faciles à localiser. Cependant, dans de nombreux cas, il s’agit d’un processus laborieux et fastidieux. L’IA générative peut effectuer des vérifications en une fraction du temps des travailleurs manuels et aider à mettre en évidence les bogues les plus tenaces. De plus, ces outils d’IA peuvent également résoudre les bogues qu’ils identifient, ce qui fait gagner un temps infini aux équipes d’assurance qualité.
Tests de l’interface utilisateur
Les outils d’IA générative peuvent simuler une série de comportements d’utilisateurs et d’interactions avec des systèmes logiciels. Ces méthodes peuvent donner aux équipes de développement l’assurance que leur interface peut gérer un large éventail d’utilisations homme-ordinateur. De plus, l’IA générative peut également analyser les données de l’interface utilisateur et les cartes thermiques et faire des suggestions sur la manière d’améliorer l’interface utilisateur et de la rendre plus conviviale.
L’avenir des copilotes et l’IA générative
dans le domaine des tests de logiciels et de la RPA
Si l’utilisation actuelle des copilotes et de l’IA générative dans l’automatisation des logiciels est déjà passionnante, l’avenir est encore plus prometteur.
L’avenir du copilote et de l’IA générative dépend des améliorations qui peuvent être apportées aux produits. Une étude récente de l’université de Purdue, intitulée Qui répond le mieux ? Une analyse approfondie des réponses de ChatGPT et de Stack Overflow aux questions de génie logiciel souligne certaines des limites des modèles d’IA générative.
Les chercheurs ont soumis à ChatGPT plus de 500 questions provenant de Stack Overflow. L’outil d’IA a répondu de manière inexacte à plus de la moitié d’entre eux. Il est important de noter que l’un des problèmes les plus importants relevés par les chercheurs est que l’IA échoue le plus souvent parce qu’elle ne comprend pas correctement les questions. Ce détail souligne l’importance de l’ingénierie rapide dans le cadre de l’IA générative.
En outre, Google et Amazon ont réalisé cette année des tests indépendants pour évaluer la qualité des outils d’IA générative dans le cadre de questions d’entretien. Dans les deux cas, l’outil a réussi à répondre suffisamment bien aux questions du test pour obtenir le poste, comme le rapporte
CNBC
et
Business Inside
respectivement.
Il est donc clair que nous sommes à un stade de cette technologie où le potentiel est là, mais où il reste encore quelques petites choses à régler. L’ampleur des améliorations apportées à ces outils au cours des dernières années nous permet de penser qu’ils atteindront le niveau requis, et probablement plus tôt que prévu.
Nous pouvons maintenant nous pencher sur certains des domaines dans lesquels ces technologies auront un impact sur l’avenir des tests de développement de logiciels.
1. Hyperautomation
L’hyperautomatisation décrit une destination dans l’évolution de l’entreprise où chaque processus qui peut être automatisé le sera. Il s’agit d’une approche holistique de la productivité qui est fortement interconnectée.
En termes de développement de logiciels, il n’est pas difficile d’imaginer un système centralisé avec une supervision des exigences des processus d’entreprise. Le système comprendra et identifiera les besoins et les efficacités et identifiera constamment les domaines qui doivent être améliorés grâce à la technologie.
À mesure que les entreprises évoluent, ces systèmes centralisés utiliseront l’IA générative pour créer des applications qui résoudront automatiquement les goulets d’étranglement et les inefficacités, ou qui confieront peut-être des tâches particulières à des ingénieurs.
2. Conception d’architectures logicielles
Avec suffisamment de données, les outils d’IA pourraient comprendre les meilleures pratiques en matière d’architecture logicielle et trouver des moyens d’améliorer ces conceptions pour une efficacité maximale. L’apprentissage automatique consiste à trouver des modèles et des relations qui échappent à l’esprit humain.
Si les outils d’IA ont une connaissance suffisante d’une variété d’applications, nous pouvons leur demander d’adapter les architectures précédentes à de nouvelles exigences, ce qui conduit à des constructions plus efficaces ou même à des idées qui n’auraient pas été envisagées autrement.
3. Modernisation des systèmes existants
Bien qu’aucun logiciel ne soit jamais parfait, il existe de nombreux outils qui font toujours un excellent travail et qui sont si profondément ancrés dans l’infrastructure d’une entreprise qu’il est difficile de les remplacer. L’adaptation de ces systèmes peut être une corvée, surtout s’ils ont été écrits à l’aide d’un code logiciel qui n’est plus à la mode.
À l’avenir, les outils d’IA générative seront capables de convertir ce code dans le langage du jour, ce qui permettra aux équipes de conserver leurs systèmes existants et, dans de nombreux cas, de les améliorer.
4. Améliorer le développement « low-code » et « no-code ».
L’un des défis de l’automatisation des tests logiciels au moyen d’outils d’IA générative que nous avons identifiés ci-dessus était une situation où le codeur ne disposait pas des connaissances et de l’expérience nécessaires pour vérifier le résultat.
Les copilotes d’IA contribueront à améliorer les outils à code réduit en faisant de meilleures suggestions qui conduiront à des applications robustes. Des outils de test sophistiqués permettront aux opérateurs humains de laisser libre cours à leur créativité tout en validant constamment leur travail et en ouvrant la voie à des professionnels non techniques pour créer les applications dont ils ont besoin.
Avantages de l’IA générative dans les tests de logiciels
L’utilisation de l’IA générative pour les tests de logiciels présente de nombreux avantages qui en font une option intéressante pour les équipes de développement qui souhaitent travailler plus rapidement sans compromettre la qualité.
1. Accélérer le cycle de développement des logiciels
Les développeurs sont soumis à une pression constante et doivent travailler de longues heures pour s’assurer que les logiciels et les nouvelles fonctionnalités sont mis sur le marché en temps voulu. Si les méthodologies Agile/DevOps ont permis de rendre le développement plus efficace, il reste encore des étapes individuelles du développement qui peuvent bénéficier d’une rationalisation plus poussée.
Les outils d’IA générative permettent aux équipes de test d’aborder les différentes étapes du cycle de développement durable, de la création de prototypes aux tests d’interface utilisateur.
2. Détection complète des bogues
L’une des applications les plus puissantes de l’IA dans le domaine des tests de logiciels réside dans la capacité de la technologie à comparer de vastes ensembles de données. Les outils de ML peuvent analyser de vastes ensembles de données (y compris le code) pour constituer un référentiel d’informations et de modèles attendus.
Lorsque les développeurs livrent le code, ils peuvent le comparer à ces modèles, ce qui peut mettre en évidence des scénarios inattendus, des dépendances et des vulnérabilités, permettant ainsi d’améliorer le code tout au long du processus de développement.
3. Amélioration de la couverture des tests
Les outils d’apprentissage automatique sont conçus pour analyser et comprendre de vastes ensembles de données. Appliquée aux tests de logiciels, elle permet aux équipes d’accroître la portée de ces tests. Les avantages ne se limitent pas à l’élimination de la main-d’œuvre humaine de l’équation pour économiser de l’argent ; l’IA conduit également à un type de test beaucoup plus complet qui permet d’améliorer la détection des bogues à travers un ensemble complexe de scénarios.
4. Réduction des coûts
Par rapport à l’emploi d’une équipe d’ingénieurs d’assurance qualité et à leur utilisation pour des tâches de test logiciel répétitives et chronophages, l’IA générative et la RPA sont plus rapides et plus rentables.
Alors que le monde du développement de logiciels devient de plus en plus compétitif, il devient de plus en plus important de trouver des moyens de fournir des produits durables et de qualité tout en respectant le budget. Les outils d’IA générative et les copilotes peuvent réduire la dépendance à l’égard des ingénieurs et leur permettre d’effectuer un travail axé sur la valeur et d’aboutir à des constructions moins gonflées.
Les outils d’IA générative annoncent-ils la fin ?
d’ingénieurs logiciels humains ?
Malgré ses avantages évidents, tout outil d’automatisation peut susciter chez les travailleurs un certain degré d’anxiété quant à leur avenir. Bien qu’il s’agisse d’une réaction normale, la vitesse et la portée de l’IA générative font que les préoccupations sont plus importantes qu’à l’accoutumée. Bien que ces outils permettent d’automatiser de nombreux travaux, ils ne peuvent pas effectuer toutes les tâches des ingénieurs en informatique. Il est essentiel pour les ingénieurs et les dirigeants de comprendre les capacités et les limites de la technologie.
La première chose à retenir est que les outils d’automatisation des tests basés sur l’IA existent sur le marché depuis un certain temps. Toutefois, la nature conviviale de l’IA générative lui confère une plus grande flexibilité.
L’une des premières choses à prendre en compte est que l’IA générative fonctionne mieux pour les résultats qui peuvent être vérifiés. Il s’agit là d’un point essentiel. La nature de la formation des LLM signifie qu’ils feront de leur mieux pour vous donner une réponse, même si cela signifie parfois « halluciner » des faits, des références et des arguments.
Maintenant, si vous avez des connaissances suffisantes en matière de codage, vous serez en mesure de lire et de vérifier tout texte produit par Generative AI et de détecter les erreurs potentielles. Si vous êtes un citoyen codeur qui utilise l’IA générative au lieu de savoir coder, vous ne serez pas en mesure de détecter ces erreurs.
De ce point de vue, les ingénieurs qualifiés resteront donc un élément essentiel de l’écosystème de développement de logiciels. Ils seront toujours tenus de procéder à des tests, tant sur le plan de la surveillance que sur le plan pratique.
Une autre limite de l’IA générative pour les tests de logiciels concerne les tests mobiles. Par exemple, ChatGPT est une bonne option pour tester les interfaces utilisateur des sites web. Cependant, il n’a pas accès aux différents appareils mobiles. Avec autant de combinés et de modèles différents sur le marché, il n’est pas à la hauteur des logiciels d’automatisation des tests actuels tels que ZAPTEST. Ce problème n’est pas non plus anodin. Plus de
la moitié de l’utilisation de l’internet se fait à partir d’un téléphone portable
et ce chiffre augmente chaque année.
Ainsi, si l’IA générative va retirer de nombreuses tâches aux développeurs, elle ne rendra pas ces professionnels obsolètes sans de vastes changements dans l’infrastructure de test et la capacité à vérifier les résultats.
Dernières réflexions
Les tests de logiciels et la RPA sont en constante amélioration. Au fur et à mesure de l’apparition de nouvelles technologies et méthodes, les deux disciplines absorbent les meilleures pratiques pour aider les équipes d’assurance qualité à réaliser des tests plus rapides et plus complets à une fraction du prix des tests manuels.
Si l’amélioration de la portée des tests et la réduction des erreurs humaines et des coûts sont quelques-uns des avantages les plus évidents des tests alimentés par l’IA, ils aident également les équipes à adopter une approche d’intégration et de déploiement continus (CI/CD).
Les attentes des consommateurs et la concurrence étant plus élevées que jamais, l’IA générative offre aux équipes un moyen de fournir des tests rapides et efficaces sans compromettre la qualité.