Software Testing: Tipos y Técnicas

Introducción a Software Testing: Tipos y Técnicas

El Software Testing o Prueba de Software es una metodología de desarrollo de software que se basa en la investigación de un modelo para entregar un informe sobre la calidad del mismo a las partes interesadas.

De esa manera, se garantiza que el software cumpla con los requisitos, que no contiene errores graves y que todo funciona como se esperaba. Veamos en detalle qué es un Software Testing, sus tipos y técnicas a continuación. 

¿Qué es Software Testing?

Software Testing es la actividad de probar un software para verificar el funcionamiento y encontrar errores. Existen varias técnicas de prueba manual que ayudan a reducir el número de casos de prueba que se ejecutarán al tiempo que aumentan la cobertura de prueba. Ayudan a identificar condiciones de prueba que de otro modo serían difíciles de reconocer.

Existen profesionales que se dedican expresamente a realizar Software Testing. Su trabajo consiste en poner a prueba cada software para entregar un informe a las partes interesadas, con detalles como: si el software cumple con los requisitos y el diseño acordados, si la aplicación funciona como se esperaba, si la aplicación no contiene errores graves y si cumple con el uso previsto según las expectativas del usuario. 

Tipos de Software Testing

Existen las pruebas funcionales, las no funcionales, pruebas de automatización, pruebas ágiles y sus subtipos, etc. A continuación se muestra la lista de algunos tipos comunes de pruebas de software:

Los tipos de pruebas funcionales incluyen:

  • Examen de la unidad
  • Pruebas de integración
  • Prueba del sistema
  • Prueba de cordura
  • Prueba de humo
  • Prueba de interfaz
  • Pruebas de regresión
  • Prueba beta / aceptación

Los tipos de pruebas no funcionales incluyen:

  • Pruebas de rendimiento
  • Prueba de carga
  • Pruebas de estrés
  • Prueba de volumen
  • Pruebas de seguridad
  • Pruebas de compatibilidad
  • Instalar pruebas
  • Pruebas de recuperación
  • Pruebas de fiabilidad
  • Pruebas de usabilidad
  • Pruebas de conformidad
  • Pruebas de localización

A continuación explicamos los tipos de pruebas más utilizados en ejercicio. 

Prueba Alfa

Es el tipo de prueba más utilizada en la industria del software. Su objetivo es identificar todos los posibles problemas o defectos antes de lanzarlo al mercado o al usuario. Se lleva a cabo al final de la fase de desarrollo, pero antes de la prueba beta.

Pruebas de aceptación

En este caso, es el cliente quien realiza una prueba de aceptación y verifica el flujo del sistema de extremo a extremo según los requisitos comerciales. 

Pruebas Ad-hoc

Se realiza sobre una base Ad-hoc y su objetivo es encontrar los defectos y romper la aplicación ejecutando cualquier flujo de la aplicación o cualquier funcionalidad aleatoria.

Pruebas de accesibilidad

Determina si el software es accesible para personas con discapacidades (sordos, daltónicos, discapacitados mentales, ciegos, ancianos y otros grupos discapacitados). 

Prueba Beta

Es un tipo formal de prueba de software que lleva a cabo el cliente. Se realiza en el entorno real antes de lanzar el producto al mercado para los usuarios finales reales.

Con ella, se garantiza que no haya fallas importantes en el software y que el producto cumpla con los requisitos comerciales y las expectativas del cliente.

Pruebas de fondo

La prueba realizada en la base de datos (SQL Server, MySQL y Oracle, etc) se conoce como Prueba de base de datos o Prueba de fondo.

Estas pruebas implican test de estructura de tabla, esquema, procedimiento almacenado, estructura de datos, etc.

Pruebas de compatibilidad del navegador

Es un subtipo de Pruebas de compatibilidad y lo realiza el equipo de pruebas para garantizar que el software pueda ejecutarse con la combinación de diferentes navegadores y sistemas operativos.

Pruebas de compatibilidad con versiones anteriores

Es un Test que valida si el software recientemente desarrollado o el software actualizado funciona bien con versiones anteriores del entorno o no.

Prueba de caja negra

Se basa en los requisitos y la funcionalidad, sin considerar el diseño interno. 

Prueba de valor límite

Verifica el comportamiento de la aplicación a nivel de límite. Se realiza para verificar si existen defectos en los valores límite.

Prueba de rama

También llamada prueba de caja blanca, se lleva a cabo durante la prueba de la unidad. El nombre en sí sugiere que el código se prueba a fondo al atravesar cada rama.

Pruebas de comparación

Compara las fortalezas y debilidades de un producto con sus versiones anteriores u otros productos similares.

Prueba de compatibilidad

Evalúa cómo se comporta y ejecuta el software en un entorno diferente, servidores web, hardware y entorno de red.

Prueba de componentes

Generalmente se lleva a cabo luego de las pruebas unitarias.

Evalúa múltiples funcionalidades como un solo código y su objetivo es identificar si existe algún defecto después de conectar esas múltiples funcionalidades entre sí.

Pruebas de extremo a extremo

Evalúa el entorno de aplicación en un contexto que simula el uso real.

Puede consistir en interactuar con una base de datos, usar comunicaciones de red o interactuar con otro hardware, aplicaciones o sistemas.

Particionamiento de equivalencia

Es una técnica de prueba y un tipo de prueba de caja negra.Durante esta partición de equivalencia, se selecciona un conjunto de grupos y se recogen algunos valores o números para la prueba.

Dichos valores deben generar la misma salida. El objetivo de la prueba es eliminar los casos de prueba redundantes.

Ejemplo de prueba

Son pruebas en tiempo real que se realizan en un escenario real o escenarios basados en la experiencia de los probadores.

Pruebas exploratorias

Es una prueba informal realizada por el equipo de prueba para explorar la aplicación y buscar defectos que existan en la aplicación.

Pruebas funcionales

Ignora las partes internas y se enfoca solo en la salida para verificar si la aplicación cumple con el requisito o no. Es un tipo de prueba de caja negra.

Prueba de interfaz gráfica de usuario (GUI)

Valida la GUI según el requisito comercial. Incluye el tamaño de los botones y el campo de entrada presente en la pantalla, la alineación de todo el texto, las tablas y el contenido de las tablas.

Prueba de gorila

Aplicada por probadores y desarrolladores, la prueba de gorila o Gorilla Testing evalúa exhaustivamente cada módulo para verificar la solidez de la aplicación.

Prueba Happy Path

Su objetivo es probar la aplicación con éxito en un flujo positivo. No busca condiciones negativas o errores.

Prueba de integración incremental

Es un enfoque ascendente para pruebas que se aplica cuando se agrega una nueva funcionalidad. Queda a cargo de programadores y probadores. 

Pruebas de instalar / desintalar

Es un tipo de prueba que se aplica en procesos de instalación / desinstalación completos, parciales o de actualización en diferentes sistemas operativos en diferentes entornos de hardware o software.

Pruebas de integración

Es un tipo de prueba no funcional utilizada para verificar cuánta carga de trabajo máxima puede manejar un sistema sin ninguna degradación del rendimiento.

Estas pruebas ayudan a encontrar la capacidad máxima del sistema bajo una carga específica y cualquier problema que cause la degradación del rendimiento del software.

Monkey Testing

Es una prueba que supone que si un mono usa la aplicación, ingresará los valores sin ningún conocimiento o comprensión de la aplicación.

De esta manera, el objetivo de Monkey Testing es verificar si una aplicación o sistema se bloquea proporcionando datos / valores de entrada aleatorios.

Prueba de mutación

Es una prueba de caja blanca en  la que se cambia el código fuente de uno de los programas y verifica si los casos de prueba existentes pueden identificar estos defectos en el sistema.

Pruebas negativas

Su objetivo es ver si se puede “romper” el sistema. Para ello se utilizan datos incorrectos, datos no válidos o entradas.

Pruebas no funcionales

Son pruebas de carga, pruebas de tensión, seguridad, volumen, pruebas de recuperación, etc. que se realizan para garantizar si el tiempo de respuesta del software o la aplicación es lo suficientemente rápido según los requisitos del negocio.

Pruebas de rendimiento

Son pruebas que se realizan para verificar si el sistema cumple con los requisitos de rendimiento. Para ello, se utilizan diferentes herramientas de rendimiento y carga.

Pruebas de recuperación

Se encarga de validar qué tan bien se recupera la aplicación o el sistema de fallas o desastres. Determina si el sistema puede continuar la operación después de un desastre.

Técnicas de Software Testing

Compartimos 5 técnicas importantes de Software Testing.

Análisis del valor límite (BVA)

Se basa en pruebas en los límites entre particiones. Incluye límites máximos, mínimos, internos o externos, valores típicos y valores de error.

Esta técnica de prueba de caja negra se basa en el principio de que, si un sistema funciona bien para estos valores particulares, funcionará perfectamente para todos los valores que se encuentran entre los dos valores límite.

Las pautas para este tipo de análisis son:

  • Si una condición de entrada está restringida entre los valores x e y, entonces los casos de prueba deben diseñarse con valores x e y con otros valores que estén por encima y por debajo de los mismos.
  • Si una condición de entrada es un gran número de valores, se debe desarrollar el caso de prueba que necesita ejercer los números mínimo y máximo. También se ponen a prueba los valores superiores e inferiores a los valores mínimos y máximos.
  • Al aplicar las pautas 1 y 2 a las condiciones de salida, da una salida que refleja los valores mínimos y máximos esperados. También prueba los valores inferiores o superiores.

Particionamiento de clase de equivalencia 

Permite dividir el conjunto de condiciones de prueba en una partición que debe considerarse igual.

El principio de este test es que el caso de prueba de un valor representativo de cada clase es igual a una prueba de cualquier otro valor de la misma clase. De esa manera, se pueden identificar equivalencias válidas y no válidas. 

Prueba basada en la tabla de decisiones

También conocida como tabla causa-efecto, es una técnica para funciones que responden a una combinación de entradas o eventos. Por ejemplo, prueba que el botón de envío esté habilitado si el usuario llena todos los campos obligatorios.

Para cada función, debes crear una tabla y enumerar todos los tipos de combinaciones de entradas y sus respectivas salidas. Así, puedes identificar una condición que el tester pasa por alto. 

Sigue estos pasos para crear una tabla de decisiones:

  • Alista las entradas en filas.
  • Ingresa todas las reglas en la columna.
  • Rellena la tabla con la combinación diferente de entradas.
  • En la última fila, anota la salida contra la combinación de entrada.

Transición de estado

Es una técnica en la que los cambios en las condiciones de entrada cambian el estado de la aplicación bajo prueba (AUT). De esa manera se puede probar el comportamiento de un AUT.

Durante la aplicación de esta técnica el equipo de prueba proporciona valores de prueba de entrada positivos y negativos para evaluar el comportamiento del sistema.

Estas son las pautas para aplicar la técnica de transición de estado

  • La transición de estado debe usarse cuando un equipo de prueba está probando la aplicación para un conjunto limitado de valores de entrada.
  • Debe usarse cuando el equipo de prueba quiere probar la secuencia de eventos que suceden en la aplicación bajo prueba.

Error adivinando

Es una técnica que se utiliza para adivinar un error que puede prevalecer en el código. Se basa en la experiencia que el analista de prueba tiene para encontrar errores. La técnica previamente cuenta con una lista de posibles errores o situaciones propensas a errores. El probador se encarga de exponer esos errores a través de un caso de prueba. 

Estas son algunas pautas para adivinar errores

  • Se debe hacer uso de la experiencia previa de probar aplicaciones similares.
  • Comprensión del sistema bajo prueba.
  • Conocimiento de errores de implementación típicos.
  • Recordar áreas previamente problemáticas.
  • Evaluar datos históricos y resultados de pruebas.

Con estas técnicas principales, puedes generar mejores casos de pruebas para eliminar errores y optimizar las aplicaciones. 

Más información en Cómo hacer testing de Software Manual