La Distincion Fundamental

Todo testing de software cae en dos categorias:

Testing funcional verifica QUE hace el sistema — sus features, reglas de negocio, procesamiento de datos e interacciones. El formulario de login acepta credenciales validas? La busqueda retorna resultados correctos?

Testing no funcional verifica COMO el sistema ejecuta sus funciones — velocidad, seguridad, fiabilidad, usabilidad y otros atributos de calidad. La pagina carga en menos de 2 segundos? El sistema maneja 10,000 usuarios concurrentes?

Analogia: Probar un auto. Testing funcional: El motor arranca? Los frenos detienen el auto? Testing no funcional: Que tan rapido acelera? Que tan silencioso es? Que tan eficiente es el combustible?

Tipos de Testing Funcional

Testing de Features

Verificar que cada feature funciona: login, registro, busqueda, carrito, pagos.

Testing de Reglas de Negocio

Verificar logica de negocio: precios, control de acceso, flujos de aprobacion, reglas de cumplimiento.

Testing de UI

Verificar interfaz: formularios, botones, navegacion, mensajes de error, contenido dinamico.

Testing de API

Verificar APIs: formatos de respuesta, operaciones CRUD, manejo de errores, paginacion.

Testing de Base de Datos

Verificar datos: creacion/lectura/actualizacion/eliminacion, integridad, transacciones, procedimientos almacenados.

Tipos de Testing No Funcional

Rendimiento

  • Tiempo de respuesta: Que tan rapido responde?
  • Throughput: Cuantas transacciones por segundo?
  • Utilizacion de recursos: Cuanto CPU, memoria y disco usa?
  • Escalabilidad: Puede manejar carga creciente?

Seguridad

  • Autenticacion: Pueden entrar usuarios no autorizados?
  • Autorizacion: Pueden acceder recursos mas alla de sus permisos?
  • Proteccion de datos: Datos sensibles cifrados?
  • Escaneo de vulnerabilidades: OWASP Top 10?

Usabilidad

  • Aprendibilidad: Nuevos usuarios descubren el sistema sin entrenamiento?
  • Eficiencia: Usuarios experimentados completan tareas rapido?
  • Accesibilidad: Usuarios con discapacidades pueden usarlo (WCAG)?
  • Recuperacion de errores: Pueden recuperarse de errores facilmente?

Fiabilidad

  • Disponibilidad: Que porcentaje del tiempo esta operativo (99.9%)?
  • Tolerancia a fallos: Maneja fallas de componentes adecuadamente?
  • Recuperabilidad: Que tan rapido se recupera de fallas?

Compatibilidad

  • Navegadores: Chrome, Firefox, Safari, Edge
  • Dispositivos: Desktop, tablet, mobile
  • Sistemas operativos: Windows, macOS, Linux, iOS, Android

Mantenibilidad

  • Calidad del codigo, modularidad, testeabilidad, documentacion.

Portabilidad

  • Instalabilidad, adaptabilidad, reemplazabilidad.

ISO 25010: El Modelo de Calidad

CaracteristicaCategoriaPregunta Clave
Adecuacion FuncionalFuncionalHace lo que debe?
Eficiencia de RendimientoNo FuncionalEs rapido y eficiente?
CompatibilidadNo FuncionalFunciona con otros sistemas?
UsabilidadNo FuncionalEs facil de usar?
FiabilidadNo FuncionalEs confiable?
SeguridadNo FuncionalEsta protegido?
MantenibilidadNo FuncionalEs facil de cambiar?
PortabilidadNo FuncionalPuede moverse a nuevos ambientes?

Solo una de ocho caracteristicas es funcional. Esto resalta cuanto de la calidad del software es no funcional.

Tabla Comparativa

AspectoTesting FuncionalTesting No Funcional
PruebaQue hace el sistemaComo se desempena
Basado enRequisitos, user storiesAtributos de calidad, SLAs
EjemplosLogin, busqueda, pagoRendimiento, seguridad, usabilidad
HerramientasSelenium, Cypress, PostmanJMeter, k6, OWASP ZAP, Lighthouse
QuienIngenieros QAQA + especialistas
CuandoDurante todo el desarrolloDespues de estabilidad funcional

Ejercicio: Clasifica Actividades de Testing

Clasifica cada actividad como Funcional (F) o No Funcional (NF). Para NF, especifica la caracteristica.

  1. Verificar que un usuario puede registrarse con email valido
  2. Verificar que la pagina de registro carga en menos de 3 segundos
  3. Verificar que el formulario es accesible con lector de pantalla
  4. Verificar que emails duplicados son rechazados
  5. Verificar que el sistema maneja 500 registros simultaneos
  6. Verificar que funciona en Chrome, Firefox y Safari
  7. Verificar que las contrasenas se hashean antes de almacenar
  8. Verificar que el email de confirmacion se envia en menos de 1 minuto
  9. Verificar que el formulario muestra mensajes de error claros
  10. Verificar que el sistema se recupera si el servicio de email cae
  11. Verificar que la API retorna 201 para creacion exitosa
  12. Verificar que el formulario mobile es usable en pantalla de 5 pulgadas
PistaPregunta: "Estoy probando QUE hace el sistema (feature, regla de negocio) o COMO lo hace (velocidad, seguridad, facilidad de uso)?"
Solucion
  1. F — Feature (funcionalidad de registro)
  2. NF — Rendimiento — Tiempo de respuesta
  3. NF — Usabilidad (Accesibilidad) — Cumplimiento de accesibilidad
  4. F — Regla de negocio (restriccion de unicidad)
  5. NF — Rendimiento (Carga) — Capacidad del sistema
  6. NF — Compatibilidad (Navegador) — Soporte cross-browser
  7. NF — Seguridad — Proteccion de datos (hashing)
  8. NF — Rendimiento / Fiabilidad — Oportunidad de proceso dependiente
  9. F — Comportamiento de UI (mostrar errores es un feature). La claridad es usabilidad.
  10. NF — Fiabilidad (Tolerancia a fallos) — Degradacion elegante
  11. F — Comportamiento de API (codigo de estado correcto es contrato funcional)
  12. NF — Usabilidad — Facilidad de uso en factor de forma especifico

Cuando Probar Que

Funcional primero. No tiene sentido probar rendimiento si el feature no funciona. Asegurar correccion funcional antes de invertir en no funcional.

No funcional requiere builds estables. Resultados de rendimiento no tienen sentido si la app se cae a mitad del test.

Planificar no funcional temprano. Aunque se ejecuta despues, planificar temprano. Requisitos de rendimiento, seguridad y accesibilidad deben definirse desde el inicio.

Tips Profesionales

Tip 1: Requisitos no funcionales son frecuentemente implicitos. Los stakeholders rara vez dicen “la pagina debe cargar en 2 segundos.” Lo asumen. QA debe preguntar.

Tip 2: Fallas no funcionales causan mas dano. Un bug funcional afecta un feature. Una brecha de seguridad afecta toda la organizacion.

Tip 3: Muchos equipos ignoran testing no funcional. 500 tests funcionales y cero de rendimiento o seguridad es comun. Esta brecha te alcanza en produccion.

Conclusiones Clave

  • Funcional verifica QUE hace el sistema; no funcional verifica COMO se desempena
  • ISO 25010 define ocho caracteristicas — solo una es funcional
  • Tipos no funcionales: rendimiento, seguridad, usabilidad, fiabilidad, compatibilidad, mantenibilidad, portabilidad
  • Probar funcional primero, luego no funcional con build estable
  • Requisitos no funcionales son frecuentemente implicitos — QA debe preguntar proactivamente
  • Muchos equipos subinvierten en testing no funcional, creando brechas que aparecen en produccion