Las pruebas funcionales son un tipo de pruebas que buscan establecer si cada característica de la aplicación funciona según los requisitos del software. Cada función se compara con el requisito correspondiente para determinar si su resultado se ajusta a las expectativas del usuario final. Las pruebas se realizan proporcionando entradas de muestra, capturando las salidas resultantes y verificando que las salidas reales son las mismas que las esperadas.
Algunos ejemplos de pruebas funcionales son:
A diferencia de las pruebas no funcionales, las pruebas funcionales no se ocupan de investigar la calidad, la seguridad o el rendimiento del código fuente subyacente de la aplicación. No mide la velocidad, la escalabilidad ni la fiabilidad.
En cambio, las pruebas funcionales se centran en los resultados del procesamiento y no en la mecánica del mismo, y determinan si la aplicación satisface las expectativas básicas mínimas del usuario.
En este sentido, la definición de pruebas funcionales es casi sinónima de las pruebas de caja negra, mientras que las pruebas de caja blanca suelen ser más propias de las pruebas no funcionales.
Un plan de pruebas funcionales suele seguir la secuencia siguiente:
Identificar los objetivos de las pruebas
Los objetivos de las pruebas funcionales son las características que se espera que tenga el software en función de los requisitos del proyecto. Los objetivos de las pruebas incluyen validar que la aplicación funciona como estaba previsto y que gestiona los errores y las situaciones inesperadas con elegancia.
Crear escenarios de prueba
Elabore una lista de todos los escenarios de prueba posibles (o, al menos, de los más importantes) para una función determinada. Los escenarios de prueba describen las diferentes formas en que se utilizará la función. Por ejemplo, en el caso de un módulo de pago, los escenarios de prueba pueden incluir varias divisas, la gestión de números de tarjeta no válidos o caducados y la generación de una notificación al finalizar la transacción.
Crear datos de prueba
Cree datos de prueba que simulen las condiciones normales de uso en función de los escenarios de prueba que haya identificado. Puede introducir los datos de prueba manualmente (por ejemplo, a partir de una hoja de cálculo MS-Excel o una impresión) o automáticamente mediante un script o una herramienta de prueba que lea e introduzca los datos desde una base de datos, un archivo plano, XML o una hoja de cálculo. Cada conjunto de datos de entrada debe tener también datos asociados que describan el resultado esperado que deben generar los datos de entrada.
Diseñar casos de prueba
Cree casos de prueba basados en los diferentes resultados deseados para las entradas de prueba. Por ejemplo, si se introduce un número de tarjeta de crédito no válido, la aplicación debe mostrar un mensaje de error significativo.
Ejecutar los casos de prueba
Ejecute los casos de prueba a través de la aplicación y compare los resultados reales con los esperados. Si los resultados reales y esperados son diferentes, la función no ha superado la prueba y debe registrarse un defecto.
Deliberar sobre los defectos, seguirlos y resolverlos
Una vez identificado un defecto, debe registrarse en un sistema de seguimiento formal al que tenga acceso todo el equipo del proyecto. Antes de marcar el defecto como cerrado, hay que introducir los cambios necesarios en la aplicación y volver a ejecutar el caso de prueba para confirmar su resolución.
Las herramientas de automatización de pruebas funcionales son capaces de interactuar con la interfaz de usuario de la aplicación que se está probando. Pueden identificar objetos en la pantalla, como cuadros de lista, cuadros de texto y botones, y pueden hacer selecciones, introducir datos y pulsarlos.
Muchas herramientas de automatización de pruebas funcionales incluyen un grabador, que "observa" al usuario mientras interactúa con una aplicación y sus objetos en la pantalla, registra los datos que introduce en el sistema y las acciones que realiza, como pulsar botones o seleccionar menús. Estas acciones pueden reproducirse a continuación, utilizando los objetos, datos y acciones capturados durante la grabación, para reproducir las actividades del usuario. La herramienta de pruebas anota los resultados de estas acciones y los compara con los resultados esperados definidos por el ingeniero de automatización para determinar si la prueba se ha superado o no.
Los ingenieros de automatización de pruebas funcionales pueden construir sus pruebas paso a paso utilizando los objetos reconocidos por la herramienta, o pueden empezar con una grabación, personalizando los pasos y parametrizando los datos para generalizarlos y permitir que las pruebas se ejecuten en distintos entornos, incluidos varios navegadores y dispositivos móviles.
Intelligence Las principales herramientas de automatización de pruebas incorporan funciones de Inteligencia Artificial (IA) que emplean técnicas avanzadas como el aprendizaje automático, la visión por ordenador, las redes neuronales y el procesamiento del lenguaje natural. Esto ayuda a identificar los objetos en pantalla de la misma manera que lo hace un ser humano, a interactuar con los objetos y manipularlos de forma natural, y a redactar las pruebas en un lenguaje sencillo.
Se ha demostrado que la automatización de pruebas funcionales basada en IA reduce el tiempo de creación de pruebas, aumenta la cobertura de las pruebas, incrementa la resistencia de los activos de pruebas y reduce los esfuerzos de mantenimiento de las pruebas.
Crear casos de prueba con antelación
No esperes a terminar de codificar la aplicación o el módulo para empezar a crear casos de prueba. Es en las primeras fases del proyecto cuando los requisitos de los usuarios estarán más frescos. Siempre puedes modificar los casos de prueba más adelante si es necesario.
Automatice
Las pruebas funcionales pueden ser un proceso arduo, repetitivo y lento. Cuanto más automatice, más rápido podrá garantizar la funcionalidad deseada o identificar y corregir defectos, y más ahorrará en tiempo de pruebas y costes en el proceso de entrega de la aplicación. Puede que no sea posible, o incluso deseable, automatizar todos los casos de prueba, pero el simple hecho de eliminar los casos de prueba más importantes de la lista manual puede mejorar enormemente el retorno de la inversión en pruebas.
Comprender el proceso de pensamiento del usuario
Los probadores funcionales deben conocer a fondo el proceso de pensamiento del usuario final. Suele haber distintos tipos de usuarios para cada aplicación (compradores, vendedores, administradores, encargados de la introducción de datos, supervisores, etc.). Los distintos tipos de usuarios y su navegación típica por la aplicación deben tenerse en cuenta en cada plan de pruebas.
Dar prioridad a
Los probadores disponen de tiempo y recursos limitados. No se pueden probar todas las funciones. Algunas funciones de la aplicación son prioritarias y, por tanto, deben probarse antes que otras de menor prioridad.
Aunque Functional Testing puede ser un desafío para muchas organizaciones, los beneficios de una organización de QA de pruebas funcionales adecuadamente automatizada superan con creces estos desafíos, y aprovechar el poder de las herramientas de pruebas funcionales probadas es la mejor manera de hacerlo. Descubra cómo OpenText™ Functional Test Automation puede ayudarle a extraer un valor óptimo de sus pruebas funcionales.
Acelere la automatización de pruebas con la potencia de la IA
Involucre a sus desarrolladores con pruebas integradas y automatizadas por turnos
Desarrolle, depure, supervise y optimice aplicaciones desde cualquier lugar
Acelere las pruebas de software con simulaciones y API realistas
Crear mejor software -más rápido- con la automatización, las pruebas y la calidad de DevOps basadas en IA.