¿Puede una prueba unitaria reemplazar work-on-my-machine al completar el trabajo?

7

Hice un pequeño cambio en un componente de integración y preparé pruebas de unidad para cubrir mi trabajo. Todas las pruebas unitarias nuevas y existentes están pasando.

Tomará una cantidad considerable de tiempo configurar y ejecutar el componente localmente, ya que necesitaré restaurar las bases de datos, revisar las reglas del firewall, etc.

La definición de Hecho en términos de trabajo de desarrollo no está clara.

¿Es una prueba de unidad un mejor reemplazo para los trabajos en mi máquina?

¿Se considera poco profesional si no confirmo los cambios manualmente antes de pasar el trabajo a un equipo de prueba?

    
pregunta Kye 08.07.2017 - 00:25

5 respuestas

8
  

¿Es una prueba unitaria un mejor reemplazo para los trabajos en mi máquina?

Sí, es absurdamente mejor. A menos que tenga algún tipo de contenedorización para garantizar la configuración de su entorno, ejecutar en su máquina local no garantiza nada. Y aun así, hacerlo a mano es solo pedirle a otros que cometan un error haciendo lo mismo a mano. Las pruebas unitarias comprueban que la funcionalidad en sí misma funciona de manera rápida, confiable y repetitiva.

  

¿Se considera poco profesional si no confirmo los cambios manualmente antes de pasar el trabajo a un equipo de prueba?

Puede ser. Los diferentes entornos de trabajo tienen diferentes procedimientos y expectativas de funcionamiento estándar. Espero que a la mayoría de los entornos no le importe que solo haya realizado las pruebas de unidad o que no le importe lo suficiente como para saber que solo ha realizado las pruebas de unidad.

Personalmente, solo verificaré manualmente las cosas que, por algún motivo, sean prohibitivas para la prueba de unidad o que sean recogidas por un interesado con mucha sensibilidad.

    
respondido por el Telastyn 08.07.2017 - 00:57
8

No. Necesita una prueba de integración o UI para verificar que todo funciona.

Lo ideal es que se realicen en algún tipo de entorno de prueba en lugar de en su propia máquina.

Si te falta eso, probablemente valga la pena realizar la configuración y probarlo manualmente. Después de todo, es una cosa del tiempo para ese sistema, ¿verdad?

Use una máquina virtual y guarde la imagen para reutilizarla.

Las pruebas unitarias son excelentes, pero no detectan elementos básicos como la configuración, lo que romperá el sistema tan mal como un error en tu código.

    
respondido por el Ewan 08.07.2017 - 10:02
3

Es una cuestión de costo. Digamos que su código debe funcionar en seis entornos significativamente diferentes, y que las pruebas unitarias están configuradas para verificar todos estos entornos. Y le llevaría seis horas de trabajo configurar uno de estos entornos en su máquina.

En ese caso, tendría sentido que compruebe el código en su máquina tal como está configurado (para encontrar errores que ocurren en cualquier entorno) y luego ejecute las pruebas unitarias. Es posible que pueda realizar tres rondas de pruebas unitarias y corregir pruebas rotas en el tiempo que le toma configurar un entorno.

    
respondido por el gnasher729 10.07.2017 - 10:35
3

Las pruebas unitarias son una buena adición a los trabajos en mi máquina.

Siempre debes ejecutar las pruebas de integración / manuales también. Es malo hacer solo pruebas unitarias.

Una buena manera de hacer que el código "funcione también en su máquina" es tener un servidor de prueba y una integración continua como Jenkins. De esa manera, el código también se ejecutará en otras máquinas.

    
respondido por el Lassi Autio 09.07.2017 - 22:10
1

Depende de la política de tu equipo.

Las pruebas de usuarios locales pueden cubrir rutas de código diferentes a las pruebas unitarias proporcionadas. Y más cobertura suele ser mejor. Las anomalías observadas en las pruebas de "funciona en mi máquina" a veces señalan la necesidad de pruebas de unidades adicionales u otros procedimientos de prueba.

Pero la política de su equipo puede ser que ese es el trabajo de otra persona. O, en equipos pequeños, podría ser su trabajo asegurarse de que algo funcione fuera del entorno de prueba.

    
respondido por el hotpaw2 09.07.2017 - 21:51

Lea otras preguntas en las etiquetas