¿Cuál es el objetivo de las pruebas unitarias?

¿Cuál es el objetivo de las pruebas unitarias?

Como programador junior, es posible que las pruebas unitarias le confundan. Para empeorar las cosas, las pruebas que se utilizan como ejemplos a menudo hacen que su propósito sea menos claro. Cuando ves cosas como test example: expect(2+2).toBe(4); expect(dog.back()).toEqual('woof') tiene razón en dudar de que exista una razón sólida para dedicar algún tiempo a escribirlos. A continuación, muestro mis razones para escribir pruebas unitarias.

Que son las pruebas unitarias

Las pruebas unitarias son scripts simples que verifican si una unidad dada—clase, función, módulo, etc.—está funcionando como se esperaba. Están pensados para ser bastante simples, para cubrir el camino feliz del código más algunos casos extremos. Contribuyen al éxito a largo plazo de un proyecto por las razones que analizo a continuación.

Acelere las pruebas de desarrollo

Cuando empiezas a crear aplicaciones, lo más natural es probar el código con la interfaz de usuario. Puede hacer que este proceso sea más rápido y confiable escribiendo un script que verifique el código por usted. Con las pruebas en su lugar, volver a ejecutarlas todas no le quita energía mental; puede hacerlo con la frecuencia que desee. Esto también conduce a un ciclo de retroalimentación más corto, lo que lo ayudará a mantenerse concentrado y productivo.

Descubra casos extremos

Escribir pruebas unitarias me hace pensar en casos extremos: todas las situaciones que son raras, inesperadas o incorrectas. Cuando escribe la lógica, es normal concentrarse en el camino feliz, o en lo que es normal y se espera que suceda. Cuando escribe pruebas, puede configurar comprobaciones para los casos extremos y definir lo que debería suceder en cada uno de ellos. Esto hace que su código sea más resistente en casos de entradas inesperadas.

Asegúrese de que su código esté compuesto por unidades

Cuando agrega pruebas unitarias a su código, ve qué es fácil de probar y qué no. A medida que su código crece en tamaño y complejidad, las pruebas lo obligarán a dividirlo en partes manejables. Esto es genial porque te ayudará a llevar la calidad de tu código al siguiente nivel. Cada segmento que recibió responsabilidades excesivas requerirá pruebas unitarias exponencialmente más complicadas. En esos casos, es una buena idea detenerse y repensar cómo organiza su lógica.

Documentación interactiva

Tus pruebas se convertirán en un recurso adicional para que la próxima persona que trabaje en el código averigüe qué está haciendo y cómo se supone que funciona. Es una especie de documentación extra, con bonificaciones:

  1. A menudo es más preciso que las descripciones escritas en la documentación real.
  2. Se pueden ejecutar pruebas con el código actual para asegurarse de que todas las declaraciones sigan siendo válidas; no depende de un humano para leer, comprender y verificar el código.

Red de seguridad para cambios futuros

Las pruebas unitarias se ejecutan tan rápido que es una obviedad ejecutarlas en cualquier actualización, sin importar cuán pequeños parezcan los cambios. Puede configurar su repositorio para ejecutar la integración continua (CI) y aceptar solo los cambios que pasen todas las pruebas. De esta manera, puede garantizar una integración fluida de los cambios sin importar la actualización:

  • actualización menor que "no debería romper nada".
  • actualización de biblioteca de terceros
  • intento rápido y sucio de alguna solución

Las pruebas unitarias protegen la base de código contra todas las regresiones menores que cubren.

Resumen

Las pruebas unitarias son una parte esencial para mantener un código de alta calidad. Puedes verlo como una de las patas de una mesa:

una mesa con 'calidad del condigo' escrito en ella, mantenida por patas con 'codigo', 'documentation', 'pruebas manuales' y 'pruebas unitarias' Claro, puede eliminarlo, pero hará que mantener el equilibrio sea más complicado. Escríbalos y le ayudarán a lograr una buena calidad de código y hacer que su aplicación sea más segura.

Enlaces

Publicado originalmente en inglés.