¿Debo probar la unidad?

8

La mayor parte de la lógica de mi servicio web implica hablar con los servicios web de nuestro proveedor (verificar disponibilidad, realizar pedidos, etc.) No tienen un entorno de prueba y la mayoría de las llamadas no se pueden ejecutar de manera arbitraria (por ejemplo, una interrupción se ejecutaría una vez y en realidad detendría un servicio).

¿Es factible ejecutar pruebas unitarias en este entorno? Podría simular respuestas típicas, pero me preocupa que las respuestas de proveedores de código rígido socaven el punto de las pruebas unitarias.

Tom Squires
fuente

Respuestas:

30

No, no lo hará. El objetivo de las pruebas unitarias es precisamente probar su código de forma aislada , independiente del mundo externo.

Probar todo su sistema interactuando con terceros como servicios web, etc. es una prueba de integración / sistema . Esto también es necesario en la mayoría de los proyectos del mundo real, pero es un nivel diferente al de las pruebas unitarias. En realidad, suena como en su situación, ya que tiene dificultades en las pruebas de integración, necesita pruebas unitarias aún más de lo habitual .

Como objetivo a largo plazo, puede considerar educar y / o molestar a dichos proveedores para establecer un entorno de prueba para ellos y sus clientes. Sin embargo, es posible que deba invocar el apoyo de su gerencia para que esto tenga éxito, así que prepárese con datos y cifras concretas para convencerlos sobre el valor comercial de un entorno de prueba.

Péter Török
fuente
12
+1: "necesita pruebas unitarias incluso más de lo habitual". Y debe burlarse con precisión de la solicitud / respuesta del proveedor, el tiempo de espera, el error, las malas credenciales y todas las otras pequeñas cosas que causan "problemas" en una aplicación como esta.
S.Lott
1

Las pruebas unitarias también le proporcionarán una especificación inequívoca y ejecutable del comportamiento que espera de sus proveedores. Esto probablemente facilitará la comunicación con ellos.

Si hay algún problema en la interacción entre usted y los suyos, puede proporcionarles sus pruebas unitarias para indicar claramente qué comportamiento espera su código. Si su código no se comporta de la misma manera que las pruebas de su unidad, las diferencias suelen ser fáciles de detectar.

Josh Peterson
fuente
Tales pruebas son realmente útiles, pero la terminología ampliamente utilizada para estas son las pruebas de sistema / aceptación en lugar de pruebas unitarias.
Péter Török
@Josh Peterson He tenido quejas de sus "desarrolladores" antes porque les envié xml en lugar de explicarles el contenido xml. Creo que las pruebas unitarias me llevarían muy lejos :)
Tom Squires
0

ROI

Esta es realmente una pregunta sobre el retorno de la inversión. ¿Siente que invertir en pruebas unitarias vale lo que obtendrá? A saber, su código probado de forma aislada . Además de todos los otros beneficios de las pruebas unitarias.

Puede contrastar esto con, digamos, un enfoque de prueba de aceptación automatizada donde obtendría una cuenta de prueba de su proveedor que realmente prueba el sistema integrado con las pruebas. ¿Vale la pena el costo de hacer ATDD? A saber, pruebas del sistema en su conjunto.

Depende de usted hacer el análisis y determinar si debe realizar pruebas unitarias, pruebas de aceptación automatizadas, ambas, ninguna, o alguna otra cosa.

dietbuddha
fuente