TODO-EN-UNO: TIPOS DE PRUEBAS
Tipos de Testing
En el campo del testing de software, existen diferentes tipos de pruebas que se realizan para garantizar la calidad y la funcionalidad de una aplicaciĂłn. Estos tipos se pueden clasificar en dos macro categorĂas: Testing Funcional y Testing No-Funcional. A continuaciĂłn, explicaremos cada una de ellas, asĂ como los tipos especĂficos que pertenecen a cada categorĂa.
Testing Funcional
El Testing Funcional se enfoca en verificar si el software cumple con los requisitos funcionales establecidos. Estos requisitos describen qué acciones debe realizar el software y cómo debe responder en diferentes situaciones. Los tipos de Testing Funcional mås comunes son:
a) Exploratory Testing: Este tipo de prueba se realiza sin un plan o casos de prueba predefinidos. El tester explora y navega por la aplicaciĂłn de manera libre, buscando defectos y problemas no esperados. Se utiliza cuando se necesita descubrir nuevas funcionalidades o cuando no hay suficiente documentaciĂłn sobre el sistema. Por ejemplo, al probar un nuevo juego de computadora, el tester puede jugar libremente, realizar diferentes acciones y observar cualquier comportamiento inesperado.
b) UI Testing: En este tipo de prueba, se verifica la interfaz de usuario de la aplicación para asegurarse de que sea intuitiva, esté bien diseñada y funcione correctamente. Se comprueba si los elementos de la interfaz responden correctamente a las interacciones del usuario, como hacer clic en botones, escribir en campos de texto, etc. Por ejemplo, al probar un formulario de registro en un sitio web, el tester verificarå que los campos de entrada funcionen correctamente, los botones realicen las acciones esperadas y la interfaz se vea correctamente en diferentes dispositivos.
c) DB Testing (Pruebas de Base de Datos): En este tipo de prueba, se verifica la integridad y la funcionalidad de la base de datos subyacente de la aplicación. Se comprueba que los datos se almacenen y recuperen correctamente, que las consultas y los informes generados sean precisos y que no haya pérdida de datos. Por ejemplo, al probar un sistema de gestión de inventario, el tester puede verificar que los productos se almacenen correctamente en la base de datos y se puedan buscar y recuperar adecuadamente.
d) API Testing: Este tipo de prueba se enfoca en las interfaces de programaciĂłn de aplicaciones (API) utilizadas para comunicarse con otras aplicaciones o servicios. Se verifica si las API funcionan correctamente, manejan correctamente los datos y responden adecuadamente a las solicitudes. Por ejemplo, al probar una aplicaciĂłn de clima, el tester puede verificar si la API utilizada para obtener los datos meteorolĂłgicos devuelve la informaciĂłn correcta y en el formato adecuado.
e) E2E Testing (Pruebas de Extremo a Extremo): En estas pruebas, se verifica todo el flujo de trabajo de una aplicaciĂłn, desde el inicio hasta el final, simulando las acciones de un usuario real. Se comprueba si todas las partes de la aplicaciĂłn interactĂșan correctamente y si se cumplen los objetivos de negocio. Por ejemplo, al probar un carrito de compras en lĂnea, el tester puede agregar productos al carrito, ingresar la informaciĂłn de envĂo, realizar el pago y verificar que la orden se procese correctamente.
Testing No-Funcional
El Testing No-Funcional se centra en aspectos no relacionados con las funcionalidades especĂficas de la aplicaciĂłn, sino en la calidad general del software. Estos aspectos pueden incluir el rendimiento, la seguridad, la usabilidad, la compatibilidad, entre otros. A continuaciĂłn, mencionaremos algunos de los tipos mĂĄs importantes de Testing No-Funcional:
a) Performance Testing (Pruebas de Rendimiento): Este tipo de prueba se realiza para evaluar el rendimiento y la capacidad de respuesta de la aplicaciĂłn bajo diferentes cargas y condiciones. Se mide la velocidad, la escalabilidad y la estabilidad del software. Por ejemplo, al probar un sitio web de comercio electrĂłnico, se pueden simular mĂșltiples usuarios realizando compras simultĂĄneamente para verificar si la aplicaciĂłn puede manejar la carga y responder de manera eficiente.
b) Security Testing (Pruebas de Seguridad): En este tipo de prueba, se evalĂșa la resistencia del software a posibles ataques y vulnerabilidades de seguridad. Se busca identificar brechas de seguridad y asegurar que los datos confidenciales estĂ©n protegidos adecuadamente. Por ejemplo, al probar una aplicaciĂłn de banca en lĂnea, se pueden realizar pruebas de penetraciĂłn para identificar posibles debilidades y asegurar que la informaciĂłn de los usuarios estĂ© segura.
c) Usability Testing (Pruebas de Usabilidad): Estas pruebas se realizan para evaluar la facilidad de uso y la experiencia del usuario de la aplicaciĂłn. Se busca garantizar que la interfaz de usuario sea intuitiva, fĂĄcil de navegar y que cumpla con las expectativas de los usuarios. Por ejemplo, al probar una aplicaciĂłn mĂłvil de redes sociales, se pueden realizar pruebas con usuarios reales para obtener su retroalimentaciĂłn sobre la facilidad de uso y la navegaciĂłn del sistema.
d) Compatibility Testing (Pruebas de Compatibilidad): En este tipo de prueba, se verifica si la aplicación es compatible con diferentes plataformas, sistemas operativos, navegadores y dispositivos. Se comprueba que la aplicación funcione correctamente en diferentes entornos para garantizar una experiencia consistente para los usuarios. Por ejemplo, al probar una aplicación móvil, se pueden verificar su compatibilidad con diferentes versiones de sistemas operativos, como Android e iOS, y con diferentes tamaños de pantalla.
AdemĂĄs de los tipos mencionados anteriormente, existen ciertos tipos estratĂ©gicos de testing que se realizan de acuerdo con un plan de pruebas o un Master Test Plan. Estos tipos se centran en situaciones especĂficas y desempeñan un papel crucial en el proceso de desarrollo de software. Algunos de los tipos estratĂ©gicos de testing mĂĄs conocidos son:
a) In-Sprint Testing (Pruebas en la IteraciĂłn): Este tipo de prueba se realiza durante la iteraciĂłn o sprint actual del proceso de desarrollo ĂĄgil. Se lleva a cabo para verificar las nuevas caracterĂsticas implementadas en las historias de usuario y cerrarlas satisfactoriamente. Por ejemplo, al desarrollar una aplicaciĂłn de correo electrĂłnico, el equipo de desarrollo puede realizar pruebas en cada iteraciĂłn para asegurarse de que la funcionalidad de enviar y recibir correos electrĂłnicos funcione correctamente.
b) Regression Testing (Pruebas de RegresiĂłn): Estas pruebas se realizan para asegurar que las modificaciones o actualizaciones en el software no hayan introducido nuevos errores o afectado negativamente las funcionalidades existentes. Se ejecutan casos de prueba previamente validados para verificar si todo sigue funcionando correctamente. Por ejemplo, al agregar una nueva funciĂłn a una aplicaciĂłn de procesamiento de texto, se deben ejecutar pruebas de regresiĂłn para garantizar que las funciones existentes, como editar, guardar y abrir documentos, no se hayan visto afectadas.
c) Smoke Testing (Pruebas de Humo): En este tipo de prueba, se realizan pruebas bĂĄsicas y de alto nivel para verificar si la aplicaciĂłn estĂĄ lo suficientemente estable como para someterse a pruebas mĂĄs exhaustivas. Se ejecutan casos de prueba breves y simples en las principales funcionalidades de la aplicaciĂłn. Por ejemplo, al desarrollar un sistema de reservas de hoteles, se puede realizar una prueba de humo para verificar si los usuarios pueden realizar una reserva bĂĄsica sin encontrar errores graves.
d) Sanity Testing (Pruebas de Sanidad): Estas pruebas se realizan despuĂ©s de realizar cambios significativos en el software para verificar si las funcionalidades principales siguen funcionando correctamente. Se enfocan en ĂĄreas crĂticas de la aplicaciĂłn para asegurarse de que no se hayan introducido problemas importantes. Por ejemplo, al corregir un error importante en una aplicaciĂłn de banca en lĂnea, se pueden realizar pruebas de sanidad para verificar si los usuarios aĂșn pueden iniciar sesiĂłn, ver su saldo y realizar transacciones bĂĄsicas.
e) Re-Testing (Re-Pruebas): Este tipo de prueba se realiza para verificar si los errores previamente encontrados y corregidos se han solucionado correctamente. Se ejecutan los casos de prueba relevantes que cubren los errores corregidos para asegurarse de que no se hayan reintroducido. Por ejemplo, despuĂ©s de solucionar un error relacionado con el envĂo de correos electrĂłnicos en una aplicaciĂłn de marketing, se debe realizar una re-prueba para confirmar que el envĂo de correos electrĂłnicos funcione correctamente sin errores.
f) Shift Left Testing (Pruebas de Antes de Implementación): Este enfoque de pruebas se basa en la integración temprana de las pruebas en el ciclo de vida del desarrollo de software. Se realiza desde las primeras etapas del desarrollo para identificar y corregir problemas råpidamente. Por ejemplo, en un proyecto de desarrollo ågil, los testers pueden participar en las revisiones de diseño y revisar los requisitos para identificar posibles problemas antes de que se implementen.
g) Shift Right Testing (Pruebas de Después de Release): Este enfoque de pruebas se centra en llevar a cabo pruebas adicionales después del lanzamiento de la aplicación en producción. Se realiza para obtener retroalimentación de los usuarios reales y monitorear el rendimiento y la calidad del software en un entorno real. Por ejemplo, una vez que se lanza una aplicación móvil, se pueden realizar pruebas de usabilidad con usuarios reales y recopilar sus comentarios para futuras mejoras y actualizaciones.
Â
Cada uno de estos tipos de testing desempeña un papel importante en el aseguramiento de la calidad del software y contribuye a la entrega de productos confiables y funcionales. La elección de los tipos de pruebas adecuados dependerå de los requisitos del proyecto, las necesidades del cliente y las etapas del ciclo de vida del desarrollo del software.