pour TDD, de "bons" tests, des fonctionnalités de test souhaitées par le client ; les fonctionnalités ne correspondent pas nécessairement aux fonctions, et le développeur ne doit pas créer des scénarios de test en vase clos
dans votre cas - je suppose - la «fonctionnalité» est que la fonction d'ajustement modélise les données d'entrée avec une certaine tolérance aux erreurs. Puisque je n'ai aucune idée de ce que vous faites réellement, je fabrique quelque chose; j'espère que c'est analgous.
Exemple d'histoire:
En tant que [pilote X-Wing], je souhaite [une erreur d'ajustement maximale de 0,0001%] afin que [l'ordinateur de ciblage puisse atteindre le port d'échappement de l'Étoile Étoile de la Mort lorsqu'il se déplace à toute vitesse dans un canyon en rangée]
Alors vous allez parler aux pilotes (et à l'ordinateur de ciblage, s'il est sensible). Tout d'abord, vous parlez de ce qui est «normal», puis de l'anormal. Vous découvrez ce qui compte vraiment dans ce scénario, ce qui est commun, ce qui est peu probable et ce qui est simplement possible.
Supposons que vous disposiez normalement d'une fenêtre d'une demi-seconde sur sept canaux de données de télémétrie: vitesse, tangage, roulis, lacet, vecteur cible, taille cible et vitesse cible, et que ces valeurs soient constantes ou changent linéairement. De manière anormale, vous pouvez avoir moins de canaux et / ou les valeurs peuvent changer rapidement. Alors, ensemble, vous obtenez des tests tels que:
//Scenario 1 - can you hit the side of a barn?
Given:
all 7 channels with no dropouts for the full half-second window,
When:
speed is zero
and target velocity is zero
and all other values are constant,
Then:
the error coefficient must be zero
//Scenario 2 - can you hit a turtle?
Given:
all 7 channels with no dropouts for the full half-second window,
When:
speed is zero
and target velocity is less than c
and all other values are constant,
Then:
the error coefficient must be less than 0.0000000001/ns
...
//Scenario 42 - death blossom
Given:
all 7 channels with 30% dropout and a 0.05 second sampling window
When:
speed is zero
and position is within enemy cluster
and all targets are stationary
Then:
the error coefficient must be less than 0.000001/ns for each target
Vous avez peut-être remarqué qu'il n'y a pas de scénario pour la situation particulière décrite dans l'histoire. Après avoir discuté avec le client et d’autres parties prenantes, il s’avère que cet objectif n’était qu’un exemple hypothétique. Les vrais tests sont issus de la discussion qui a suivi. Cela peut arriver. L’histoire doit être réécrite, mais pas nécessairement [car l’histoire n’est qu’un espace réservé pour une conversation avec le client].