Diferentes tipos de pruebas y la pirámide de pruebas

Completado

En este caso, se describirá la pirámide de pruebas y los distintos tipos de pruebas. Saber cómo los distintos tipos de pruebas abordan diferentes vulnerabilidades en el código garantizará que el tiempo que invierte es lo más eficaz posible.

La pirámide de pruebas

La pirámide de pruebas se ha popularizado en los últimos años como explicación de los distintos tipos de pruebas y su popularidad en el software. Puede encontrar muchas versiones diferentes de la pirámide de pruebas y su uso todavía se debate, pero se intentará proporcionar una explicación sencilla y sin controversias.

La base de la pirámide consta de pruebas unitarias. Las pruebas unitarias suelen ser las más fáciles de escribir, las más fáciles de mantener a medida que cambia el código y las más rápidas de ejecutar. Para muchos usuarios, las pruebas unitarias son la primera introducción a las pruebas. A medida que se escala la pirámide, las pruebas suelen resultar más costosas de escribir, mantener y ejecutar. Las pruebas de la parte superior de la pirámide todavía proporcionan un valor alto, aunque hay menos de estos tipos. Por ejemplo, los usuarios suelen tener más pruebas unitarias que de integración y más pruebas de integración que de IU.

A graphic showing a pyramid divided into sections, labeled with different types of tests. Beginning from the bottom and going up, the types of tests are unit, integration, performance, load, acceptance, and UI.

Tipos de pruebas

En el sector se desarrollan continuamente formas mejoradas para garantizar la calidad del código con las pruebas. Hay más tipos de pruebas que las enumeradas aquí, pero estas son las principales. Es posible que la propia pirámide de pruebas se tenga que reescribir o modificar a medida que mejoren los procedimientos de software y las tecnologías de desarrollo evolucionen nuestra forma de pensar y realizar pruebas.

Pruebas unitarias

Las pruebas unitarias son los tipos más básicos de pruebas y constituyen la base de la pirámide de pruebas. Deben ser específicas de un método o de la unidad de código más pequeña que se pueda probar. Un método puede tener muchas pruebas unitarias para abarcar toda su funcionalidad, dado un intervalo de parámetros. Estas pruebas son las más fáciles de escribir y también las más fáciles de depurar, ya que deben ser la manera más sencilla de ejecutar el fragmento de código que prueban.

Por ejemplo, imagine que tiene un método que analiza una dirección postal a partir de una cadena de entrada. Las pruebas unitarias correctas para este método insertarían muchos tipos de direcciones postales diferentes para asegurarse de que el método las analiza correctamente y coincide con el resultado esperado. Una prueba unitaria podría insertar una dirección postal de otro país u otra región como una cadena. Otra podría insertar una cadena con caracteres especiales para asegurarse de que el analizador no se interrumpa. Las pruebas unitarias deben probar pequeños aspectos de la funcionalidad de la aplicación para que, si se produce un error en la prueba, sea fácil determinar qué funcionalidad no se ha podido realizar.

Pruebas de integración

Las pruebas de integración son el paso siguiente a las pruebas unitarias en la pirámide de pruebas. Pueden abarcar varios métodos o un conjunto de comportamiento más amplio que las pruebas unitarias. En el ejemplo de las direcciones postales, una prueba de integración podría probar el analizador de direcciones postales y un método para calcular una tarifa de envío para esa ubicación. La combinación de las dos ayuda a resumir si varias partes de la aplicación funcionan según lo previsto.

Pruebas de rendimiento

Las pruebas de rendimiento suelen capturar el tiempo que tardan determinadas partes del programa en ejecutarse. Las pruebas de rendimiento son una excelente manera de detectar un cambio de código que ralentiza la aplicación. Puede establecer temporizadores al principio de las pruebas que solo se completen cuando finalicen y notificar un error en la prueba si el temporizador supera un umbral determinado.

Pruebas de carga

Las pruebas de carga pueden ser similares a las de rendimiento, pero se centran más en el uso de la aplicación a gran escala. ¿Cómo se comporta la aplicación cuando la utilizan 1000 usuarios? ¿Y si son 10 000 usuarios? Las pruebas de carga ayudan a determinar si la aplicación se ralentiza o inicia excepciones cuando se somete a mucha actividad.

Pruebas de aceptación

Las pruebas de aceptación pueden guiar hacia el resultado deseado para la empresa. Si el cliente le ha proporcionado una lista de criterios para la aplicación, puede escribir pruebas de aceptación que solo se superen después de que se cumplan todos esos criterios. Las pruebas de aceptación son otra manera de integrar las especificaciones con el código.

Pruebas de IU

Las pruebas de interfaz de usuario pueden probar directamente las interacciones de la interfaz de usuario de una aplicación. Están pensadas para imitar a un usuario real que hace clic e interactúa con la aplicación, y para probar si la respuesta de la interfaz de usuario es correcta. Las pruebas de interfaz de usuario se encuentran en la parte superior de la pirámide de pruebas. Hay muchos marcos que pueden automatizar las interacciones de la interfaz de usuario. Por ejemplo, Playwright puede automatizar el explorador para imitar a un usuario que utiliza el sitio web.

Otro tipo de pruebas de interfaz de usuario son las pruebas manuales, en las que una persona real usa la aplicación. Hacer que un usuario pruebe la aplicación antes de su publicación tiene algunas ventajas y desventajas. Puede ser un tipo de prueba más lento porque puede tardar un tiempo en describir cómo usar la aplicación para un usuario nuevo y puede ser difícil repetir exactamente los mismos pasos cada vez. La principal ventaja es una mayor confianza en que la aplicación está lista para clientes humanos reales y no se ha pasado nada por alto porque la aplicación se ha usado para algo más que la automatización.

Este método de prueba merece una consideración cuidadosa antes de confirmarla. Es fácil invertir en pruebas de interfaz de usuario, ya que pueden parecer la representación más directa de lo que experimentan los usuarios cuando utilizan la aplicación. Por este mismo motivo, el sector adoptó rápidamente las pruebas de interfaz de usuario cuando aparecieron por primera vez en escena. La desventaja es que la interfaz de usuario también cambia rápidamente, por lo que es posible que todas las pruebas que escriba necesiten actualizaciones coherentes, incluso para un pequeño cambio. Evite escribir demasiadas pruebas de interfaz de usuario que necesitarán una gran inversión para mantenerse al día a medida que crece la aplicación.

Sugerencia

Muchos marcos de pruebas de interfaz de usuario modernos abordan específicamente esta capacidad de mantener las pruebas de interfaz de usuario actualizadas, por lo que es recomendable buscar plataformas que también permitan un mantenimiento más sencillo a medida que se realizan las pruebas.

1.

¿Cuál es el tipo de prueba más común?

2.

Si se quiere probar cómo se escala una aplicación con varios usuarios, ¿qué tipo de prueba se debería escribir?