63 lines
1.9 KiB
Markdown
63 lines
1.9 KiB
Markdown
# 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
|