для TDD "хороші" тестові функції тесту, які бажає замовник ; функції не обов'язково відповідають функціям, а тестові сценарії розробник не повинен створювати у вакуумі
у вашому випадку - я здогадуюсь - особливістю є те, що функція fit моделює вхідні дані в межах певного допуску помилок. Оскільки я не маю уявлення, чим ти насправді займаєшся, я щось складаю; сподіваємось, це анальне.
Приклад історії:
Як пілот X-Wing, я хочу [не більше 0,0001% помилки пристосування], щоб [цільовий комп'ютер міг потрапити у вихлопний порт Death Star при переміщенні на повній швидкості через коробковий каньйон]
Тож ви йдете поговорити з пілотами (і до комп’ютера, що орієнтується, якщо він здоровий). Спочатку ви говорите про те, що є "нормальним", потім говорите про ненормальне. Ви дізнаєтесь, що насправді має значення в цьому сценарії, що є загальним, що малоймовірним, а що просто можливим.
Скажімо, зазвичай у вас буде півтори секунди вікна на сім каналів даних телеметрії: швидкість, крок, рулон, позіхання, цільовий вектор, розмір цілі та цільова швидкість, і що ці значення будуть постійними або змінюватимуться лінійно. Аномально у вас може бути менше каналів та / або значення можуть швидко змінюватися. Тож разом ви придумали кілька тестів, таких як:
//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
Тепер ви, можливо, помітили, що не існує сценарію для конкретної ситуації, описаної в історії. Виявляється, після розмови з замовником та іншими зацікавленими сторонами ця мета в оригінальній історії була лише гіпотетичним прикладом. Справді випробування вийшли з результату дискусії. Це може статися. Історію слід переписати, але це не обов'язково [оскільки історія є лише заповнювачем місця для розмови із замовником].