AI Coding · 4 mondes · 12 étapes
Coder avec l'IA
Faire travailler un assistant de code, sans jamais lui confier les clés.
Progression
0 %
0/12 étapes terminées
Intermédiaire · 10 min de lecture
Tester avant d'accepter
Les tests tranchent, pas le style
1Définition
On écrit les tests d'abord, à partir de la consigne — un cas par phrase — puis on les lance sur chaque proposition. Les tests de propriétés vont plus loin : des centaines d'entrées au hasard (avec une graine pour rejouer), et des règles qui doivent toujours tenir.
2Principes fondamentaux
01
La consigne, puis les cas
Chaque phrase de la spécification donne au moins un test.
02
Des propriétés
Ordonnée, mêmes éléments, entrée intacte : vrai pour toute entrée.
03
Un hasard rejouable
Une graine fixe donne toujours la même suite.
04
Un contre-exemple
Le cas qui échoue, à montrer à l'assistant.
3Exemples pratiques
Des propriétés avec fast-check
1import fc from "fast-check";2 3fc.assert(fc.property(fc.array(fc.integer()), (t) => {4 const r = trier(t);5 return r.every((x, i) => i === 0 || r[i - 1] <= x) && r.length === t.length;6}));La bibliothèque génère les entrées et réduit tout échec au plus petit contre-exemple.
Demander du code avec ses tests
1Voici les tests (Vitest) que la fonction doit passer.2Écris estPalindrome pour qu'ils passent tous, sans modifier les tests.Les tests deviennent la spécification ; l'assistant a un critère de réussite clair.
4Erreurs courantes
Tester avec le code sous les yeux
À éviter
// j'écris les tests d'après la propositionÀ faire
// j'écris les tests d'après la consignePourquoi : On reproduit les erreurs du code dans les tests.
Un hasard non rejouable
À éviter
Math.random()À faire
graine(42)Pourquoi : Un échec qu'on ne peut pas rejouer ne se corrige pas.
Renvoyer l'entrée modifiée
À éviter
return entree; // déjà triée sur placeÀ faire
return copie;Pourquoi : Le contre-exemple montré doit être l'entrée d'origine.
5Subtilités à connaître
- ◆
[10, 9, 1].sort()donne[1, 10, 9]: sans comparateur, JavaScript trie des textes. - ◆Une propriété peut servir d'oracle : comparer le résultat à une implémentation lente mais évidente.
- ◆Les tests de propriétés complètent les exemples, ils ne les remplacent pas : un exemple documente, une propriété explore.
6Vérifie ta compréhension
Question 1/3
Score 0
D'où viennent les tests ?
Envie d'essayer ? Ouvre le Labo et recopie les exemples pour les modifier.