Pruebas dinámicas
La prueba dinámica es un método de prueba de software que se utiliza para probar el comportamiento dinámico del código de software. El objetivo principal de las pruebas dinámicas es probar el comportamiento del software con variables dinámicas o variables que no son constantes y encontrar áreas débiles en el entorno de ejecución del software. El código debe ejecutarse para probar el comportamiento dinámico.
Todos sabemos que las pruebas son verificación y validación, y se necesitan 2 V para completar las pruebas. De las 2 V, la verificación se denomina prueba estática y la otra "V", la validación se conoce como prueba dinámica.
Ejemplo de prueba dinámica
Entendamos cómo hacer pruebas dinámicas con un ejemplo:
Supongamos que estamos probando una página de inicio de sesión donde tenemos dos campos que dicen "Nombre de usuario" y "Contraseña" y el nombre de usuario está restringido a alfanumérico.
Cuando el usuario ingresa el nombre de usuario como "Guru99", el sistema acepta el mismo. Donde, como cuando el usuario ingresa como Guru99 @ 123, la aplicación arroja un mensaje de error. Este resultado muestra que el código actúa dinámicamente en función de la entrada del usuario.
La prueba dinámica es cuando está trabajando con el sistema real proporcionando una entrada y comparando el comportamiento real de la aplicación con el comportamiento esperado. En otras palabras, trabajar con el sistema con la intención de encontrar errores.
Entonces, en base a las declaraciones anteriores, podemos decir o concluir que las pruebas dinámicas son un proceso de validación de aplicaciones de software como usuario final en diferentes entornos para construir el software correcto.
¿Qué hacen las pruebas dinámicas?
El objetivo principal de las pruebas dinámicas es garantizar que el software funcione correctamente durante y después de la instalación del software, lo que garantiza una aplicación estable sin fallas importantes (esta afirmación se hace porque ningún software está libre de errores, las pruebas solo pueden mostrar la presencia de defectos y no ausencia)
El objetivo principal de la prueba dinámica es garantizar la coherencia del software; discutamos esto con un ejemplo.
En una Aplicación Bancaria, encontramos diferentes pantallas como Sección Mis Cuentas, Transferencia de Fondos, Pago de Cuentas, etc… Todas estas pantallas contienen un campo de monto que acepta algunos caracteres.
Digamos que el campo Mis cuentas muestra la cantidad como 25,000 y la transferencia de fondos como $ 25,000 y la pantalla de pago de facturas como $ 25000, aunque la cantidad es la misma, la forma en que se muestra la cantidad no es la misma, por lo que el software no es coherente.
La consistencia no solo se limita a la funcionalidad, sino que también se refiere a diferentes estándares como rendimiento, usabilidad, compatibilidad, etc., por lo que se vuelve muy importante realizar pruebas dinámicas.
Tipos de pruebas dinámicas
Las pruebas dinámicas se clasifican en dos categorías
- Prueba de caja blanca
- Prueba de caja negra
La siguiente representación pictórica nos da una idea sobre los tipos de pruebas dinámicas, niveles de prueba, etc.
Analicemos brevemente cada tipo de prueba y su propósito previsto
Prueba de caja blanca: la prueba de caja blanca es un método de prueba de software en el que el probador conoce la estructura / diseño interno. El objetivo principal de las pruebas de White Box es comprobar el rendimiento del sistema en función del código. Lo realizan principalmente los Desarrolladores o White Box Testers que tienen conocimientos sobre la programación.
Prueba de caja negra: la prueba de caja negra es un método de prueba en el que el probador NO conoce la estructura, el código o el diseño internos . El objetivo principal de esta prueba es verificar la funcionalidad del sistema bajo prueba y este tipo de prueba requiere ejecutar la suite de pruebas completa y es realizada principalmente por los Testers, y no es necesario ningún conocimiento de programación.
Las pruebas de caja negra se clasifican nuevamente en dos tipos.
Son
- Pruebas funcionales
- Pruebas no funcionales
Pruebas funcionales:
La prueba funcional se realiza para verificar que todas las características desarrolladas están de acuerdo con las especificaciones funcionales, y se realiza mediante la ejecución de los casos de prueba funcional redactados por el equipo de QA, en la fase de prueba funcional, el sistema se prueba proporcionando entrada, verificando la salida y comparar los resultados reales con los esperados.
Existen diferentes niveles de pruebas funcionales, de los cuales los más importantes son
- Prueba unitaria : generalmente, la unidad es una pequeña pieza de código que se puede probar, la prueba unitaria se realiza en una unidad individual de software y es realizada por desarrolladores
- Pruebas de integración: las pruebas de integración son las pruebas que se realizan después de las pruebas unitarias y se realizan combinando todas las unidades individuales que se pueden probar y las realizan desarrolladores o probadores
- Prueba del sistema: la prueba del sistema se realiza para garantizar si el sistema funciona según los requisitos y generalmente se realiza cuando el sistema completo está listo, lo realizan los probadores cuando la compilación o el código se publica al equipo de control de calidad
- Pruebas de aceptación: las pruebas de aceptación se realizan para verificar si el sistema ha cumplido con los requisitos comerciales y está listo para usar o para su implementación y, en general, lo realizan los usuarios finales.
Pruebas no funcionales : las pruebas no funcionales son una técnica de prueba que no se centra en los aspectos funcionales y se concentra principalmente en los atributos no funcionales del sistema, como pérdidas de memoria, rendimiento o robustez del sistema. Las pruebas no funcionales se realizan en todos los niveles de prueba.
Hay muchas técnicas de prueba no funcionales, de las cuales las más importantes son
- Performance Testing - Pruebas de rendimiento se realiza para comprobar si el tiempo de respuesta del sistema es normal según los requisitos de la carga de la red deseada.
- Pruebas de recuperación: las pruebas de recuperación son un método para verificar qué tan bien un sistema puede recuperarse de fallas y fallas de hardware.
- Pruebas de compatibilidad - Las pruebas de compatibilidad se realiza para comprobar cómo se comporta el sistema en diferentes entornos.
- Las pruebas de seguridad - las pruebas de seguridad se lleva a cabo para verificar la robustez de la aplicación, es decir, para garantizar que sólo los autoriza a los usuarios / papeles están accediendo al sistema de
- Las pruebas de usabilidad - Las pruebas de usabilidad es un método para verificar la capacidad de uso del sistema por los usuarios finales para verificar de lo cómodo que los usuarios están en el sistema.
Técnicas de prueba dinámica
Las técnicas de pruebas dinámicas en STLC consisten en diferentes tareas como análisis de requisitos para las pruebas, planificación de pruebas, diseño e implementación de casos de prueba, configuración del entorno de prueba, ejecución de casos de prueba, informes de errores y finalmente cierre de pruebas. Todas las tareas en las técnicas de prueba dinámica dependen de la finalización de la tarea anterior en el proceso de prueba.
En STLC, podemos decir que el proceso de prueba dinámica real comienza desde el diseño de casos de prueba, analicemos cada actividad en detalle.
Antes de entrar en el proceso, analicemos la estrategia que debe seguirse para las pruebas dinámicas.
La estrategia de prueba debe centrarse principalmente en los recursos disponibles y el plazo. En función de estos factores, se debe documentar el objetivo de las pruebas, el alcance de las pruebas, las fases o ciclos de las pruebas, el tipo de entorno, los supuestos o desafíos que se pueden enfrentar, los riesgos, etc.
Una vez que la estrategia está definida y es aceptada por la gerencia, comienza el diseño del caso de prueba del proceso real.
¿Qué es el diseño e implementación de pruebas?
En esta fase identificamos el,
- Características a probar
- Derivar las condiciones de prueba
- Derivar los elementos de cobertura
- Derivar los casos de prueba
Configuración del entorno de prueba
Tenemos que asegurarnos de que el entorno de prueba siempre sea similar al entorno de producción, en esta fase tenemos que instalar la compilación y administrar las máquinas de prueba.
Ejecución de pruebas
Durante esta fase, los casos de prueba se ejecutan realmente.
Informe de error capturado
Según la ejecución, si los resultados esperados y reales no son los mismos, el caso de prueba debe marcarse como Fallo y debe registrarse un error.
Ventajas de las pruebas dinámicas
- Las pruebas dinámicas pueden revelar los defectos descubiertos que se consideran demasiado difíciles o complicados y que no se pueden cubrir a través del análisis estático.
- En Dynamic Testing, ejecutamos el software de punta a punta, asegurando un software libre de errores que a su vez aumenta la calidad de un producto y proyecto.
- Las pruebas dinámicas se convierten en una herramienta esencial para detectar amenazas de seguridad.
Desventajas de las pruebas dinámicas
- Las pruebas dinámicas consumen tiempo porque ejecuta la aplicación / software o código que requiere una gran cantidad de recursos
- Las pruebas dinámicas aumentan el costo del proyecto / producto porque no comienza temprano en el ciclo de vida del software y, por lo tanto, cualquier problema resuelto en etapas posteriores puede resultar en un aumento del costo.
Conclusión:
En Ingeniería de Software, Verificación y Validación son dos medidas que se utilizan para comprobar que el producto de software cumple con las especificaciones de requisitos. Las pruebas estáticas implican verificación, mientras que las pruebas dinámicas implican validación. Juntos ayudan a ofrecer un software de calidad rentable.
Este artículo es una contribución de Radhika Renamala