¿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 enfoque de pruebas de software que verifican si las características de una aplicación funcionan como se espera según 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: ¿las características del software funcionan como se espera y de acuerdo con los requisitos especificados?

La calidad del software a menudo se evalúa desde varios ángulos como parte del ciclo de vida del desarrollo de software. En lo que respecta a las pruebas funcionales, los evaluadores deben validar la funcionalidad básica y confirmar que las funciones del software apoyan adecuadamente los requisitos del negocio. La ejecución de pruebas involucrada 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 antes del hecho, lo que les da una ventana clara de cómo funcionarán probablemente los flujos de trabajo cuando llegue el momento de lanzarlos de verdad.

Las últimas noticias tecnológicas, respaldadas por los insights de expertos

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

¡Gracias! Ya está suscrito.

Su suscripción se entregará en inglés. En cada boletín, encontrará un enlace para darse de baja. 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 trabajan las pruebas funcionales?

Se destacan diferentes elementos operativos, según el tipo de pruebas de software que se emplee como parte de la estrategia general 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 insight de las maquinaciones internas del sistema (como se encuentra en las pruebas de caja blanca) y, en cambio, reciben un informe de "Aprobado/Rechazado" sobre si el sistema y sus pipelines funcionan como se desea.

Los seis pasos de las pruebas funcionales

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

  1. Identifique las distintas funciones que el software necesita ejecutar.
  2. Cree datos de entrada de acuerdo con los requisitos funcionales.
  3. Establezca los resultados esperados según las especificaciones funcionales.
  4. Realice casos de prueba.
  5. Evalúe cómo se comparan los resultados reales con los resultados esperados.
  6. Determine si la aplicación de software funciona satisfactoriamente según las expectativas.
Desarrollo de aplicaciones

Entérese: desarrollo de aplicaciones empresariales en la nube

En este video, el Dr. Peter Haumer analiza cómo es el desarrollo de aplicaciones empresariales modernas en la nube híbrida y hace una demostración de diferentes componentes y prácticas, incluidos IBM Z Open Editor, IBM Wazi y Zowe.

Tipos de pruebas funcionales

Así como hay variedades de modelos de pruebas de software, existen diferentes tipos de pruebas funcionales. Son numerosos, y esta es solo una lista parcial. 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 prueba formal con pruebas ad hoc. Esta forma informal de prueba exploratoria está guiada completamente por las habilidades e intuición de los evaluadores. No hay una estructura definida. En cambio, los instintos de los evaluadores determinan las técnicas de evaluación utilizadas.

Ejemplo: “pruebas de compañeros”, en el que un desarrollador y un evaluador unen fuerzas y trabajan juntos para mejorar un módulo o aplicación. En este tipo de pruebas ad hoc, el evaluador suele encontrar cualquier error u otra solución que necesite arreglos mientras el desarrollador se centra en hacer estos arreglos.

Pruebas de API

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

Ejemplo: Las "pruebas headless" ocurren 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 prueba refleje verdaderamente la experiencia verdadera de los usuarios reales. Para estas empresas, los escenarios de prueba complejos proporcionan el nivel deseado de precisión, aunque debe señalarse que una mayor complejidad requiere más trabajo inicial para ejecutarse.

Ejemplo: el procesamiento de pedidos en línea solo parece una operación fluida. Detrás de escena, hay muchos procesos que probar, como la facilidad con la que se pueden agregar artículos al carrito en línea de un comprador, la rapidez con la que se integran funciones como la aplicación de descuentos y la facilidad 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 una visión 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 rige el procesamiento de pagos. Las pruebas de integración muestran dónde pueden ocurrir fallas futuras entre las dos entidades y brindan a los desarrolladores un proyecto técnico para solucionar los problemas de integración antes y de manera menos costosa.

Pruebas de regresión

En un mundo perfecto, una vez superada una prueba funcional, siempre pasaría. Pero eso no concuerda con la realidad, donde el software a menudo se ve afectado por desarrolladores que, sin saberlo, podrían inducir errores con nuevos cambios de código. Las pruebas de regresión garantizan que se mantenga una línea de base estable.

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

Pruebas de cordura

Las pruebas de cordura son una forma rápida y ágil de verificar que la funcionalidad existente no se ha visto afectada por la adición de cambios relativamente menores o arreglos. Las pruebas de cordura suelen usarse como una forma rápida de confirmar que la nueva funcionalidad no daña el resto de la funcionalidad del sistema.

Ejemplo: al igual que con las pruebas de regresión, las pruebas de cordura permiten "rebobinar" el sistema a la funcionalidad anterior para verificar las mejoras de rendimiento, confirmar las operaciones básicas y asegurarse de que el sistema esté funcionando como se espera. Cada vez que se hacen cambios en el código, se emplea 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 una actualización de software.

Pruebas de humo

El viejo dicho sostiene que “donde hay humo, hay fuego”. Este adagio parece haber inspirado el nombre “pruebas de humo”. Las pruebas de humo se realizan al principio del proceso de desarrollo y evalúan la funcionalidad de extremo a extremo. Si falla la funcionalidad, los equipos de control de calidad realizan las correcciones necesarias.

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

Pruebas de sistemas

A veces denominadas pruebas de extremo a extremo, las pruebas de sistema sirven para evaluar cómo funciona en conjunto el software de todo un sistema de software. Las pruebas de sistemas 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 de extremo a extremo permiten a los evaluadores probar flujos de trabajo completos. Para las operaciones de venta minorista en línea, esto puede significar toda la experiencia de venta minorista del consumidor, desde el pedido original hasta todo el proceso de cumplimiento.

Pruebas unitarias

Las pruebas unitarias son una forma de pruebas en un microcosmos. Aquí, no estamos probando un sistema completo, solo un fragmento limitado de código. Una sección de código se evalúa en un entorno de prueba aislado, y si la prueba unitaria falla (en función de 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. Considere una función simple que convierte las temperaturas Celsius a sus contrapartes 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 del usuario buscan incorporar y aprender de las pruebas de rendimiento realizadas por las personas que representan el grupo demográfico previsto del software que se produce. Estos usuarios finales aportan mayor realismo 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á aumentar su acceso a las características según lo esperado.

Pruebas funcionales y pruebas no funcionales

Como su nombre lo indica, las pruebas no funcionales evalúan los comportamientos de las aplicaciones que generalmente no se consideran vitales para garantizar la funcionalidad. No obstante, ofrecer una experiencia de usuario bien organizada y agradable ahora se considera 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 con la misma urgencia con la que envía una sola solicitud. Sin embargo, esa lógica no se sustenta en la experiencia realista. Las pruebas de carga funcionan para ver si los sistemas pueden manejar picos de carga e incluso picos extremos de carga de trabajo.

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 manera fluida 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. Cuando se crean cuidadosamente, las pruebas de rendimiento pueden ayudar a minimizar la latencia desde el principio.

Pruebas de seguridad

Dada la importancia de la seguridad de los datos, no es de extrañar que exista un tipo de prueba que se centre específicamente en esta causa tan actual. Las metodologías de pruebas de seguridad como Dynamic Application Security Testing (DAST) y Static Application Security Testing (SAST) ayudan a los evaluadores a verificar si hay vulnerabilidades de seguridad. Los métodos de pruebas de seguridad de la empresa se seleccionan en función de las amenazas potenciales.

Pruebas de usabilidad

Un tipo de prueba no funcional se trata completamente de la calidad de la experiencia del usuario (UX). Las pruebas de usabilidad son un proceso de prueba manual que se utiliza mejor a pequeña escala. No obstante, debe aplicarse siempre que sea posible, especialmente cuando se ejecutan movimientos como la localización de aplicaciones, que pueden estar plagadas de peligros al introducir complejidades que pueden desencadenar errores humanos.

Herramientas de pruebas funcionales

Hacer un seguimiento preciso de todas las diversas herramientas de pruebas de funcionalidad puede suponer mucho trabajo, ya que la mayoría admite diferentes plataformas y tipos de aplicaciones. Aunque no hay forma de mantenerse al día con este mercado en auge (las estimaciones fácilmente alcanzan los cientos y quizás incluso miles de herramientas de pruebas funcionales producidas), aquí hay algunas que se destacan por su popularidad comprobada y su reconocida utilidad.

  • Appium: el mercado de pruebas funcionales cuenta con muchas herramientas de código abierto, con Appium a la cabeza de la lista. Appium proporciona soporte para múltiples lenguajes de programación. Además, Appium le permite automatizar aplicaciones nativas, móviles web e híbridas para las plataformas iOS y Android.
  • Katalon Studio: la plataforma de automatización de pruebas Katalon Studio ofrece un medio para establecer y evaluar resultados generados mediante pruebas de regresión y pruebas de extremo a extremo. Posee la función de grabación y reproducción y coordinación entre plataformas.
  • Micro Focus Unified Functional Testing (UFT): UFT de Micro Focus es otra herramienta de pruebas comercial que ofrece a los evaluadores una ventana clara y multiplataforma para el uso de servicios web, interfaces de programación de aplicaciones (API) e interfaces gráficas de usuario (GUI).
  • Playwright: Microsoft desarrolló esta infraestructura comercial para la automatización de navegadores web. Es conocida por reforzar la confiabilidad. Y aunque Playwright es compatible con las características web contemporáneas, ofrece menos opciones para trabajar 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 evaluadores escribir y evaluar scripts de prueba en una variedad de lenguajes de programación populares, incluidos JavaScriptTM, NodeJS y Python. 
Soluciones relacionadas
Desarrollo de aplicaciones impulsado por IA

watsonx.ai permite a los equipos de desarrollo de aplicaciones integrar perfectamente la IA en sus flujos de trabajo. Desde la creación de modelos hasta su despliegue, este completo kit de herramientas da soporte a todo el ciclo de vida de la IA.

Explorar watsonx.ai
IBM Z Development and Test Environment

Utilice una plataforma para el desarrollo de aplicaciones de mainframe, pruebas, demostración y entrenamiento en hardware x86.

Explorar el entorno de desarrollo Z
Soluciones de computación en la nube móvil

Descubra la plataforma de desarrollo de aplicaciones móviles de IBM para diseñar, crear prototipos y comercializar aplicaciones de manera rápida y sencilla.

Explorar la nube móvil
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.

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