Unité 1 / 11

Introduction à l'intelligence artificielle dans les tests de logiciels et l'assurance qualité : rôles, limites, risque de contrefaçon et validation

Gains :

  • Être capable de distinguer où l'intelligence artificielle permet de gagner du temps réel dans le processus d'assurance qualité et où les décisions de qualité telles que « prêt pour publication » sont laissées aux humains, en fonction du niveau de risque de la tâche.
  • Capacité à reconnaître le risque de fausses passes et à mettre en œuvre une discipline de vérification qui teste chaque test d'IA en cassant délibérément le code
  • Capacité à protéger les données de test, les données personnelles et les clés, et acquérir l'habitude d'effectuer des tests de sécurité uniquement dans le cadre d'une autorisation et à des fins défensives.

Envisagez une soirée de sortie. Des centaines de tests ont été effectués, ils ont tous obtenu le feu vert, l'équipe a été soulagée et le logiciel a été mis en ligne. Le lendemain matin, le client a signalé que l'écran de paiement s'était écrasé. Les tests étaient au vert mais il n'a pas vu l'erreur. C’est le cauchemar le plus insidieux du métier d’assurance qualité (AQ), c’est-à-dire la discipline qui s’assure systématiquement que le logiciel est de la qualité souhaitée : le test qui s’allume en vert mais ne confirme en réalité rien. Lorsque l’intelligence artificielle (IA – un logiciel qui extrait des modèles à partir de données historiques et génère du texte et du code) entre dans cette profession, il y a à la fois une énorme accélération et une amplification de ce cauchemar. La promesse initiale de ce module est claire : l'IA est un assistant de test, un générateur de plans et un multiplicateur d'idées ; Vous êtes le testeur qui approuve la décision « ce logiciel est-il prêt à être publié ».

Dans cette première unité, nous nous concentrerons sur la discipline et non sur l'outil. Vous apprendrez où l'IA fait gagner du temps réel dans le processus d'assurance qualité, où elle est dangereuse, pourquoi le "faux passage" vert trompeur constitue le plus grand risque, comment vérifier chaque sortie et quelles données vous pouvez fournir à quel outil. Sans poser ces bases, les unités suivantes resteront en l’air.

Où l’IA est-elle utile dans le processus de test ?

Divisons les tâches de test en deux grands clusters. Premier groupe : travaux de brouillon répétitifs et productibles. Rédiger un scénario de test à partir d'une exigence, lister les points d'arrêt, écrire un squelette de code d'automatisation pour un écran, traduire un cas d'erreur complexe en un rapport d'erreur soigné, résumer des centaines de lignes de fichiers journaux, extraire un schéma d'une réponse API. Dans ces tâches, l’IA réduit les minutes en secondes et ne se fatigue pas.

Deuxième groupe : les décisions dont le résultat est la qualité, la confiance et la responsabilité. Des décisions telles que « cette version peut-elle être mise en ligne », « ce bug est-il critique ou peut-il être reporté », « cette couverture de test est-elle suffisante », « ce scénario capture-t-il le risque réel de l'utilisateur », etc. nécessitent du contexte, une connaissance du produit et de la responsabilité. Ici, l'IA génère des options, des brouillons – mais vous décidez « réussite/échec » et « réussite/échec ».

Clarifions la distinction en une phrase : l'IA est forte pour « quelles situations peuvent être testées et comment écrire du code qui les teste » ; La décision vous appartient lorsqu'il s'agit de la question « Ce logiciel fonctionne-t-il vraiment et qui s'en porte garant ? »

Astuce : avant de confier une tâche à l'IA, demandez : "Que se passe-t-il si ce résultat est erroné et que je ne le remarque pas ?" Si la réponse est « Je vais perdre quelques minutes », déléguez facilement. Si la réponse est « un logiciel défectueux est mis en ligne », laissez l'IA produire le brouillon et vous prenez la décision et la vérification.

Fausse passe : le risque numéro un de l’IA en QA

Lorsqu'un test s'allume en vert, cela peut signifier deux choses : soit le logiciel fonctionne correctement, soit il ne voit pas le bug parce que le test a été mal écrit. La seconde est appelée une fausse réussite : le test indique « réussite » mais ne confirme rien. Ce risque augmente considérablement dans les tests produits avec l'IA, car l'IA réussit très bien à écrire des tests fluides, fluides mais vides.

Les trois formes les plus courantes de pseudo-réussite sont : (1) Test sans assertion : le code s'exécute, ne contient aucune assertion et réussit toujours. (2) Test d'auto-vérification — la valeur attendue du test est calculée à partir de la sortie du code testé ; Autrement dit, quel que soit le code produit, le test l'accepte comme "correct". (3) Test qui vérifie la mauvaise chose : l'assertion existe, mais elle vérifie quelque chose de trivial (par exemple "la réponse n'est pas nulle"), pas la règle métier réelle.

Attention : Un panneau de test vert n'est pas une preuve de qualité ; Au mieux, il est indiqué "les contrôles que nous avons écrits ne sont pas cassés pour le moment". Ne soyez pas rassuré en voyant une « réussite » au test produit par l'IA — la vraie question est : ce test deviendra-t-il rouge si je casse délibérément le code ? S'il ne tourne pas, ce test est une décoration.

La règle d'or qui se répète tout au long de ce module : testez chaque test d'IA en cassant délibérément le code. Si le test est toujours vert, ce test ne fonctionne pas. (Nous approfondirons cette idée en tant que test de mutation dans l'unité 10.)

Discipline de vérification : trois étapes

L'IA parle avec confiance ; Cela ne veut pas dire que c'est vrai. Développez un réflexe en trois étapes à appliquer à chaque résultat :

  1. Attachez-le à l’exigence. Chaque cas de test et d'affirmation produit par l'IA doit être basé sur une exigence réelle ou des critères d'acceptation (conditions qu'un travail doit remplir pour être considéré comme « terminé »). « Quelle règle ce scénario confirme-t-il ? demander.
  2. Voir rouge. Exécutez le test généré une fois, en cassant le code. S'il ne devient pas rouge, le test n'est pas valide. Il s’agit de l’étape non négociable des tests d’IA.
  3. Passez-le via le filtre contextuel. Le résultat correspond-il à ce que vous savez être le comportement du produit, son architecture et le flux réel des utilisateurs ? Votre connaissance du domaine est le filtre final.

Confidentialité et sécurité des données : que va-t-on où ?

Les données avec lesquelles vous travaillez dans l'environnement de test sont souvent sensibles : enregistrements clients réels, copies de bases de données de production, clés API, adresses système internes, fonctionnalités qui n'ont pas encore été annoncées. Faites une classification simple : les données ouvertes (documentées, accessibles au public) peuvent entrer dans n’importe quel véhicule. Données internes (fragments de code source, documentation interne) uniquement vers des outils approuvés par l'agence. Les données confidentielles (données réelles des clients, informations d'identité, détails de vulnérabilité, clés) n'entrent que dans les outils sous contrat de l'institution, dont les données ne vont pas à la formation des modèles, de préférence masquées.

Il existe une limite supplémentaire dans le contexte des tests de sécurité : tout ce qui est appris dans ce module est à des fins défensives : pour tester avec autorité la sécurité de votre propre produit. Utiliser l’IA pour infiltrer le système de quelqu’un d’autre sans autorisation, utiliser de véritables vulnérabilités ou tester un système pour lequel vous n’avez aucune autorité est à la fois contraire à l’éthique et criminel. Aucun test offensant ne sera effectué sans autorisation (portée et autorisation).

Astuce : utilisez des données de test synthétiques (produites artificiellement) au lieu de données client réelles. Demander à l’IA de « générer des données de test réalistes mais complètement fictives » préserve à la fois la confidentialité et diversifie les cas extrêmes.

trois mini-cases

Cas 1 — Gain de temps au bon endroit. Le testeur d'une équipe Ekomerce a passé 6 heures à créer manuellement un scénario de test à partir du document d'exigences de 30 pages pour chaque version. Il a remis le document (la partie qui ne contenait pas de secrets commerciaux) à YZ et a demandé une ébauche de scénario structurée ; Le temps a été réduit à 90 minutes. Il a consacré le temps gagné à vérifier par lui-même l'ajout de cas extrêmes de règles métier que l'IA avait manqués. L’IA a supprimé le travail répétitif, laissant le jugement à l’humain.

Cas 2 – Fausse passe détectée. Un développeur a demandé à l'IA d'écrire 12 tests unitaires pour une fonction de calcul ; ils étaient tous verts. Le testeur a implémenté l'étape « voir rouge » : changer délibérément le signe d'addition à l'intérieur de la fonction en multiplication. Seuls 3 tests sur 12 sont retournés au rouge. Les 9 autres tests n’ont fourni aucune réelle confirmation ; Il a juste dit "cela n'a pas généré d'erreur". 9 tests décoratifs ont été supprimés et 5 tests réels ont été écrits à la place.

Cas 3 – Retour suite à une violation de la vie privée. Un stagiaire a collé un journal d'erreurs contenant les e-mails réels des clients et les quatre derniers chiffres de la carte de la base de données de production dans un outil public et a dit « expliquez cette erreur ». Le responsable de l'assurance qualité est intervenu : il s'agissait de données personnelles hors de contrôle et d'une violation de la KVKK (loi sur la protection des données personnelles). Le même travail a été effectué dans un véhicule agréé par l'établissement, masquant les zones personnelles et ne laissant qu'une trace de pile.

Quatre modèles copiables

1) Évaluation de l’adéquation de l’emploi :

Votre rôle : responsable senior de l'assurance qualité. Je vais vous décrire un travail de test. Dites-moi (1) s'il s'agit d'un travail de rédaction/d'analyse qui peut être délégué en toute sécurité à l'IA ou d'une décision de qualité que l'humain doit prendre, (2) le coût potentiel d'un résultat incorrect, (3) la vérification que je dois faire avant de déléguer. Emploi : [insérer le travail ici]

2) Contrôle des pseudo-passes :

Découvrez le test ci-dessous. Dites-moi : - Quel comportement ce test confirme-t-il ? (une phrase)- Comment puis-je casser le code testé pour que le test devienne ROUGE ?- Existe-t-il une faiblesse qui pourrait faire que ce test réussisse toujours (assertion manquante, auto-validation, vérification triviale) ?Test : [coller le test ici]

3) Contrôle du masquage des données de test :

Le log/données que je vous remettrai pourront contenir des champs personnels ou confidentiels (e-mail, nom, carte, clé, adresse interne). Tout d’abord, répertoriez les champs qui doivent être masqués ; Je vais le masquer et le renvoyer. Ne l'analysez pas tel quel.

4) Génération de données de test synthétiques :

Générez 20 lignes de données de test entièrement fictives et réalistes pour [la structure de champ suivante]. N’utilisez pas de données réelles sur les personnes/organisations. Incluez également les cas extrêmes : espace vide, texte trop long, valeurs limites, format non valide.

Invite faible/Invite forte

Faible : "Écrivez des tests sur ce code."
Fort : "Calculez ceci. Écrivez des tests unitaires pour la fonction de remise. Critères d'acceptation pour la fonction : 10 % de remise sur 1 000 TL, 20 % de remise sur 5 000 TL ; un montant négatif devrait générer une erreur. Spécifiez avec une ligne de commentaire quelle règle vous validez pour chaque test. Testez les valeurs limites (999, 1000, 1001, 5000, 0, -1) séparément. Utilisez des assertions réelles qui deviendront rouges si Je casse le code ; je vide ou je n'écris pas d'assertion triviale."

Invite puissante ; Il fournit des critères d'acceptation, des valeurs limites, des attentes de validation et des instructions anti-usurpation explicites. L'invite faible invite l'IA à rédiger un test décoratif.

Erreurs courantes

  • Faire confiance au vert. Penser que réussir le test est une preuve. La vraie question est : est-ce qu'il devient rouge lorsque vous cassez le code ?
  • Demander un test sans donner de raison. L’IA produit des tests génériques, souvent inutiles, sans savoir ce qui doit être vérifié.
  • Ignorer la vérification. Dire "AI l'a écrit, c'est probablement vrai". La responsabilité incombe à la personne qui utilise le résultat.
  • Coller des données réelles/sensibles dans l'outil. Travailler avec des données de production, des clés ou des données personnelles.
  • Tests de sécurité non autorisés. Tentative de tests offensants sans portée ni autorisation.
  • Utiliser l’IA pour déléguer la prise de décision. Poser la question « Cette version peut-elle être publiée ? à l'IA et en mettant la réponse dans la signature.

En résumé

L'IA est un assistant puissant dans le processus d'assurance qualité qui accélère le travail répétitif et productible ; Mais la responsabilité de la décision qualité incombe à l’humain. Le risque numéro un de l’IA dans ce métier est le pseudo-pass : des tests verts qui ont l’air soignés mais qui ne confirment rien. Testez chaque test d'IA en cassant délibérément le code ; S'il ne devient pas rouge, ce test est une décoration. Attachez-le à l'exigence, voyez le rouge, passez-le à travers le filtre contextuel. Masquez les données confidentielles, effectuez des tests de sécurité uniquement à des fins autorisées et défensives.

Tâche de candidature

Effectuez 5 tests unitaires générés par l'IA (ou générés par l'IA) à partir de votre propre projet. Pour chacun : (1) écrivez en une phrase le comportement qu'il vérifie, (2) cassez et exécutez délibérément le code testé et notez combien deviennent rouges, (3) marquez ceux qui ne deviennent pas rouges comme "tests de décor" et réécrivez-les avec la véritable assertion. Mettez le résultat dans un tableau : nom du test / règle vérifiée / a-t-elle été brisée lorsqu'elle a été brisée / action.

liste de contrôle

  • [ ] Avant de confier les travaux, je me suis posé la question « qu'est-ce que je perdrai si ça tourne mal ?
  • [ ] J'ai testé chaque test d'IA en cassant le code ; J'ai remplacé celui qui ne devenait pas rouge par le vrai test.
  • [ ] J'ai lié les cas de test aux critères d'exigence/d'acceptation réels.
  • [ ] J'ai masqué des données sensibles/réelles sans les donner à l'outil ; J'ai utilisé des données synthétiques si possible.
  • [ ] J'ai envisagé les tests de sécurité uniquement dans le cadre de l'autorité et à des fins défensives.
  • [ ] J'ai laissé la décision de « si la version sera publiée » à moi-même, pas à l'IA.