Comencemos con lo básico. Exploración de los dos modos de prueba generales y los tres tipos comunes de automatización de pruebas
A todos nos ha pasado: ¿cuál es un meme recurrente de programación que ocurre con demasiada frecuencia en la vida real?
Este meme lo resume bastante bien: cada cajón funciona perfectamente de forma individual, pero en combinación con el otro cajón, se bloquean entre sí y no funcionan. Debes asegurarte de que ambos cajones funcionen bien entre sí y se puedan operar al mismo tiempo.
Aplica esto al desarrollo web: escribiste algunas pruebas, tal vez incluso lograste una cobertura de prueba del 100%, pero tu aplicación aún debe funcionar una vez que se implementen otras partes. Es posible que las unidades funcionen bien por separado, pero no en relación con otras. Escribir algunas pruebas es fundamental, pero es solo una parte de la configuración de prueba ideal para tu proyecto. Como primer paso, debes determinar qué partes de la calidad de la aplicación debes garantizar y cómo puedes lograrlo.
En pocas palabras, necesitas un plan antes de comenzar a escribir el código de prueba real. Para abordar el tema de cómo realizar pruebas de forma práctica, comencemos con una hoja en blanco y respondamos dos preguntas básicas:
- ¿Cómo quieres probar?
- ¿Qué quieres probar?
En este artículo, se abordan los aspectos generales que debes saber para responder la primera pregunta. Para comenzar desde un punto en común, primero aprendamos qué modos de prueba existen y, luego, enfoquémonos en los tipos de pruebas comunes. En artículos posteriores, responderemos la segunda pregunta, combinaremos las respuestas y encontraremos la estrategia de pruebas que mejor se adapte a tu proyecto. ¡Vamos! 🙌
Comienza con los conceptos básicos: Modos de prueba generales
Cuando respondas la pregunta de cómo realizar la prueba, el primer punto que debes aclarar es muy abstracto. ¿Debes realizar la prueba de forma manual o dejar que una computadora se encargue? Sin embargo, es importante no caer en el pensamiento binario.
Pruebas manuales frente a pruebas automáticas
Si les pides a los ingenieros de control de calidad que definan las pruebas, es probable que primero las dividan en dos “modos”:
- Pruebas manuales: Este es un método de prueba típico que realizan personas reales. Un ingeniero de control de calidad hace clic en la aplicación, comprueba si funciona y, al mismo tiempo, intenta dañarla. La forma más común es la prueba exploratoria, en la que el ingeniero investiga la aplicación con su conocimiento de la aplicación en función de una ruta de acceso o lista de tareas predefinida.
- Pruebas automatizadas: Este es un tipo de prueba que realiza una computadora. Los ingenieros de control de calidad la implementan para automatizar las pruebas repetitivas y monótonas.
Esta serie de guías se centrará principalmente en las pruebas automatizadas. Sin embargo, no debes enfocarte en una sola forma de prueba. Incluso si la automatización ahorra mucho tiempo y esfuerzo, las personas y las pruebas manuales siempre tendrán un papel fundamental. En cambio, la automatización de pruebas debería liberar a las personas para que se enfoquen en las pruebas exploratorias y la resolución de problemas creativa. Por ejemplo, garantizar la calidad de las experiencias del usuario o proteger la lógica empresarial de alto riesgo. En otras palabras, la automatización te respalda. ❤️
Caja opaca en comparación con caja transparente
Así que definiste los modos generales de prueba. Sin embargo, eso aún no es suficiente. Para planificar la estrategia de pruebas, hay una pregunta más que debes responder: ¿debes saber cómo funciona tu aplicación en su interior o es mejor realizar pruebas sin este conocimiento? Según la respuesta, hay dos procedimientos para elegir para derivar y seleccionar casos de prueba:
- Pruebas de caja opaca (o pruebas de caja negra). Se basa en el análisis de los requisitos funcionales o no funcionales (especificaciones) de un componente o sistema sin considerar su estructura interna.
- Las pruebas de caja transparente (o pruebas de caja blanca) son un procedimiento que tiene en cuenta la estructura interna de dicha caja. En otras palabras, cómo funciona tu aplicación en segundo plano.
Ambos procedimientos se pueden aplicar a las pruebas manuales y automatizadas. Sin embargo, algunos aspectos de los modos de prueba generales pueden enfocarse más en uno de los dos. Hablaremos de eso más adelante. Por ahora, analicemos en más detalle los tipos de automatización de pruebas.
Tipos de automatización de pruebas: ¿Cómo quieres realizar la prueba?
A medida que te acercas a responder la pregunta "cómo", ya decidiste realizar algunas pruebas manuales. Sin embargo, elegir y aplicar tipos de automatización de pruebas es un poco más desafiante. Los tipos de pruebas de automatización están estrechamente relacionados con las métricas que deseas crear en tus proyectos. Veamos con más detalle los más importantes.
Como se ilustra en el meme mencionado anteriormente, ya conoces dos tipos: pruebas de unidades y pruebas de integración. Las pruebas de extremo a extremo son la tercera prueba importante que se debe tener en cuenta. Pero eso no es todo. Veamos los detalles.
Pruebas de unidades
Las pruebas de unidades son un tipo de prueba en el que se prueban de forma individual e independiente las partes o unidades menores de una aplicación para verificar que funcionen correctamente. Estas unidades pueden variar en alcance, desde funciones, clases o interfaces hasta servicios o componentes completos. Sus atributos principales son la velocidad de ejecución, el aislamiento y la facilidad de mantenimiento. Si quieres profundizar en las pruebas de unidades, consulta esta guía sobre pruebas de unidades.
Pruebas de integración
Las pruebas de integración se centran en las interacciones entre componentes o sistemas. En otras palabras, en qué medida funcionan en conjunto. Algunos ejemplos típicos de pruebas de integración son las pruebas de API o de componentes.
Pruebas de extremo a extremo
Estas pruebas suelen denominarse pruebas de IU, y este nombre explica su función aún mejor. Estas pruebas interactúan con la IU de tu aplicación, incluida la pila de aplicaciones completa, y la prueban de un extremo a otro.
Se asemejan a una prueba del sistema si te refieres a la teoría del control de calidad. Estas pruebas simulan un usuario real y sus interacciones. Las pruebas de extremo a extremo requieren más tiempo de ejecución porque involucran todo el sistema, y más tiempo de ejecución requiere más potencia de procesamiento. Como resultado, este esfuerzo adicional genera costos de mantenimiento más altos.
Pruebas visuales de la IU
Una subcategoría interesante de las pruebas de IU son las pruebas visuales. Estas pruebas son pruebas de extremo a extremo extendidas que proporcionan un medio para verificar el resultado visible de una aplicación. Esta prueba toma una captura de pantalla después de un cambio y otra que contiene el “status quo” (o archivo de referencia) y, luego, proporciona esos resultados a un revisor humano para que los inspeccione y verifique. En otras palabras, ayuda a encontrar “errores visuales” en el aspecto de una página, más allá de los errores puramente funcionales y no escritos de forma explícita en las aserciones.
Análisis estático
Hay algo más que debemos presentar aquí: el análisis estático. No es un tipo de prueba en el sentido de los libros de texto. Sin embargo, más adelante será un aspecto esencial en las estrategias de control de calidad. Puedes imaginar que funciona como una función de corrector ortográfico: analiza tu código en busca de defectos y errores de sintaxis más significativos sin ejecutar el programa, lo que permite detectar problemas de estilo de código. Esta medida simple puede evitar muchos errores. Este es un buen punto para aprender sobre el análisis estático si quieres conocerlo con más detalle.
Pruebas de todo tipo: ¿Cómo funciona todo esto en conjunto?
Mientras buscas respuestas a todas estas preguntas, es posible que encuentres una posible solución en algunas analogías. En las comunidades web y de pruebas, específicamente, los desarrolladores suelen usar estas analogías para darte una idea de cuántas pruebas debes usar y de qué tipo.
Las siguientes cinco estrategias que se muestran en esta imagen son las más comunes:
- Pirámide de pruebas
- Diamante de prueba
- Prueba de cono de helado (también conocida como prueba de pizza)
- Prueba Honeycomb
- Trofeo de prueba
Es realmente mucha información para procesar. ¿Cómo deberías decidirte por una estrategia de prueba que coincida con todo esto? No te preocupes, tenemos lo que necesitas. En el siguiente artículo, analizaremos estas diferentes estrategias con más detalle y explicaremos cómo elegir la más adecuada para tu proyecto. ¡No te pierdas ninguna novedad! 🔥