para TDD, las "buenas" pruebas prueban las características que el cliente desea ; las características no se corresponden necesariamente con las funciones, y el desarrollador no debe crear escenarios de prueba en el vacío
en su caso, supongo, la 'característica' es que la función de ajuste modela los datos de entrada dentro de una cierta tolerancia a errores. Como no tengo idea de lo que realmente estás haciendo, estoy inventando algo; Ojalá sea análogo.
Ejemplo de historia:
Como [X-Wing Pilot] quiero [no más de 0.0001% de error de ajuste] para que [la computadora objetivo pueda alcanzar el puerto de escape de la Estrella de la Muerte cuando se mueva a toda velocidad a través de un cañón de caja]
Entonces vaya a hablar con los pilotos (y con la computadora de orientación, si es consciente). Primero hablas de lo que es "normal", luego hablas de lo anormal. Descubre lo que realmente importa en este escenario, lo que es común, lo que es poco probable y lo que es simplemente posible.
Digamos que normalmente tendrá una ventana de medio segundo sobre siete canales de datos de telemetría: velocidad, cabeceo, balanceo, guiñada, vector objetivo, tamaño objetivo y velocidad objetivo, y que estos valores serán constantes o cambiarán linealmente. Anormalmente puede tener menos canales y / o los valores pueden estar cambiando rápidamente. Así que juntos se les ocurren algunas pruebas como:
//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
Ahora, es posible que haya notado que no hay un escenario para la situación particular descrita en la historia. Resulta que, después de hablar con el cliente y otras partes interesadas, ese objetivo en la historia original era solo un ejemplo hipotético. Las pruebas reales salieron de la discusión que siguió. Esto puede suceder. La historia debe reescribirse, pero no tiene que ser así [ya que la historia es solo un marcador de posición para una conversación con el cliente].