TDDの場合、「良い」テストは、顧客が望む機能をテストします。機能は必ずしも機能に対応するとは限らず、開発者がテストシナリオを作成する必要はありません
あなたの場合-私は推測しています-「機能」は、フィット関数が特定の許容誤差内で入力データをモデル化することです。あなたが本当に何をしているのかわからないので、私は何かを作り上げています。うまくいけば、それは痛ましいです。
サンプルストーリー:
[X-Wing Pilot]として、[標的のコンピューターがボックスキャニオンをフルスピードで移動するときにデススターの排気口に到達できるように] [0.0001%未満の適合エラー]が必要です。
そのため、パイロット(および感覚がある場合はターゲットコンピューター)と話をします。最初に「正常」とは何かについて話し、次に異常について話します。このシナリオで本当に重要なこと、一般的なこと、起こりそうにないこと、および単に可能なことを見つけます。
通常、7チャネルのテレメトリデータ(速度、ピッチ、ロール、ヨー、ターゲットベクトル、ターゲットサイズ、ターゲット速度)に0.5秒のウィンドウがあり、これらの値は一定であるか、線形に変化するとします。異常にチャンネルが少なくなったり、値が急速に変化する可能性があります。そのため、一緒に次のようなテストを考え出します。
//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
ストーリーで説明されている特定の状況にはシナリオがないことに気づいたかもしれません。顧客や他の利害関係者と話をした後、元のストーリーのその目標は単なる仮想的な例でした。実際のテストは、その後の議論から生まれました。これは起こる可能性があります。ストーリーは書き直す必要がありますが、[ストーリーは単なる顧客との会話のプレースホルダーであるため]である必要はありません。