Gains :
- Capacité à concevoir le rôle de l'intelligence artificielle et des points d'approbation humains dans le flux d'assurance qualité de bout en bout, de l'idée à la publication dans le contexte de CI/CD.
- En CI/CD, ne pas autoriser l'IA à « réussir » automatiquement le test, mais appliquer des limites pour protéger les données et les clés confidentielles
- Capacité à effectuer des tests de sécurité au sein de l'autorité et à des fins défensives, et à adopter des principes de divulgation responsable et de transparence éthique.
Dans les dix unités précédentes, nous avons utilisé l'IA dans des tâches individuelles : génération de scénarios, code d'automatisation, rapport de bogues, analyse de couverture, tests de mutation. Cette dernière unité les combine tous en un seul flux de travail responsable. L’assurance qualité moderne n’est pas un travail qui se termine au bureau d’une seule personne ; Il s'agit d'un processus qui vit au sein de CI/CD (Continuous Integration/Continuous Delivery — le pipeline où le code est constamment combiné, automatiquement testé et préparé pour une publication fréquente et en toute sécurité). L’IA peut toucher chaque étape de ce processus. Mais à mesure que la puissance de l’IA augmente, l’importance de l’utiliser de manière responsable augmente également : confidentialité, autorité en matière de tests de sécurité, éthique et, plus important encore, confier la décision de qualité à l’humain. Dans cette unité, vous apprendrez le flux et les limites de bout en bout.
Flux d'assurance qualité de bout en bout alimenté par l'IA
Le rôle de l'IA dans le parcours d'une fonctionnalité, de l'idée à la sortie :
1. Analyse des besoins. L'IA signale les ambiguïtés dans l'exigence et les critères d'acceptation manquants (« cette règle ne précise pas le nombre minimum de caractères du mot de passe »).
2. Conception des tests. Les ébauches de scénarios et de cas (unité 2), les cas extrêmes (unité 3) font partie des critères d'acceptation.
3. Automatisation. Ébauches de codes de test de l'unité (6), de l'API (5) et de l'interface utilisateur (4) ; chacun est confirmé par mutation ( 10 ).
4. Intégration CI/CD. Les tests s'exécutent automatiquement à chaque fusion de code. L'IA rédige la configuration du pipeline (YAML), résume les journaux des tests ayant échoué et suggère la cause première possible.
5. Décision de libération. Les résultats de l'analyse des risques (8) et de la régression (9) sont collectés, mais l'expert décide si cela peut réussir.
6. Suivi de la production et feedback. Les erreurs en direct deviennent des tests futurs ; L'IA propose un cas de régression à partir d'un défaut de fabrication.
Astuce : configurez l'IA en tant que couche dans CI/CD qui « accélère les brouillons révisés par des humains » plutôt que « rédige des tests et prend des décisions ». Aucun test généré automatiquement ne doit entrer dans le pipeline sans qu’un humain ne les examine et ne les approuve.
IA en CI/CD : où oui, où non
Scène
Ajustement de l'IA
l'humain est essentiel
Projet de code de test
Oui
Révision + mutation
Brouillon YAML du pipeline
Oui
Authentification + vérification de la clé secrète
Résumé du journal des échecs
Oui
Confirmation de la cause première
Diagnostic de test fragile
Oui
Décision de solution permanente
"Peut-il y avoir une version ?"
non
Jugement expert et responsabilité
"Réussir" automatiquement le test
jamais
—
Attention : ne donnez jamais à l'IA un mandat du type « réparez-le pour réussir le test d'échec » dans CI/CD. Cela va à l’encontre de l’objectif des tests et masque automatiquement les erreurs. L'IA peut expliquer l'erreur, suggérer une correction ; mais « peindre le test en vert » doit être une décision consciente et raisonnée d’une personne.
Confidentialité, données et sécurité : des frontières immuables
Confidentialité. Dans l'environnement de test, les données client réelles, les copies de la base de données de production, les clés API et les informations internes du système sont sensibles. Ne les donnez pas aux outils publics d’IA. Les données personnelles sont soumises au KVKK et à des réglementations similaires ; Masquer les journaux et les captures d’écran. Utilisez des données de test synthétiques (fictives) dans la mesure du possible.
Tests de sécurité – défensifs et autorisés. Les tests de sécurité appris dans ce module (tests d'autorisation/IDOR, limites de téléchargement de fichiers, validation d'entrée) servent uniquement à tester votre propre produit dans le cadre de l'autorisation écrite et de la portée définie. Utiliser l’IA pour accéder au système de quelqu’un d’autre sans autorisation, utiliser de véritables vulnérabilités ou effectuer des tests hors de portée est à la fois contraire à l’éthique et illégal. Lorsque vous découvrez une vulnérabilité de sécurité, respectez le principe de divulgation responsable : garder la vulnérabilité confidentielle et la signaler à la partie concernée afin qu'elle puisse être corrigée.
Éthique et transparence. Ne présentez pas les tests produits par l’IA comme votre propre travail ; Déclarer que vous utilisez l’IA au sein de l’équipe est une preuve de transparence. Vous êtes responsable de l’inexactitude d’un résultat produit par l’IA – « l’IA l’a écrit » n’est pas une excuse.
Invite faible/Invite forte
Faible : « Configurer un pipeline de test pour CI. »
Strong : "Rédigez un flux de travail CI YAML pour les actions GitHub : exécutez des tests unitaires + API sur chaque PR, générez un rapport de couverture, exécutez des tests de mutation (Stryker) chaque semaine.
Invite puissante ; Il impose des limites à la confidentialité, à l'examen humain et à « l'absence de tests automatisés ».
Quatre modèles copiables
1) Plan de test de bout en bout :
Votre rôle : responsable senior de l'assurance qualité. Rédiger un plan de tests de bout en bout, de l'idée à la sortie pour la fonctionnalité suivante : [fonctionnalité + critères d'acceptation]. Phases : analyse des besoins (incertitudes), conception des tests, couches d'automatisation (unité/API/UI), intégration CI/CD, critères de décision de sortie, suivi de production. Spécifiez le rôle des points d’approbation de l’IA et des HUMAINS à chaque étape séparément.
2) Aperçu du pipeline CI/CD :
Brouillon CI YAML pour [GitHub Actions/GitLab CI/Azure Pipelines] : - Unité + test API + portée dans PR - Empêcher la fusion dans le test rouge - Valeurs secrètes uniquement avec les secrets ; intégration dans le code Ceci est un brouillon ; Je passerai en revue les principales étapes de gestion et d’approbation. Ajout d'une étape de test de correction automatique/réussite.
3) Échec de l'analyse du journal de test :
Dans cette impression CI, les tests sont rouges. Examinez le journal ; regroupez les échecs, distinguez la cause première possible et CE qui peut être l'échec réel et lequel peut être un problème de test/environnement fragile. S'il y a des données personnelles, masquez-les. La décision et la correction m'appartiendront. Journal : [coller]
4) Pré-vérification de sécurité/confidentialité :
Avant que ces données/logs de test ne soient envoyés à l'outil d'IA, vérifiez : contiennent-ils des données personnelles, une clé API, une adresse système interne, des données de production ? Répertoriez les zones, le cas échéant, qui doivent être masquées/supprimées. Traitement tel quel. Contenu : [coller]
trois mini-cases
Cas 1 — Vitesse du flux de bout en bout. Une équipe a abordé une nouvelle fonctionnalité de « renouvellement d'abonnement » avec un flux de bout en bout alimenté par l'IA : les incertitudes liées aux exigences signalées à l'avance, des tests à trois niveaux rédigés et validés par mutation, liés à l'IC. Cette fonctionnalité a réduit le cycle de test, qui prenait 5 jours dans le processus traditionnel, à 2 jours ; mais l'approbation humaine a été préservée à chaque étape, et une incertitude sur les exigences (que se passe-t-il en cas d'échec de l'actualisation) a été résolue avant la mise en ligne.
Cas 2 — Retour d’une fuite de clé. Un développeur a demandé à l'IA de générer CI YAML, et l'IA a intégré une clé API d'apparence réelle dans le YAML à titre d'exemple. L’étape de « vérification préalable de la sécurité/confidentialité » a capturé cela ; clé convertie en référence de secrets. Sans l’étape d’audit, la clé s’infiltrerait dans le contrôle de version (historique git).
Cas 3 — Limite du pouvoir. Un membre de l'équipe souhaitait appliquer le test IDOR qu'il avait appris au système en direct d'un partenaire commercial par « J'étais curieux ». Le leader de l'assurance qualité s'est arrêté : il est illégal d'effectuer des tests de sécurité sur un autre système sans autorisation écrite et sans portée définie. Les tests ont été effectués uniquement dans l'environnement de test de leurs propres produits, avec autorité ; Le responsable ouvert a été notifié à l'équipe compétente.
Erreurs courantes
- Faire en sorte que l'IA prenne les décisions de publication. Poser la question « Peut-il être publié ? à l'IA et en mettant la réponse à la place de la signature.
- "Réussir" le test automatisé. En CI, demander à l'IA de peindre le test en vert ; dissimuler les erreurs.
- Donner des données/clés confidentielles au véhicule. Partage de données de production, de données personnelles ou de clés API sans supervision.
- Tests de sécurité non autorisés. Test de l'attaquant sur un autre système sans portée ni autorisation.
- Introduction de tests dans le pipeline sans examen. Exécutez automatiquement le croquis de l'IA sans l'approbation humaine.
- Rejeter la faute sur l’IA. Défendre la sortie incorrecte en disant "AI l'a écrit".
En résumé
L'assurance qualité de bout en bout est un processus qui s'étend des exigences au suivi de la production et à la vie au sein de CI/CD ; À chaque étape, l’IA produit des brouillons, résume le journal et suggère les causes profondes. Mais les limites sont immuables : les humains prennent les décisions en matière de tests et délivrent les approbations ; L’IA n’a jamais le pouvoir de « réussir » automatiquement le test ; les données confidentielles et les clés n'entrent pas dans le véhicule ; Les tests de sécurité sont effectués uniquement sur votre propre produit, dans le cadre de l'autorisation écrite et de la portée définie, à des fins défensives, et les résultats sont rapportés avec une divulgation responsable. Soyez transparent lorsque vous utilisez l’IA ; Vous êtes responsable de l’exactitude du résultat. L’IA s’accélère ; Vous êtes garant de la qualité et de l'éthique.
Tâche de candidature
Rédigez un plan depuis l'idée jusqu'à la publication avec un modèle de « plan de test de bout en bout » pour une fonctionnalité de votre propre projet ; Marquez le rôle de l’IA et des points d’approbation humaine séparément à chaque étape. Générez ensuite un YAML avec « aperçu du pipeline CI/CD » et appliquez une « vérification préalable de sécurité/confidentialité » à ce YAML pour vérifier les données clés/secrètes intégrées. Enfin, listez tous les points de « décision humaine » de votre plan et justifiez en une phrase pourquoi ces décisions ne peuvent pas être déléguées à l’IA.
liste de contrôle
- [ ] J'attribue les décisions de publication et de test à l'approbation humaine ; Je ne l'ai pas remis à AI.
- [ ] Dans CI/CD, je n'ai pas donné à l'IA la permission de "réussir/corriger" automatiquement le test.
- [ ] J'ai vérifié et masqué les données confidentielles, les données personnelles et les clés avant de les envoyer au véhicule.
- [ ] J'ai uniquement envisagé des tests de sécurité sur mon propre produit, dans le cadre de l'autorisation et de la portée écrites.
- [ ] J'ai abordé les vulnérabilités trouvées avec le principe de divulgation responsable.
- [ ] J'ai déclaré de manière transparente que j'utilisais l'IA et que je me tenais responsable de l'exactitude du résultat.
Examen de module
1. Comment la « fausse réussite » est-elle définie le plus précisément dans le contexte de l'assurance qualité ?
- A) Bien que le test devienne vert, il ne confirme aucun comportement ; ✔ Ne devient pas rouge même si le code est corrompu
- B) Le test s'exécute très lentement et expire.
- C) Le test détecte une erreur réelle et devient rouge
- D) Le test s'exécute uniquement dans l'environnement de production
Explication : Une pseudo-réussite, c'est lorsqu'un test dit « réussi » mais ne confirme en réalité rien de significatif ; Le test est vert, mais même si le logiciel est défectueux, il ne le détectera pas. Il s’agit du risque numéro un de l’IA en matière d’assurance qualité, car l’IA a tendance à produire des tests qui semblent soignés mais creux.
2. Quel est le positionnement le plus précis de l’intelligence artificielle dans le processus de test et d’assurance qualité ?
- A) L'intelligence artificielle peut décider si la version peut être publiée sans l'approbation humaine
- B) L'intelligence artificielle est un assistant qui génère des brouillons et des idées ; La décision et la responsabilité de « est-il prêt à être publié » appartiennent à l'expert ✔
- C) L'intelligence artificielle n'écrit que du texte et ne peut pas du tout gérer le code de test
- D) L'intelligence artificielle écrit toujours un test correct par rapport à l'humain, la révision n'est donc pas nécessaire
Description : L'intelligence artificielle est un assistant de test, un générateur de brouillons et un multiplicateur d'idées ; produit des scénarios de test, du code d'automatisation et des brouillons de rapports. Cependant, la responsabilité et l'approbation finale des décisions de qualité telles que « ce logiciel est-il prêt à être publié » ou « ce test a-t-il réussi » appartiennent à l'expert compétent.
3. Étant donné que les erreurs se produisent principalement aux valeurs seuils, quelle technique de conception de test consiste à tester séparément les 17, 18 et 19 ans pour la limite d'âge de 18 ans ?
- A) Test de transition d'état
- B) Table de décision
- C) Analyse des valeurs limites ✔
- D) Tests exploratoires
Explication : L'analyse des valeurs limites est basée sur l'observation selon laquelle les erreurs se produisent le plus souvent aux limites et teste les valeurs seuils (juste en dessous, juste au-dessus et juste au-dessus de la limite) séparément. C'est une technique puissante qui complète les classes d'équivalence.
4. Quelle approche faut-il privilégier dans la sélection des éléments pour réduire la fragilité du code d'automatisation des tests d'interface utilisateur produit avec l'intelligence artificielle ?
- A) Utiliser le chemin XPath le plus long possible
- B) Sélection de l'élément en fonction de sa position en pixel sur l'écran
- C) Utilisation de sélecteurs basés sur les noms de classes CSS
- D) Utilisation d'attributs stables (data-testid) ajoutés pour les tests ✔
Explication : Les chemins XPath longs et les noms de classes CSS dépendent extrêmement de la structure et de la conception de la page ; Il casse au moindre changement d'interface. Les attributs stables ajoutés spécifiquement pour les tests (par exemple data-testid) ne sont pas affectés par les modifications de conception et rendent les tests robustes.
5. Pourquoi est-il insuffisant pour un test API de simplement vérifier le code d'état HTTP (par exemple 200) ?
- A) Parce que les données corporelles avec le code d'état correct peuvent être corrompues et que la vérification de l'état seule ne permettra pas de détecter cela (pseudo-confiance) ✔
- B) Parce que les codes d'état ne sont pas du tout fiables dans les tests API
- C) Parce que la vérification du code d'état ralentit beaucoup le test
- D) Parce que le code d'état n'est jamais renvoyé dans les tests API
Explication : Bien que le serveur renvoie le code d'état correct, il peut renvoyer des données corrompues dans le corps (mauvais type, champ manquant, valeur mal calculée). Le test qui examine uniquement la situation ne peut pas le voir et donne une fausse confiance. La validation des schémas/contrats et des règles métier doit donc également être ajoutée.
6. Pourquoi est-il essentiel de dire à l'IA de « calculer manuellement la valeur attendue selon la règle d'acceptation, sans faire référence à la sortie actuelle de la fonction » lors de l'impression des tests unitaires ?
- A) Parce que le calcul manuel exécute les tests plus rapidement
- B) Parce que sinon le test accepte le comportement actuel (peut-être bogué) du code comme « correct » et confirme le bug ✔
- C) Parce que l’intelligence artificielle ne peut pas du tout calculer les nombres décimaux
- D) Parce que les règles d'acceptation ne sont jamais utilisées dans les tests
Explication : Si l'IA dérive la valeur attendue de la sortie de la fonction testée, elle fera « réussir » le test même si la fonction est défectueuse ; Autrement dit, quel que soit le résultat du code, le test est considéré comme vrai. Le calcul de la valeur attendue indépendamment de la règle d'acceptation garantit que le test est un gardien de la règle et non un miroir du code.
7. Parmi les éléments suivants, lequel est l'élément le plus distinctif d'un bon rapport de bug ?
- A) Être le plus long et technique possible
- B) Écrit par l'intelligence artificielle
- C) Contient des étapes de reproduction déterministes que le développeur peut suivre indépendamment et produire l'erreur ✔
- D) C'est juste une capture d'écran
Explication : La véritable valeur d'un rapport de bug est que le développeur peut reproduire le bug sans votre aide. Des étapes de reproduction déterministes et traçables à partir de zéro garantissent cela ; Si ces étapes manquent, le rapport se termine souvent avec la mention « Impossible de produire ».
8. Quelle est l'expression la plus précise de la relation entre la gravité et la priorité dans l'erreur de faute d'orthographe du nom de l'entreprise sur la page d'accueil ?
- A) L'intensité et la priorité doivent toujours avoir la même valeur
- B) La gravité et la priorité de cette erreur sont définitivement faibles
- C) La gravité et la priorité sont le même concept, une seule étiquette suffit
- D) L'intensité technique peut être faible mais la priorité commerciale (réputation) peut être élevée ; Les deux sont évalués différemment ✔
Explication : La gravité est l'impact technique de l'erreur (faute de frappe techniquement faible), la priorité est l'urgence avec laquelle elle doit être corrigée (élevée car c'est un élément de réputation que chaque visiteur voit). Les deux ne vont pas toujours dans la même direction ; Cet exemple est une situation de faible gravité et de priorité élevée.
9. Quelle est l’interprétation la plus précise d’une suite de tests avec une couverture de ligne de 90 % ?
- A) Cela montre que les lignes sont exécutées mais ne prouve pas qu'elles se comportent correctement ; ✔ une couverture élevée peut donner une fausse confiance
- B) Prouve de manière concluante que 90 % du logiciel est sans bug
- C) Il s'agit d'une mesure définitive de l'excellente qualité des tests.
- D) Indique qu'il n'est plus nécessaire d'écrire des tests supplémentaires
Explication : La couverture des lignes indique que seules les lignes ont été exécutées ; Cela ne prouve pas qu’il produit des résultats corrects. Même avec des tests sans assertion, une couverture de 90 % peut être obtenue. La portée est une carte « jamais regardé où », et non une assurance « tout a été testé » ; la protection réelle est mesurée par des tests de mutation.
10. Dans les tests basés sur les risques, comment le risque d'une fonctionnalité est-il calculé pour diriger un effort de test limité ?
- A) Uniquement par nombre de lignes de code
- B) En multipliant la probabilité de défaillance et l'effet qui se produira en cas de panne ✔
- C) Uniquement dans l'ordre dans lequel la fonctionnalité a été développée
- D) Donner la priorité uniquement à la fonctionnalité pour laquelle il est le plus facile d'écrire des tests
Explication : Dans les tests basés sur le risque, le risque est évalué comme probabilité = probabilité (probabilité de panne) × impact (dommage en cas de rupture). Les domaines à forte probabilité et à fort impact (paiement, authentification) méritent les tests les plus intenses, tandis que les domaines faible × faible font l'objet de tests légers.
11. Quel est le principal risque d'ajouter une nouvelle tentative à un test qui réussit parfois et échoue parfois (fragile/insuffisant) même si le code n'a pas changé ?
- A) Raccourcir la durée du test
- B) Diminue le pourcentage de couverture
- C) Dissimulation d'une véritable erreur de concurrence ou cause première et suppression du symptôme ✔
- D) Changer le nom du test
Explication : La nouvelle tentative est un outil de diagnostic et non un traitement. L’indécision vient souvent d’une véritable condition raciale ou d’une dépendance ; Faire en sorte que le test soit « réussi » en réessayant masque cette véritable erreur et peut causer de sérieux problèmes en direct. Il faut d’abord trouver la cause profonde.
12. Comment fonctionnent les tests de mutation, la méthode la plus honnête pour mesurer si une suite de tests protège réellement ?
- A) En mesurant la vitesse de déroulement des tests
- B) En comptant le nombre de lignes de code écrites
- C) En exécutant les tests dans des ordres différents
- D) En créant délibérément de petites ruptures dans le code et en mesurant si les tests les détectent ✔
Description : les tests de mutation produisent de petites distorsions intentionnelles (mutations) dans le code source ; Une bonne suite de tests devrait détecter ces distorsions et devenir rouge. Les mutations qui ne sont pas détectées (ont survécu) indiquent que les tests ne préservent pas ce comportement. Le score de mutation est une mesure de qualité beaucoup plus honnête que le pourcentage de couverture.
13. Quelle est la principale limite à respecter lors de la réalisation de tests de sécurité (par exemple tests d'autorisation/IDOR) ?
- A) Cela ne doit être effectué que sur son propre produit, dans le cadre d'une autorisation écrite et d'un champ d'application défini, à des fins défensives ✔
- B) Il peut être librement appliqué à n’importe quel système d’intérêt
- C) Il peut être essayé sur les systèmes en direct de partenaires commerciaux sans autorisation
- D) Toute vulnérabilité trouvée doit être publiée publiquement immédiatement.
Description : Les tests de sécurité appris dans ce module servent uniquement à tester votre propre produit à des fins défensives, dans le cadre d'une autorisation écrite et d'une portée définie. Accéder au système de quelqu'un d'autre sans autorisation ou effectuer des tests hors du champ d'application est à la fois contraire à l'éthique et illégal ; Toutes les vulnérabilités trouvées sont signalées via une divulgation responsable.
14. Quelle autorité ne devrait jamais être accordée à l’IA dans le pipeline CI/CD ?
- A) Résumer les journaux de tests ayant échoué
- B) L'autorité de « réussir » automatiquement un test échoué (rouge) ou de le peindre en vert ✔
- C) Suggérer un projet de code de test
- D) Rédaction du fichier YAML du pipeline
Description : l'IA peut produire un aperçu du code de test, un pipeline YAML et un résumé du journal dans CI/CD ; cependant, la possibilité de « réussir/réparer » automatiquement un test échoué ne devrait jamais être accordée. Cela va à l’encontre de l’objectif des tests et masque automatiquement les erreurs. Peindre le test en vert devrait être une décision consciente et raisonnée d'une personne.