La dette de spécification ne disparaît pas quand on la corrige. Elle migre.

Corriger un problème ne l'élimine pas toujours. Parfois, on ne fait que le déplacer ailleurs.

J'ai récemment audité un projet pour identifier la dette de spécification. Il s'agit de lacunes dans les instructions qui entraînent des bugs ou un mauvais comportement de l'IA. J'ai corrigé sept points spécifiques. Après les corrections, les tests sont passés. Tout était au vert.

Mais la dette n'a pas disparu. Elle a migré des fichiers de fonctionnalités (feature files) vers les définitions d'étapes (step definitions).

Voici ce que j'ai appris en corrigeant ces éléments :

  • La précision est primordiale. Au lieu de dire « la réponse est rapide », dites « la réponse est renvoyée dans les 12 secondes suivant la soumission de la commande ». Cela permet d'ancrer la notion de durée.
  • Évitez l'ambiguïté. « Réessayé 2 fois » n'est pas clair. Cela signifie-t-il 2 tentatives au total ou 3 ? Utilisez « pas plus de 2 demandes de paiement au total » pour être certain.
  • Nommez le mécanisme. Dire « l'inventaire est libéré » est vague. Précisez que « le service d'inventaire reçoit une demande de libération pour l'article X ».
  • Supprimez les fausses garanties. Si une étape réussit parce qu'une fonctionnalité n'existe pas encore, supprimez l'étape. Un test réussi pour un flux inexistant est un mensonge.
  • Définissez ce qui est « correct ». N'utilisez jamais de mots comme « correct » ou « approprié » sans valeurs concrètes. Utilisez « contient l'order_id 123 » au lieu de « contient le bon id ».

J'ai conçu un framework pour identifier ces problèmes. Posez ces cinq questions pour chaque scénario :

  • Qui est responsable de ce scénario ?
  • Quelles décisions cela laisse-t-il en suspens ?
  • Tous les termes sont-ils définis ici ?
  • Cela décrit-il le comportement ou l'implémentation ?
  • Que manque-t-il à cette description ?

Le plus grand piège est l'écart entre le texte et le code. Vous pouvez écrire une instruction parfaite et précise dans votre spécification. Mais si votre code sous-jacent utilise un raccourci pour faire passer ce test, vous avez toujours une dette.

La spécification indique « créer une commande via l'API ». En réalité, le code se contente d'injecter une commande directement dans une base de données pour gagner du temps. Le test réussit, mais la dette est passée de l'exigence à l'implémentation.

N'essayez pas d'écrire des spécifications parfaites dès la première fois. Écrivez-les, auditez-les et corrigez-les.

Source: https://dev.to/diyaburman/spec-debt-doesnt-disappear-when-you-fix-it-it-migrates-d25

Communauté d'apprentissage optionnelle: https://t.me/GyaanSetuAi