¿Qué son las pruebas funcionales?

Autores

Phill Powell

Staff Writer

IBM Think

Ian Smalley

Staff Editor

IBM Think

Definición de pruebas funcionales

Las pruebas funcionales son un método de pruebas de software que verifica si las características de una aplicación funcionan según lo esperado en función de los requisitos especificados.

En el desarrollo de software, existen numerosos tipos de pruebas de software. Cada uno aborda la tarea desde un enfoque ligeramente diferente. Las pruebas funcionales se alinean más estrechamente con el concepto de experiencia del usuario y se centran en una pregunta crítica: ¿Funcionan las características del software como se espera y de acuerdo con los requisitos especificados?

La calidad del software suele evaluarse desde varios ángulos como parte del ciclo de vida del desarrollo del software. En lo que respecta a las pruebas funcionales, los evaluadores deben validar la funcionalidad básica y confirmar que las funciones del software son compatibles con los requisitos empresariales. La ejecución de las pruebas permite a los equipos de DevOps comparar los resultados reales de las pruebas con los resultados esperados.

Las pruebas son una parte esencial del proceso de desarrollo, y las pruebas funcionales permiten a los equipos de control de calidad realizar un tipo de control de calidad previo, lo que les ofrece una visión clara de cómo funcionarán probablemente los flujos de trabajo cuando llegue el momento de ponerlos en marcha de verdad.

Las últimas novedades sobre tecnología, respaldadas por conocimientos de expertos

Manténgase al día sobre las tendencias más importantes e intrigantes del sector en materia de IA, automatización, datos y mucho más con el boletín Think. Consulte la Declaración de privacidad de IBM.

¡Gracias! Se ha suscrito.

Su suscripción se enviará en inglés. Encontrará un enlace para darse de baja en cada boletín. Puede gestionar sus suscripciones o darse de baja aquí. Consulte nuestra Declaración de privacidad de IBM para obtener más información.

¿Cómo funcionan las pruebas funcionales?

Se destacan diferentes elementos operativos, dependiendo del tipo de pruebas de software que se emplee como parte de la estrategia global de pruebas. Las pruebas funcionales evalúan la compatibilidad general entre diferentes módulos de software, lo que tiene una relación directa con otros aspectos relacionados, como las interacciones esperadas del usuario y la viabilidad de la interfaz de usuario.

El entorno de prueba proporcionado por las pruebas funcionales se considera un ejemplo de pruebas de caja negra, en las que los evaluadores no obtienen información sobre el funcionamiento interno del sistema (como ocurre en las pruebas de caja blanca), sino que reciben un informe de "aprobado/suspenso" sobre si el sistema y sus pipelines funcionan según lo deseado.

Los seis pasos de las pruebas funcionales

Las pruebas funcionales suelen seguir un proceso de pruebas que requiere seis pasos:

  1. Identificar las diversas funciones que el software debe ejecutar.
  2. Crear los datos de entrada de acuerdo con los requisitos funcionales.
  3. Establecer los resultados esperados según las especificaciones funcionales.
  4. Realizar casos de prueba.
  5. Evaluar cómo se comparan los resultados reales con los resultados esperados.
  6. Determinar si la aplicación de software funciona satisfactoriamente según las expectativas.
Desarrollo de aplicaciones

Suba a bordo: desarrollo de aplicaciones empresariales en la nube

En este vídeo, el Dr. Peter Haumer explica cómo se desarrollan las aplicaciones empresariales modernas en la nube híbrida mediante la demostración de diferentes componentes y prácticas, como IBM Z Open Editor, IBM Wazi y Zowe. 

Tipos de pruebas funcionales

Al igual que existen variedades de modelos de pruebas de software, hay diferentes tipos de pruebas funcionales. Son numerosos, y esta es solo una lista parcial de ellos. Los tipos de pruebas funcionales abarcan una amplia gama de matices y se enumeran aquí alfabéticamente.

Pruebas ad hoc

En las pruebas de software, los evaluadores suelen seguir el proceso de pruebas formales con pruebas ad-hoc. Esta forma informal de pruebas exploratorias se guía enteramente por las habilidades y la intuición de los evaluadores. No hay una estructura definida. En cambio, los instintos de los evaluadores impulsan las técnicas de prueba utilizadas.

Ejemplo: "Pruebas entre pares", en las que un desarrollador y un evaluador unen fuerzas y trabajan juntos para mejorar un módulo o una aplicación. En este tipo de pruebas ad hoc, el evaluador suele encontrar cualquier error u otro problema que haya que corregir, mientras que el desarrollador se centra en hacer estas correcciones.

Pruebas de API

Las interfaces de programación de aplicaciones (API) permiten el desarrollo de software y la conexión de diferentes aplicaciones o sistemas. Las pruebas de API garantizan que los puntos de conexión de la API funcionen según sea necesario. También proporciona supervisión sobre los permisos de los usuarios y la forma en que se gestionan los datos a través de las API.

Ejemplo: las "pruebas headless" se producen cuando falta una interfaz de usuario o un campo de entrada de datos de interfaz de usuario. En tales situaciones, los datos de entrada compartidos con un servicio o aplicación de interfaz a menudo se pueden probar mejor a través de pruebas de API.

Escenarios de prueba complejos

Muchas organizaciones quieren que su proceso de pruebas refleje verdaderamente la experiencia real de los usuarios reales. Para estas empresas, los escenarios de pruebas complejos proporcionan el nivel de precisión deseado, aunque hay que señalar que una mayor complejidad requiere más trabajo previo para su ejecución.

Ejemplo: el procesamiento de pedidos en línea solo parece una operación fluida. Entre bastidores, hay muchos procesos que deben probarse, como la facilidad con la que se pueden añadir artículos al carrito de la compra online, la rapidez con la que se integran funciones como la aplicación de descuentos y la fluidez con la que se pueden realizar dichas compras.

Pruebas de integración

Las pruebas de integración a menudo se ejecutan al mismo tiempo que las pruebas unitarias debido a beneficios como la detección temprana de problemas y una gama más amplia de cobertura de pruebas. Además de ayudar a que los formatos de datos coincidan, las pruebas de integración proporcionan conocimiento sobre el funcionamiento y el rendimiento de los microservicios.

Ejemplo: supongamos que un sistema de gestión de pedidos está integrado con algún tipo de módulo que regula el procesamiento de pagos. Las pruebas de integración muestran dónde pueden producirse futuros fallos entre las dos entidades y ofrecen a los desarrolladores un plan para solucionar los problemas de integración antes y de forma menos costosa.

Pruebas de regresión

En un mundo perfecto, una vez que se pase una prueba funcional, siempre se aprobaría. Pero eso no concuerda con la realidad, donde el software suele verse afectado por los desarrolladores que, sin saberlo, pueden inducir errores con los nuevos cambios de código. Las pruebas de regresión garantizan que se mantenga una línea de base constante.

Ejemplo: cada vez que se realizan cambios en el código, se utiliza una forma u otra de pruebas de regresión. Eso incluye cualquier actualización relacionada, como se haría tras una corrección de errores, la introducción de nuevas funcionalidades o tras una actualización de software.

Pruebas de cordura

Las pruebas de cordura son una forma rápida y ágil de comprobar que la funcionalidad existente no se ha visto afectada por la incorporación de cambios relativamente menores o correcciones de errores. Las pruebas de cordura suelen usarse como una forma rápida de confirmar que la nueva funcionalidad no estropea el resto de la funcionalidad del sistema.

Ejemplo: al igual que con las pruebas de regresión, las pruebas de cordura le permiten "rebobinar" el sistema a la funcionalidad anterior para verificar las mejoras de rendimiento, confirmar el funcionamiento básico y asegurarse de que el sistema funciona según lo esperado. Cada vez que se hacen cambios en el código, se utiliza una forma u otra de prueba de regresión. Eso incluye cualquier actualización relacionada, como se haría tras una corrección de errores, la introducción de nuevas funcionalidades o tras una actualización de software.

Pruebas de humo

El viejo refrán dice que "donde hay humo, hay fuego". Este adagio parece haber inspirado el nombre “prueba de humo”. La prueba de humo se realiza al principio del proceso de desarrollo y, cuando se realiza, evalúa la funcionalidad integral. Si la funcionalidad falla, los equipos de control de calidad hacen las correcciones necesarias.

Ejemplo: las pruebas de humo pueden utilizarse para verificar la integración continua y los pipelines continuos como comprobación final antes de que se puedan implementar nuevas versiones de software (o cambios importantes en el código).

Pruebas del sistema

A veces llamadas pruebas integrales, las pruebas del sistema sirven para evaluar cómo funciona el software de todo un sistema de software en conjunto. Las pruebas del sistema a menudo implican el análisis de múltiples sistemas de software separados que pueden o no funcionar al unísono dentro de un sistema de software en particular.

Ejemplo: los escenarios integrales permiten a los evaluador examinar flujos de trabajo completos. Para las operaciones de comercio minorista en línea, esto puede significar toda la experiencia de comercio minorista que experimenta el consumidor, desde la orden original de compra hasta todo el proceso de cumplimiento.

Pruebas unitarias

La prueba unitaria es una forma de prueba en un microcosmos. En este caso, no estamos probando un sistema completo, solo un fragmento de código limitado. Una sección de código se evalúa en un entorno de prueba aislado, y si la prueba unitaria falla (basándose en una comparación de los datos de prueba con los objetivos de funcionalidad), se pueden realizar más pruebas a nivel de todo el sistema.

Ejemplo: los elementos computacionales bastante básicos se prueban bien mediante pruebas unitarias. Consideremos una función sencilla que convierte las temperaturas Celsius a sus equivalentes Fahrenheit. El entorno de prueba contiene el código en cuestión y los casos de prueba involucrados.

Pruebas de aceptación del usuario

Como etapa posterior de las pruebas de software, las pruebas de aceptación por parte del usuario buscan incorporar y aprender de las pruebas de rendimiento realizadas por las personas que representan el público objetivo del software que se está produciendo. Estos usuarios finales aportan realismo añadido al proceso de prueba.

Ejemplo: un usuario de un plan de software se actualiza a su siguiente nivel de servicio, lo que le da derecho a desbloquear una funcionalidad completamente nueva. Las pruebas de aceptación del usuario verifican que el usuario podrá ver aumentar su acceso a las características según lo esperado.

Pruebas funcionales vs. pruebas no funcionales

Como su nombre indica, las pruebas no funcionales evalúan los comportamientos de las aplicaciones que no suelen considerarse vitales para garantizar la funcionalidad. No obstante, ofrecer una experiencia de usuario bien organizada y agradable se considera ahora una parte esencial del desarrollo de software. Las pruebas no funcionales pueden revelar posibles problemas del sistema, especialmente cuando el software se maximiza para demostrar una mayor escalabilidad.

Pruebas de carga

Las pruebas de carga son una forma clave de pruebas no funcionales. En teoría, un sistema debería ser capaz de procesar miles de solicitudes de sistema con el mismo sentido de urgencia con el que despacha una única solicitud de sistema. Sin embargo, esa lógica no está respaldada por una experiencia realista. Las pruebas de carga sirven para comprobar si los sistemas pueden gestionar picos de carga e incluso picos de carga de trabajo extremos.

Pruebas de rendimiento

Otra forma de pruebas no funcionales presta especial atención al rendimiento. Es crítico para un buen rendimiento que un sistema responda a las solicitudes de forma suave y rápida. El plan de pruebas en las pruebas de rendimiento evalúa cuánto tiempo tienen que esperar los usuarios para que se procesen sus solicitudes. Si se crean con cuidado, las pruebas de rendimiento pueden ayudar a minimizar la latencia desde el principio.

Pruebas de seguridad

Dada la importancia de la seguridad de datos, no es sorprendente que una forma de prueba atienda específicamente a esta causa más moderna. Las metodologías de pruebas de seguridad como las pruebas dinámicas de seguridad de aplicaciones (DAST) y las pruebas estáticas de seguridad de aplicaciones (SAST) ayudan a los encargados de las pruebas a comprobar si existen vulnerabilidades de seguridad. Los métodos de comprobación de la seguridad de la empresa se seleccionan en función de las amenazas potenciales.

Pruebas de usabilidad

Un tipo de prueba no funcional es completamente sobre la calidad de la experiencia del usuario (UX). Las pruebas de usabilidad son un proceso de pruebas manuales que es mejor utilizar a pequeña escala. No obstante, debe aplicarse siempre que sea posible, especialmente al ejecutar movimientos como localizar aplicaciones, que pueden estar llenas de peligros al introducir complejidades que pueden provocar errores humanos.

Herramientas de pruebas funcionales

Hacer un seguimiento preciso de todas las diversas herramientas de pruebas funcionales puede llevar trabajo, ya que la mayoría son compatibles con diferentes plataformas y tipos de aplicación. Aunque no hay forma de mantenerse al día con este floreciente mercado, las estimaciones se basan fácilmente en los cientos y quizás incluso miles de herramientas de pruebas funcionales producidas, aquí hay algunas que destacan por su probada popularidad y reconocida utilidad.

  • Appium: el mercado de pruebas funcionales cuenta con muchas herramientas de código abierto, con Appium encabezando la lista. Appium proporciona soporte para múltiples lenguajes de programación. Además, Appium le permite automatizar aplicaciones nativas, móviles y web para las plataformas iOS y Android.
  • Katalon Studio: la plataforma de automatización de pruebas Katalon Studio ofrece un medio para establecer y evaluar los resultados generados a través de pruebas de regresión y pruebas integrales. Incluye una característica de grabación y reproducción y coordinación entre plataformas.
  • Micro Focus Unified Functional Testing (UFT): la UFT de Micro Focus es otra herramienta de pruebas comercial, que ofrece a los probadores una ventana clara y multiplataforma sobre el uso de servicios web, interfaz de programación de aplicaciones e interfaces gráficas de usuario (GUI).
  • Playwright: Microsoft desarrolló este marco comercial para la automatización de navegadores web. Es conocido por reforzar la fiabilidad. Y aunque Playwright sí admite características web contemporáneas, ofrece menos opciones para tratar con lenguajes de programación.
  • Selenium: una de las herramientas de automatización de pruebas más populares es Selenium, que es un marco de código abierto. Esta herramienta basada en navegador permite a los probadores escribir y evaluar scripts de prueba en una variedad de lenguajes de programación populares, incluidosJavaScriptTM, NodeJS y Python. 
Soluciones relacionadas
IBM Enterprise Application Service for Java

Un servicio totalmente gestionado y de inquilino único para desarrollar y entregar aplicaciones Java.

Explore las aplicaciones Java
Soluciones DevOps

Utilice el software y las herramientas de DevOps para crear, implementar y gestionar aplicaciones nativas de la nube en varios dispositivos y entornos.

Explore las soluciones DevOps
Servicios de desarrollo de aplicaciones Enterprise

El desarrollo de aplicaciones en la nube significa crear una vez, iterar rápidamente e implementar en cualquier lugar.

Servicios de desarrollo de aplicaciones
Dé el siguiente paso

Los servicios de consultoría de desarrollo de aplicaciones en la nube de IBM Cloud ofrecen orientación experta y soluciones innovadoras para agilizar su estrategia de nube. Colabore con los expertos en nube y desarrollo de IBM para modernizar, escalar y acelerar sus aplicaciones, y obtenga resultados transformadores para su empresa.

Explore los servicios de desarrollo de aplicaciones Comience a crear con IBM Cloud de forma gratuita