Auteur | Mush Honda
Planificateur | Yun Zhao
À la fin de l'année dernière, comme du jour au lendemain, l'intelligence artificielle est redevenue populaire. Premièrement, les images générées par DALL-E 2 étaient réalistes et "l'équitation". "astronaute" était accrocheur. Inoubliable, suivi de Stable Diffusion, une IA de dessin sous copyright public qui génère des images générées par du texte, et de la dernière "bombe royale" : ChatGPT, qui était au sommet de ses débuts, a valu à OpenAI beaucoup de affronter. Même pendant la Fête du Printemps, de nombreux internautes ont déploré qu'elle soit « en danger », craignant que l'apogée de cette vague d'intelligence artificielle ne leur enlève réellement leur emploi. Cependant, la réalité sera-t-elle vraiment ainsi ? L’IA va-t-elle inaugurer une renaissance des logiciels d’application informatique ? Cet article prend comme exemple une application de terrain spécifique pour expliquer les trois étapes de l'élaboration de l'IA et explique plusieurs raisons pour lesquelles l'IA ne devrait pas et ne peut pas devenir complètement autonome. De plus, l'auteur a également expliqué à quoi devrait ressembler un véritable personnage d'IA. Nous devons être vigilants, mais pas paniquer.
« Grâce à l'intelligence artificielle, le délai de livraison sera réduit de quelques minutes à quelques secondes ! » « Les fournisseurs et les clients reviendront à l'ère de l'expérience bon marché et conviviale, et les logiciels d'application informatique inaugureront un moment de renaissance »
!Malheureusement, un espace de stockage bon marché, des vitesses de traitement élevées, des équipements de formation en IA facilement disponibles et Internet ont transformé cette promesse en un battage médiatique exagéré.
Prenons l'exemple des tests de logiciels. Si vous recherchez « Application de l'intelligence artificielle dans les tests de logiciels », le système renverra une série de solutions « magiques » promises aux acheteurs potentiels. De nombreuses solutions offrent des moyens de réduire le travail manuel, d'améliorer la qualité et de réduire les coûts. Ce qui est un peu étrange, c'est que certains fabricants promettent que leurs solutions d'IA peuvent parfaitement résoudre les problèmes de tests logiciels, et la formulation est encore plus choquante - le "Saint Graal" des tests logiciels - l'idée est de le dire ainsi - c'est de éloignez les gens des difficultés et des soucis. Cela vous libère du cycle de développement logiciel et rend le cycle de test plus court, plus efficace et plus simple.
L'IA peut-elle vraiment se transformer en le tout-puissant « Saint Graal » ? Par ailleurs, faut-il laisser l’IA remplacer complètement l’humain ? Il est temps de mettre un terme à ces battages médiatiques presque absurdes.
Dans le monde réel, exclure les humains du processus de développement logiciel est beaucoup plus complexe et intimidant. Indépendamment de l'utilisation de méthodologies en cascade, de développement rapide d'applications, DevOps, agile et autres, les personnes restent au centre du développement logiciel car elles définissent les limites et le potentiel des logiciels qu'elles créent. Dans le domaine des tests logiciels, étant donné que les exigences commerciales sont souvent floues et en constante évolution, les « objectifs » changent constamment. Les utilisateurs exigent des changements en termes de convivialité, et même les attentes des développeurs quant à ce qui est possible avec le changement logiciel.
Les normes et méthodes originales de test de logiciels (y compris le terme assurance qualité) proviennent du domaine des tests de produits de fabrication. Dans ce cas, le produit est bien défini, les tests sont plus mécaniques, mais les caractéristiques du logiciel sont malléables et changent fréquemment. Les tests logiciels ne se prêtent pas à cette approche machine uniforme de l’assurance qualité.
Dans le développement de logiciels modernes, il existe de nombreuses choses que les développeurs ne peuvent pas prédire ni connaître. Par exemple, les attentes en matière d'expérience utilisateur (UX) peuvent avoir changé après la première itération du logiciel. Exemples spécifiques : Les utilisateurs ont des attentes plus élevées en matière de temps de chargement d'écran plus rapides ou d'exigences de défilement plus rapides. Les utilisateurs ne souhaitent plus un défilement prolongé vers le bas de l'écran, car ce n'est plus populaire.
Pour diverses raisons, l'intelligence artificielle ne peut jamais prédire ou tester par elle-même ce que même son créateur ne peut pas prédire. Par conséquent, dans le domaine des tests logiciels, il est impossible de disposer d’une intelligence artificielle véritablement autonome. La création d’un « terminateur » de tests logiciels peut susciter l’intérêt des spécialistes du marketing et des acheteurs potentiels, mais de tels déploiements sont voués à être un mirage. Au lieu de cela, l’autonomie des tests logiciels a plus de sens dans le contexte de la collaboration entre l’IA et les humains.
Tests logiciels Le développement de l'IA est essentiellement divisé en trois étapes de maturité :
Actuellement, la grande majorité des tests de logiciels basés sur l'intelligence artificielle sont en phase opérationnelle. À la base, les tests opérationnels consistent à créer des scripts qui imitent des routines que les testeurs exécutent des centaines de fois. L'« IA » dans cet exemple est loin d'être intelligente et peut aider à raccourcir la création de scripts, l'exécution répétitive et le stockage des résultats.
L'IA procédurale est une version plus mature de l'IA opérationnelle et est utilisée par les testeurs pour la génération de tests. D'autres utilisations peuvent inclure l'analyse et les recommandations de la couverture des tests, l'analyse des causes profondes des défauts et l'estimation des efforts, ainsi que l'optimisation de l'environnement de test. L’IA des processus peut également faciliter la création de données synthétiques basées sur des modèles et des utilisations.
Les avantages de l'IA procédurale sont évidents, fournissant une paire d'« yeux » supplémentaire pour compenser et couvrir certains des risques que les testeurs prennent lors de la mise en place de stratégies d'exécution de tests. Dans les applications pratiques, l’IA procédurale peut faciliter le test du code modifié.
À ce niveau d'IA, nous voyons des avantages évidents en termes de temps et de coût de développement.
Cependant, lorsque l'attention se porte sur la troisième étape - l'IA systémique, le tableau devient flou, car l'avenir pourrait bien devenir une pente glissante et une promesse non récompensée.
Les tests systématiques (ou complètement autonomes) de l'IA sont impossibles (du moins actuellement impossibles). L'une des raisons est que l'IA nécessitera beaucoup de formation. Les testeurs peuvent être sûrs que l’IA des processus suggérera un test unitaire garantissant de manière adéquate la qualité du logiciel. Cependant, avec l’IA système, les testeurs ne peuvent pas savoir avec un degré élevé de certitude que le logiciel répondra à toutes les exigences.
Si ce niveau d'IA est véritablement autonome, il devra tester toutes les exigences imaginables - même celles qui ne sont pas imaginables par les humains. Ils doivent ensuite revoir les hypothèses et les conclusions de l’IA autonome. Confirmer que ces hypothèses sont correctes nécessite beaucoup de temps et d’efforts pour fournir des preuves hautement crédibles.
Les tests de logiciels autonomes ne pourront jamais être entièrement réalisés. Parce que les gens ne lui feront pas confiance, ce qui équivaut à perdre l’objectif et le principe d’atteindre une autonomie complète.
Bien que l'intelligence artificielle entièrement autonome soit un mythe, l'intelligence artificielle qui soutient et étend les efforts humains en matière de qualité des logiciels est un objectif qui mérite d'être poursuivi. Dans ce cas, les humains peuvent soutenir l’IA : les testeurs doivent encore rester patients dans la supervision, la correction et l’enseignement de l’IA et des ensembles de formation en constante évolution sur lesquels elle s’appuie. Le défi est de savoir comment entraîner l'IA tout en attribuant des risques aux divers bugs du logiciel de test. Cette formation doit être continue et ne pas se limiter aux zones de test. Les constructeurs de voitures autonomes entraînent l’intelligence artificielle à distinguer si une personne traverse la rue ou fait du vélo.
Les testeurs doivent former et tester les logiciels d’IA sur des données antérieures pour renforcer leur confiance dans les capacités de l’IA. Dans le même temps, une IA véritablement autonome dans les tests doit prédire les conditions futures (conseils aux développeurs et conseils aux utilisateurs), ce qu’elle ne peut pas faire sur la base de données historiques. Au lieu de cela, les formateurs ont tendance à former l’IA sur la base d’ensembles de données basés sur leurs propres préjugés. Ces biais limitent les possibilités d’exploration de l’intelligence artificielle, tout comme un aveugle empêcherait un cheval de s’écarter de sa trajectoire établie par souci de certitude. Plus l’IA paraît biaisée, plus sa crédibilité sera mauvaise. La meilleure façon de former l’IA est de traiter les probabilités de risque et d’en dériver des stratégies d’atténuation des risques qui sont finalement évaluées par les humains.
En dernière analyse, les tests de logiciels concernent le sentiment d'accomplissement et la confiance en soi du testeur. Ils mesurent et évaluent les conséquences possibles de la mise en œuvre initiale ainsi que les modifications de code susceptibles de poser des problèmes aux développeurs et aux utilisateurs. Mais il est indéniable que même si les tests logiciels ont exploré pleinement toutes les possibilités de crash d'application, la fiabilité ne peut pas être de 100 %. Il existe un élément de risque dans tous les tests logiciels, qu'ils soient effectués manuellement ou automatiquement.
Les testeurs doivent décider de la couverture des tests en fonction de la probabilité que le code cause des problèmes. Ils doivent également utiliser l’analyse des risques pour décider quels domaines doivent être ciblés en dehors de la couverture. Même si l’IA détermine et affiche la probabilité relative de panne logicielle à tout moment de la chaîne d’activité des utilisateurs, les testeurs doivent toujours confirmer manuellement les calculs.
L'intelligence artificielle offre la possibilité d'une continuité logicielle affectée par les écarts historiques. Cependant, il n’existe toujours pas un niveau élevé de confiance dans les recettes d’évaluation des risques liés à l’IA et de réduction des risques.
Les outils de test de logiciels basés sur l'IA doivent être pratiques et efficaces afin d'aider les testeurs à produire des résultats réalistes tout en les déchargeant du travail manuel.
Le déploiement le plus excitant (et potentiellement perturbateur) de l'IA dans les tests logiciels se situe au deuxième niveau de maturité du développement de l'IA : l'IA procédurale. Comme l'a noté un chercheur de Katalon : « La plus grande utilisation pratique de l'IA appliquée aux tests logiciels se situera au niveau du processus, la première étape de la création de tests autonomes. C'est à ce moment-là que je pourrai créer des tests automatisés que je pourrai créer. , peut aussi me servir. "
L'intelligence artificielle autonome et autodirigée, remplaçant toute participation humaine au processus de test des logiciels, etc. sont autant de battage médiatique. Il est plus réaliste et souhaitable de s’attendre à ce que l’IA augmente et complète les efforts humains et réduise les délais de test.
Lien de référence : https://dzone.com/articles/ai-in-software-testing-the-hype-the-facts-the-pote
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!