# ADR-007 : Tests et Spécifications Exécutables **Statut** : Accepté **Date** : 2025-01-17 ## Contexte RoadWave nécessite une documentation des use cases qui soit à la fois lisible par tous les stakeholders et vérifiable automatiquement. Les scénarios utilisateurs (touriste, routier, commerçant) doivent être validés en continu. ## Décision **Gherkin** pour les spécifications avec **Godog** comme runner de tests. ## Alternatives considérées | Option | Lisibilité | Intégration Go | Maintenance | |--------|------------|----------------|-------------| | **Gherkin + Godog** | Excellente | Native | Faible | | Gauge (Markdown) | Bonne | Plugin | Moyenne | | Tests Go natifs | Faible (devs only) | Native | Faible | | Concordion | Bonne | Java-centric | Élevée | ## Justification - **Living Documentation** : Les fichiers `.feature` servent de documentation ET de tests - **Accessibilité** : Syntaxe Given/When/Then lisible par PO, devs, testeurs - **Cohérence stack** : Godog est le standard BDD pour Go - **CI/CD** : Intégration simple dans les pipelines ## Structure ``` features/ ├── recommendation/ │ ├── geolocalisation.feature │ └── interets.feature ├── streaming/ │ ├── lecture.feature │ └── buffering.feature ├── moderation/ │ └── signalement.feature └── steps/ └── steps.go ``` ## Exemple ```gherkin Feature: Recommandation géolocalisée Scenario: Touriste près d'un monument Given un utilisateur avec l'intérêt "tourisme" à 80% And une position GPS à 100m de la Tour Eiffel When le système calcule les recommandations Then l'audio guide "Histoire de la Tour Eiffel" est en première position ``` ## Conséquences - Dépendance : `github.com/cucumber/godog` - Les use cases du README doivent être traduits en `.feature` - CI exécute `godog run` avant chaque merge