Pruebas de software
Las pruebas de software (en
inglés software testing) son las investigaciones empíricas y técnicas cuyo
objetivo es proporcionar información objetiva e independiente sobre la calidad
del producto a la parte interesada o stakeholder. Es una actividad más en el
proceso de control de calidad.
Las pruebas son básicamente un
conjunto de actividades dentro del desarrollo de software. Dependiendo del tipo
de pruebas, estas actividades podrán ser implementadas en cualquier momento de
dicho proceso de desarrollo. Existen distintos modelos de desarrollo de
software, así como modelos de pruebas. A cada uno corresponde un nivel distinto
de involucramiento en las actividades de desarrollo.
Historia
El objetivo de las pruebas es
presentar información sobre la calidad del producto a las personas responsables
de éste. Las pruebas de calidad presentan los siguientes objetivos: encontrar
defectos o bugs, aumentar la confianza en el nivel de calidad, facilitar
información para la toma de decisiones, evitar la aparición de defectos.
Teniendo esta afirmación en
mente, la información que puede ser requerida es de lo más variada. Esto hace
que el proceso de testing sea completamente dependiente del contexto1 en el que
se desarrolla.
El ambiente ideal de las pruebas
de testing es aquel que es independiente del desarrollo del software, de esta
manera se logra objetividad en las pruebas.
A pesar de lo que muchos
promueven, no existen las "mejores prácticas" como tal. Toda práctica
puede ser ideal para una situación pero completamente inútil o incluso
perjudicial en otra.
Por esto, las actividades,
técnicas, documentación, enfoques y demás elementos que condicionarán las
pruebas a realizar, deben ser seleccionados y utilizados de la manera más
eficiente según contexto del proyecto.
Pruebas estáticas
Son el tipo de pruebas que se
realizan sin ejecutar el código de la aplicación.
Puede referirse a la revisión de
documentos, ya que no se hace una ejecución de código. Esto se debe a que se
pueden realizar "pruebas de escritorio" con el objetivo de seguir los
flujos de la aplicación.
Pruebas dinámicas
Todas aquellas pruebas que para
su ejecución requieren la ejecución de la aplicación.
Las pruebas dinámicas permiten el
uso de técnicas de caja negra y caja blanca con mayor amplitud. Debido a la
naturaleza dinámica de la ejecución de pruebas es posible medir con mayor
precisión el comportamiento de la aplicación desarrollada.
Tipos de pruebas
Hay todo tipo de pruebas, pero nos
centraremos en tres de ellas:
Pruebas de Compatibilidad
Se comprueba el funcionamiento
del software desarrollado en muchas plataformas: sistemas operativos,
navegadores, redes, hardware...entre otros
Pruebas de Regresión
Se evalúa el correcto
funcionamiento del software desarrollado frente a evoluciones o cambios
funcionales. El propósito de éstas es asegurar que los casos de prueba que ya
habían sido probados y fueron exitosos permanezcan así. Se recomienda que este
tipo de pruebas sean automatizadas para reducir el tiempo y esfuerzo en su
ejecución.
Pruebas de Integración
Es el nivel de pruebas posterior
a las pruebas modulares de los componentes de un sistema. Se centra principalmente
en probar la comunicación entre los componentes de un mismo sistema,
comunicación entre sistemas o entre hardware y software.
Tipos de pruebas por su ejecución
·
Pruebas manuales
·
Pruebas automáticas
·
Enfoques de pruebas[editar]
·
Pruebas de Caja blanca
·
Pruebas de Caja negra
·
Testing aleatorio2
Niveles de pruebas
·
Pruebas unitarias
·
Pruebas modulares
·
Pruebas de integración
·
Pruebas de sistema
·
Pruebas de aceptación de usuario UAT
Pruebas funcionales
·
Pruebas funcionales
·
Pruebas de humo
·
Pruebas de regresión
·
Pruebas de aceptación
·
Alpha testing
·
Beta testing
Pruebas no funcionales
·
Pruebas no funcionales
·
Pruebas de seguridad
·
Pruebas de usabilidad
·
Pruebas de rendimiento
·
Pruebas de internacionalización y localización
·
Pruebas de escalabilidad
·
Pruebas de mantenibilidad
·
Pruebas de instalabilidad
·
Pruebas de portabilidad