Sobes.tech
Junior

¿Qué es la prueba no funcional?

sobes.tech AI

Respuesta de la IA

Las pruebas no funcionales son un tipo de prueba de software que se enfoca en verificar sus requisitos no funcionales. Evalúa las características del sistema que no están directamente relacionadas con funciones específicas, sino más bien con el "cómo" funciona el sistema.

Los principales objetivos de las pruebas no funcionales:

  • Garantizar que el sistema cumple con las expectativas del usuario y del negocio en aspectos como rendimiento, fiabilidad, facilidad de uso y otros.
  • Identificar problemas que puedan afectar la estabilidad, escalabilidad y seguridad del sistema.
  • Confirmar que el sistema cumple con los estándares y requisitos establecidos.

Tipos de pruebas no funcionales:

Tipo de prueba Descripción breve Características verificadas de ejemplo
Pruebas de rendimiento Evaluación de la velocidad, capacidad de respuesta, estabilidad y escalabilidad del sistema bajo carga. Tiempo de respuesta, ancho de banda, carga de CPU/memoria.
Pruebas de carga Verificación del comportamiento del sistema bajo carga pico esperada. Número de usuarios simultáneos, transacciones por segundo.
Pruebas de estrés Verificación del comportamiento del sistema al superar la carga pico esperada o al faltar recursos. Punto de fallo del sistema, comportamiento bajo sobrecarga.
Pruebas de estabilidad (Endurance Testing) Verificación de la capacidad del sistema para soportar un funcionamiento continuo prolongado bajo carga. Fugas de memoria, degradación del rendimiento con el tiempo.
Pruebas de seguridad Verificación de la protección del sistema contra amenazas externas e internas, accesos no autorizados. Protección contra inyecciones SQL, ataques XSS, autenticación, autorización.
Pruebas de usabilidad Determinar qué tan fácil e intuitivo es para los usuarios usar el sistema. Interfaz comprensible, navegación sencilla, accesibilidad.
Pruebas de compatibilidad Verificación del funcionamiento del sistema en diferentes entornos (navegadores, sistemas operativos, dispositivos). Soporte para diferentes versiones de navegadores, sistemas operativos.
Pruebas de fiabilidad Evaluación de la capacidad del sistema para realizar sus funciones sin fallos durante un período de tiempo determinado. Tiempo medio entre fallos (MTBF), probabilidad de fallo.
Pruebas de accesibilidad Verificación de la facilidad de uso del sistema para personas con discapacidades. Cumplimiento de los estándares WCAG.
Pruebas de localización/internacionalización Verificación de la adaptación del sistema a diferentes idiomas y configuraciones regionales. Cadenas traducidas, formatos de fecha/número.

Las pruebas no funcionales generalmente se realizan en etapas más tempranas del ciclo de vida del desarrollo de software que las pruebas funcionales, pero su planificación comienza con la definición de requisitos. Pueden formar parte de procesos automatizados, especialmente en pruebas de rendimiento y seguridad.

Herramientas para pruebas no funcionales:

  • Rendimiento: JMeter, LoadRunner, Gatling, k6.
  • Seguridad: OWASP ZAP, Burp Suite, Acunetix.
  • Compatibilidad: BrowserStack, Sauce Labs.
  • Usabilidad: UserTesting.com, herramientas de seguimiento ocular.

Un ejemplo de automatización de una parte de las pruebas no funcionales puede ser un script para verificar el tiempo de carga de una página:

import time
import requests

def measure_page_load_time(url):
    """
    Mide el tiempo de carga de la URL especificada.
    """
    start_time = time.time()
    try:
        response = requests.get(url)
        response.raise_for_status()  # Lanza HTTPError para respuestas malas (4xx o 5xx)
        end_time = time.time()
        load_time = end_time - start_time
        print(f"Tiempo de carga {url}: {load_time:.2f} segundos")
        return load_time
    except requests.exceptions.RequestException as e:
        print(f"Error al cargar {url}: {e}")
        return None

# Ejemplo de uso
url_to_test = "https://www.example.com"
measure_page_load_time(url_to_test)

Los resultados de las pruebas no funcionales a menudo se presentan en forma de informes, gráficos y métricas que permiten evaluar las características del sistema y tomar decisiones sobre mejoras necesarias.