Initial commit
This commit is contained in:
62
docs/adr/007-tests-bdd.md
Normal file
62
docs/adr/007-tests-bdd.md
Normal file
@@ -0,0 +1,62 @@
|
||||
# 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
|
||||
Reference in New Issue
Block a user