Tests & Agents
Le codage agent change le rôle des tests.
Quand un humain écrit un petit patch, les tests nous indiquent si le patch a cassé quelque chose.
Lorsqu’un agent peut réécrire de gros morceaux de code, les tests deviennent aussi le langage que nous utilisons pour indiquer à l’agent ce que signifie « bon ».
Cela rend les tests plus importants, pas moins.
Les tests sont la mémoire du projet
Les agents sont bons pour raisonner localement, mais un projet est plus grand que le prompt actuel.
Une chaîne d’outils a accumulé des décisions :
Que devraient dire les diagnostics
où les portées de source doivent pointer
À quoi devrait ressembler le code généré
quels cas périphériques Vue sont pris en charge
quels projets réels doivent continuer à compiler
lesquels les faux positifs sont inacceptables
Les tests conservent ces décisions.
Sans tests, chaque changement agent est contraint de redécouvrir le projet à partir de zéro. Avec des tests, le projet peut résister. Elle peut dire : ce comportement compte, cette sortie est intentionnelle, ce message d’erreur fait partie de l’expérience utilisateur.
Les tests d’instantanés sont particulièrement utiles
Vize utilise beaucoup d’instantanés car les chaînes d’outils produisent des résultats structurés que les humains doivent inspecter :
Sortie du compilateur
Sortie de formateur
Diagnostic du linter
TypeScript virtuel
Emplacements de diagnostic mappés par source
Métadonnées de Musea générées
Construire des artefacts issus de projets de fixture
Les instantanés ne remplacent pas les assertions. Ils sont un moyen de rendre un comportement général susceptible d’être évalué.
Cela est important pour le codage agentique car les agents peuvent créer rapidement de grandes différences. Une bonne suite d’instantanés rend ces différences visibles sous une forme que les humains peuvent consulter. Cela transforme « quelque chose a changé quelque part dans le compilateur » en « cette sortie de rendu a changé exactement dans ce cas ».
C’est une bien meilleure surface de critique.
Le déterminisme est le contrat
Les flux de travail agents nécessitent des outils déterministes.
Si les tests sont instables, l’agent ne peut pas dire si son patch a aidé. Si l’ordre de sortie change entre les exécutions, les instantanés deviennent du bruit. Si les diagnostics dépendent de l’état ambiant de la machine, le CI devient une loterie.
Donc Vize se soucie des détails ennuyeux :
Ordonnancement stable des sorties
ID diagnostique stable
Plages sources stables
Forme de code stable générée
Installation stable de luminaires
Annuaires isolés à l’article
Le déterminisme n’est pas réservé uniquement à l’IC. C’est ce qui permet aux humains et aux agents de partager la même boucle de rétroaction.
Les installations réelles maintiennent le système honnête
Les tests unitaires sont nécessaires, mais les outils Vue vivent dans les projets réels.
Les projets réels ont :
Graphes d’importation inhabituels
Dispositions du gestionnaire de packages
Fichiers générés
Conventions macro
Préprocesseurs de style
Arbres composants énormes
Anciens motifs à côté de nouveaux motifs
C’est pourquoi Vize continue de tester sur des fixatures et des instantanés réels. L’objectif n’est pas de déclarer une préparation à la production trop tôt. Le but est de trouver chaque arête qui n’apparaît qu’en dehors d’une application d’échantillons parfaite.
Ce type de vérification exhaustive est lent à se construire, mais c’est le chemin de l’expérimentation vers un véritable outil.
Les tests sont une conversation avec la communauté
Les retours de la communauté ne sont pas seulement des commentaires de suivi.
Il est également :
un vrai projet qui ne parvient pas à compiler
un diagnostic qui indique une mauvaise plage de temps
un faux positif qui bloque l’adoption
Un précipice de performance dans un dépôt que personne n’avait prédit
un schéma de production que la chaîne d’outils ne comprenait pas
Chacun de ces rapports devrait devenir un point de référence, un test de régression ou un point de référence.
C’est ainsi que le retour d’information devient mémoire. C’est ainsi qu’un outil expérimental devient plus sérieux avec le temps.
Les agents ont besoin de boucles plus petites et meilleures
La pire configuration de test pour les agents est une grosse commande lente qui échoue à la fin avec un message flou.
La meilleure configuration donne un retour en couches :
Tests unitaires rapides pour les invariants locaux
Tests instantanés pour la révision des sorties
Tests de fixture pour le comportement du cadre
Tests d’intégration ciblés pour les limites des outils
Matrices CI pour plateformes et constructions de production
Les agents peuvent utiliser cette échelle. Les humains aussi.
C’est une des raisons pour lesquelles Vize continue d’investir dans des outils de test et la consolidation de scripts. Un bon projet doit rendre le bon chèque facile à exécuter, facile à comprendre et facile à étendre lorsque le risque augmente.
La confiance se gagne à plusieurs reprises
Aucune chaîne d’outils ne devient fiable parce que son README indique « rapide » ou « correct ».
La confiance se gagne à chaque fois :
Un diagnostic est précis
Une réparation ne détériore pas le code à proximité
Un changement instantané est explicable
Un projet réel continue de passer
Le CI détecte quelque chose avant la libération
Un agent peut itérer sans perdre le thread
C’est pourquoi les tests ne sont pas une quête annexe pour Vize.
Cela fait partie du produit.
À l’ère de l’IA, les meilleurs outils ne seront pas ceux qui génèrent le plus de code. Ce sont eux qui pourront générer, valider, expliquer et rejeter du code dans des boucles serrées et déterministes.
Les tests sont là où ces boucles deviennent réelles.