Prueba de unidad sucintamente ¿Por qué prueba de unidad?

Este es un extracto del eBook de Unit Testing Succinctly, por Marc Clifton, amablemente proporcionado por Syncfusion.

El mantra habitual que escuchamos con respecto a cualquier metodología de software es que mejora la facilidad de uso y la calidad, reduce el tiempo de desarrollo y prueba, y lleva el producto al mercado más rápido y con menos errores. Estos son objetivos elevados, pero todavía tengo que ver una metodología que ofrezca el Grial del desarrollo de software..

En última instancia, la razón principal para escribir pruebas unitarias es demostrar la corrección, y esto sucede solo si escribe pruebas unitarias bien. Las pruebas unitarias por sí mismas no mejorarán directamente la facilidad de uso o la calidad de su producto. Aún puede hacer un lío de la aplicación ya sea que se haya comprobado que es correcta o no, y ciertamente no se garantiza que reduzca el tiempo de desarrollo y prueba (más sobre esto más adelante) o que su producto llegue al mercado antes..

Entonces, seamos claros y reales desde el principio: las pruebas unitarias se pueden usar para verificar la corrección y cualquier efecto secundario Lo que ocurre con respecto a su proceso de desarrollo debe equilibrarse con el esfuerzo de escribir y mantener pruebas de unidad útiles..


Medición de la corrección

Pruebas unitarias bien escritas te darán una mensurable Grado de confianza en que la gran cantidad de métodos que comprenden su aplicación se comportarán correctamente. La forma más sencilla de realizar objetivamente esta medición es una prueba de cobertura: ¿Qué porcentaje de los métodos en su aplicación tienen pruebas unitarias escritas en su contra? Si bien esta pregunta no aborda directamente si un método debe considerarse una unidad (se explica más adelante), o si las pruebas son significativas, no obstante, es una medida que puede tomar en cualquier momento y puede usarse como un punto de referencia para la corrección de tu solicitud.

La prueba de unidad es un proceso iterativo: siempre habrá errores que no se detectan con la prueba de unidad. Sin embargo, la cantidad de errores informados a lo largo del tiempo y la cantidad de problemas no resueltos frente a problemas resueltos brindan información significativa sobre la salud de su aplicación. Si bien es imposible decir: "Con las pruebas unitarias, la cantidad de errores se ha reducido en un 50 por ciento", es posible medir cuántos errores tiene su aplicación debido a la cobertura incompleta de las pruebas unitarias. A medida que escribe pruebas unitarias para verificar el problema y la solución, también puede medir cuántas pruebas unitarias ha escrito contra errores informados en comparación con el número total de pruebas unitarias..

Todos estos puntos de referencia aportan cierto grado de objetividad a su proceso de desarrollo. Por lo tanto, uno de los beneficios de las pruebas unitarias es que proporciona a todos, desde los desarrolladores hasta los gerentes, información objetiva que puede retroalimentarse en el proceso de desarrollo para mejorar ese proceso..


Repetición, Repetición, Repetición

Otro beneficio es la repetibilidad, también conocido como prueba de regresión. Como una aplicación madura, queremos asegurarnos de que los existentes, trabajando El código no está roto. Al escribir pruebas de unidad contra los métodos a medida que se escriben y agregar pruebas de unidad para detectar errores a medida que se informan, todos estos se pueden volver a probar automáticamente cuando se agrega un nuevo código o se cambia el código existente. Las pruebas unitarias se convierten en una herramienta de reducción de tiempo significativa cuando se trata de probar si una aplicación aún se comporta correctamente después de un cambio de código menor o significativo. Si bien las pruebas unitarias no reemplazan las pruebas de usabilidad, pruebas de rendimiento, pruebas de carga, etc., definitivamente ayuda a eliminar el tiempo perdido en la pregunta común: “Esto funcionó antes; ¿Por qué no ahora?


Cobertura de código

Es fácil probar que un método está haciendo lo correcto cuando todos los procesos en el método se ejecutan linealmente. Sin embargo, una vez que agregue un Si declaración o una cambiar declaración, estas creando complejidad ciclomatica, que es una forma elegante de decir que su código ahora tiene múltiples rutas de ejecución. Las pruebas unitarias más útiles son aquellas que prueban. cada rama de código Eso ocurre en tu método. Escribir este tipo de pruebas unitarias puede ser minucioso, pero vale la pena el esfuerzo, ya que garantizan que se haya ejecutado al menos cada rama de código, lo que no es algo que pueda ocurrir durante las pruebas de aceptación, pruebas de usabilidad u otras pruebas que el aseguramiento de la calidad departamento (si tiene uno) realiza.

A lo largo de esta serie, vamos a echar un vistazo a una serie de estrategias diferentes y consejos sobre cómo realizar pruebas de unidad efectivas.