1. Prueba unitaria:
* Procedimiento: Prueba de componentes individuales (funciones, métodos, módulos) de forma aislada. Esto implica la creación de casos de prueba que ejercen diversos insumos y casos de borde para verificar que cada componente se comporte como se esperaba.
* Herramientas: Junit (Java), Pytest (Python), Unittest (Python), Mocha (JavaScript), Jest (JavaScript).
* Técnicas: Desarrollo impulsado por la prueba (TDD), donde las pruebas se escriben * antes de * el código, burlándose de las dependencias para aislar la unidad bajo prueba.
2. Prueba de integración:
* Procedimiento: Prueba de la interacción entre diferentes componentes o módulos para garantizar que funcionen juntos correctamente.
* Herramientas: A menudo, las mismas herramientas utilizadas para las pruebas unitarias, pero con un enfoque en probar las interfaces e interacciones entre unidades.
* Técnicas: Uso de la burla para simular dependencias externas solo cuando sea necesario, centrarse en verificar el flujo de datos y la funcionalidad en múltiples unidades.
3. Prueba del sistema:
* Procedimiento: Probar todo el sistema en su conjunto para garantizar que cumpla con los requisitos especificados. Esto implica probar la funcionalidad, el rendimiento y la seguridad del sistema.
* Herramientas: Selenium (aplicaciones web), Appium (aplicaciones móviles), herramientas de prueba de carga como JMeter o K6.
* Técnicas: Pruebas de caja negra (pruebas sin conocimiento de los trabajos internos), pruebas de caja blanca (pruebas con conocimiento de los trabajos internos) y varias técnicas de diseño de pruebas, como partición de equivalencia y análisis de valor límite.
4. Prueba de regresión:
* Procedimiento: Vuelva a probar el software después de los cambios (por ejemplo, correcciones de errores, nuevas características) para garantizar que la funcionalidad existente no se haya roto. Esto es crucial para mantener la calidad del software con el tiempo.
* Herramientas: Los marcos de automatización de pruebas (como Selenium, Pytest, JUnit) son esenciales para pruebas de regresión eficientes. Las herramientas de gestión de pruebas ayudan a rastrear la ejecución y los resultados de las pruebas.
* Técnicas: Ejecución de suites de prueba existentes, priorizando las pruebas basadas en el riesgo y el impacto.
5. Pruebas de rendimiento:
* Procedimiento: Evaluación de la capacidad de respuesta, estabilidad, escalabilidad y uso de recursos del sistema en diferentes condiciones de carga.
* Herramientas: JMeter, K6, Gatling, LoadRunner.
* Técnicas: Prueba de carga (simulando una gran cantidad de usuarios), pruebas de estrés (empujando el sistema más allá de sus límites), pruebas de resistencia (probando la capacidad del sistema para manejar la carga sostenida).
6. Pruebas de seguridad:
* Procedimiento: Identificar vulnerabilidades y debilidades en el sistema que podrían ser explotados por los atacantes.
* Herramientas: Herramientas de seguridad de aplicaciones estáticas y dinámicas (SAST/DAST), herramientas de prueba de penetración.
* Técnicas: Escaneo de vulnerabilidad, prueba de penetración, revisión del código para defectos de seguridad.
7. Prueba de usabilidad:
* Procedimiento: Evaluar la facilidad de uso y la efectividad de la herramienta desde la perspectiva de un usuario.
* Herramientas: Observación, entrevistas de usuario, encuestas, software de prueba de usabilidad.
* Técnicas: Evaluación heurística, tutoriales cognitivos, sesiones de prueba de usuario.
Los procedimientos de prueba específicos utilizados también variarán según la metodología de desarrollo (por ejemplo, ágil, cascada). Las metodologías ágiles generalmente enfatizan las pruebas e integración continuas, mientras que la cascada podría implicar fases de prueba más extensas al final del ciclo de desarrollo. Además de lo anterior, muchos equipos incorporan revisión de código y análisis estático como parte de su estrategia de prueba.
