1. ¿Qué es el Testing de Software?

1.1 Introducción

El Testing de Software, o pruebas de software, es el conjunto de actividades que se realizan para evaluar si una aplicación funciona como se espera, si cumple sus requisitos y si puede ser utilizada con un nivel aceptable de calidad y confianza.

Cuando una persona usa un sistema espera que las operaciones importantes funcionen correctamente: iniciar sesión, registrar datos, calcular importes, enviar formularios, guardar cambios, consultar información o realizar pagos. El testing ayuda a descubrir problemas antes de que esos errores lleguen a los usuarios finales.

Probar software no consiste solamente en "hacer clic" en una pantalla para ver qué ocurre. Es una actividad técnica y ordenada que requiere análisis, criterio, documentación y comunicación. Un buen tester no solo ejecuta pasos: piensa en riesgos, busca comportamientos inesperados, compara resultados y ayuda al equipo a tomar mejores decisiones.

1.2 Una definición simple

Podemos definir el testing de esta manera:

Testing de Software es el proceso de verificar y validar un programa para encontrar defectos, evaluar su calidad y obtener información sobre el riesgo de usarlo.

Esta definición contiene varias ideas importantes:

  • Proceso: no es una acción aislada, sino un conjunto de tareas planificadas.
  • Verificar: comprobar que el software fue construido de acuerdo con lo especificado.
  • Validar: comprobar que el software realmente resuelve la necesidad del usuario.
  • Encontrar defectos: detectar comportamientos incorrectos, incompletos o riesgosos.
  • Evaluar calidad: analizar qué tan confiable, usable, seguro, rápido o mantenible es el sistema.
  • Informar riesgos: ayudar a decidir si el producto está listo para avanzar, corregirse o publicarse.

1.3 ¿Por qué es necesario probar?

El software es construido por personas, y las personas pueden cometer errores. Un requisito puede estar mal entendido, una condición puede no haberse contemplado, un cálculo puede estar incompleto o una modificación puede romper una funcionalidad que antes funcionaba bien.

Además, los sistemas reales suelen tener muchas combinaciones posibles: distintos usuarios, datos, navegadores, dispositivos, permisos, configuraciones, horarios, idiomas y conexiones con otros sistemas. Aunque el código parezca correcto, puede fallar en situaciones concretas.

El testing permite reducir estos riesgos. No garantiza que el software no tenga errores, pero sí aumenta la probabilidad de descubrir problemas importantes a tiempo.

Idea clave: probar software no demuestra que un sistema sea perfecto. Demuestra que, bajo ciertas condiciones evaluadas, se comporta de la manera esperada o revela dónde no lo hace.

1.4 Objetivos del Testing de Software

El objetivo más conocido del testing es encontrar errores, pero no es el único. Las pruebas cumplen varias funciones dentro de un proyecto:

  • Detectar defectos: encontrar fallas antes de que afecten a los usuarios.
  • Comprobar requisitos: verificar que las funcionalidades pedidas fueron implementadas correctamente.
  • Reducir riesgos: identificar qué partes del sistema son más sensibles o pueden generar mayor impacto.
  • Generar confianza: aportar evidencia para decidir si una versión puede entregarse.
  • Mejorar la calidad: ayudar a que el producto sea más correcto, claro, estable y mantenible.
  • Prevenir problemas futuros: documentar casos importantes para repetirlos en próximas versiones.

Por eso el testing no debe verse como una etapa final que solo busca "aprobar o rechazar" una aplicación. Debe entenderse como una práctica que acompaña al desarrollo y aporta información útil durante todo el proceso.

1.5 Ejemplo cotidiano

Supongamos que estamos desarrollando una pantalla de inicio de sesión. A primera vista, podríamos probar solamente el caso más simple: escribir un usuario correcto, escribir una contraseña correcta y presionar el botón de ingresar.

Sin embargo, un tester pensará en muchas otras situaciones:

  • ¿Qué ocurre si el usuario deja campos vacíos?
  • ¿Qué mensaje aparece si la contraseña es incorrecta?
  • ¿El sistema distingue entre usuario inexistente y contraseña inválida?
  • ¿Se bloquea la cuenta después de varios intentos fallidos?
  • ¿La contraseña se muestra oculta?
  • ¿El botón funciona igual con teclado, mouse y pantalla táctil?
  • ¿La sesión queda activa luego de cerrar y abrir el navegador?
  • ¿El sistema responde correctamente si el servidor tarda en contestar?

Este ejemplo muestra que probar no es solo confirmar el camino correcto. También implica explorar caminos alternativos, datos inválidos, límites, errores y condiciones poco frecuentes.

1.6 Testing y calidad no son exactamente lo mismo

El testing está muy relacionado con la calidad, pero no son sinónimos. La calidad de software es una característica amplia del producto y del proceso con el que se construye. Incluye aspectos como funcionalidad, rendimiento, seguridad, usabilidad, mantenibilidad, accesibilidad y confiabilidad.

El testing es una de las prácticas que ayuda a evaluar y mejorar esa calidad. Por ejemplo, una prueba puede revelar que una funcionalidad calcula mal un descuento, que una página tarda demasiado en cargar o que un mensaje de error no es claro para el usuario.

Pero la calidad también depende de otras actividades: buenos requisitos, diseño adecuado, código claro, revisiones, refactoring, integración continua, comunicación del equipo y seguimiento de defectos.

1.7 El testing no es solo encontrar errores

Una idea incompleta es pensar que el tester solo "rompe" el sistema. En realidad, el testing produce información. Esa información permite responder preguntas como:

  • ¿La funcionalidad cumple lo acordado?
  • ¿Qué riesgos quedan pendientes?
  • ¿Qué partes del sistema necesitan más revisión?
  • ¿Qué defectos tienen mayor impacto?
  • ¿Qué tan confiable es esta versión para publicarse?
  • ¿Qué casos deberían automatizarse en el futuro?

En un proyecto profesional, esta información es tan importante como el defecto encontrado. Un reporte claro puede evitar confusiones, ahorrar tiempo y ayudar a priorizar el trabajo del equipo.

1.8 Conceptos básicos: error, defecto y falla

En testing se utilizan varias palabras que conviene distinguir desde el comienzo:

Concepto Significado Ejemplo
Error Equivocación humana al analizar, diseñar, programar o configurar. Un desarrollador interpreta mal cómo debe calcularse un impuesto.
Defecto Problema introducido en el código, documentación, diseño o configuración. La fórmula implementada usa un porcentaje incorrecto.
Falla Comportamiento observable incorrecto cuando se ejecuta el sistema. El usuario ve un total mal calculado en la pantalla de compra.

Un error humano puede generar un defecto en el producto, y ese defecto puede manifestarse como una falla durante la ejecución. Comprender esta diferencia ayuda a comunicar problemas con mayor precisión.

1.9 ¿Cuándo se debe probar?

Una práctica poco recomendable es dejar las pruebas para el final del proyecto. Si los problemas se detectan tarde, corregirlos suele ser más costoso porque pueden afectar muchas partes ya construidas.

Lo ideal es probar desde etapas tempranas:

  • Al revisar requisitos, para detectar ambigüedades antes de programar.
  • Durante el desarrollo, para comprobar unidades pequeñas de código.
  • Al integrar componentes, para verificar que colaboren correctamente.
  • Antes de publicar, para revisar flujos completos y riesgos principales.
  • Después de cambios importantes, para confirmar que no se rompió lo que ya funcionaba.

Cuanto antes se encuentra un defecto, más fácil suele ser corregirlo y menor es su impacto.

1.10 ¿Qué se puede probar?

Se puede probar mucho más que una pantalla visible. Algunos elementos que pueden ser evaluados son:

  • Funciones individuales: cálculos, validaciones, transformaciones de datos.
  • Componentes: módulos, clases, servicios o partes independientes del sistema.
  • Integraciones: comunicación entre módulos, bases de datos, APIs o servicios externos.
  • Interfaces de usuario: formularios, botones, mensajes, navegación y accesibilidad.
  • Procesos completos: flujos de negocio de principio a fin.
  • Aspectos no funcionales: rendimiento, seguridad, usabilidad, compatibilidad y estabilidad.
  • Documentación: instrucciones, manuales, especificaciones y mensajes visibles.

El alcance de las pruebas depende del objetivo del proyecto, del tiempo disponible, del nivel de riesgo y de la importancia de cada funcionalidad.

1.11 Probar no significa revisar todas las combinaciones

En sistemas reales suele ser imposible probar absolutamente todo. Una pantalla con varios campos, permisos, configuraciones y estados puede generar miles o millones de combinaciones posibles.

Por eso el testing necesita técnicas de selección. El objetivo es elegir pruebas representativas y valiosas, no ejecutar combinaciones sin criterio. Algunas preguntas útiles son:

  • ¿Qué funcionalidad es más crítica para el usuario?
  • ¿Dónde sería más grave una falla?
  • ¿Qué parte cambió recientemente?
  • ¿Qué datos tienen más probabilidades de generar errores?
  • ¿Qué casos límites podrían revelar defectos?

En temas posteriores veremos técnicas concretas para diseñar mejores casos de prueba sin intentar cubrirlo todo de forma desordenada.

1.12 Testing manual y testing automatizado

Las pruebas pueden ejecutarse de forma manual o automatizada. Ambas formas son útiles y cumplen objetivos distintos.

Tipo Características Uso habitual
Testing manual Una persona diseña, ejecuta y observa el comportamiento del sistema. Exploración, revisión visual, validación de experiencia de usuario, pruebas iniciales.
Testing automatizado Un programa ejecuta verificaciones repetibles y compara resultados esperados. Regresión, validaciones frecuentes, flujos críticos, integración continua.

Automatizar no reemplaza por completo el criterio humano. La automatización es muy potente para repetir verificaciones, pero una persona sigue siendo necesaria para analizar riesgos, descubrir casos nuevos, interpretar resultados y decidir qué conviene probar.

1.13 Un caso simple de prueba

Un caso de prueba describe una situación que queremos verificar. Por ejemplo, para una calculadora de descuentos:

Objetivo Verificar que se aplique un descuento del 10% a una compra de $1000.
Datos de entrada Importe: 1000. Descuento: 10%.
Pasos Ingresar el importe, seleccionar el descuento y confirmar el cálculo.
Resultado esperado El sistema debe mostrar un total de $900.
Resultado obtenido Se completa durante la ejecución de la prueba.

Este ejemplo es sencillo, pero muestra la estructura básica: objetivo, datos, pasos y resultado esperado. Sin un resultado esperado claro, no podemos decidir con precisión si la prueba pasó o falló.

1.14 ¿Quién realiza el testing?

En algunos equipos existe un rol específico de QA o tester. En otros, los desarrolladores también escriben y ejecutan pruebas. En proyectos pequeños, una misma persona puede cumplir varias funciones.

Lo importante es entender que la calidad no pertenece a un único rol. Todo el equipo participa:

  • Analistas: ayudan a aclarar requisitos y reglas de negocio.
  • Desarrolladores: escriben código verificable y pruebas técnicas.
  • Testers o QA: diseñan pruebas, exploran riesgos y reportan defectos.
  • Usuarios o representantes del negocio: validan que el producto resuelva la necesidad real.
  • Responsables del proyecto: priorizan correcciones según impacto y riesgo.

Un buen proceso de testing mejora cuando existe colaboración entre estos roles, no cuando se trabaja de forma aislada.

1.15 Límites del testing

El testing es fundamental, pero tiene límites. Conviene conocerlos desde el inicio para no crear expectativas incorrectas:

  • No puede demostrar que un sistema no tiene ningún defecto.
  • No reemplaza la necesidad de buenos requisitos y buen diseño.
  • No mejora la calidad si los defectos encontrados no se corrigen o no se analizan.
  • No todas las pruebas deben automatizarse.
  • No todos los defectos tienen la misma importancia.
  • No siempre es posible probar todas las combinaciones de datos y escenarios.

Por estas razones, el testing profesional se apoya en prioridades, análisis de riesgo, comunicación clara y selección inteligente de casos de prueba.

1.16 Qué debes recordar de este tema

  • El Testing de Software evalúa si una aplicación cumple lo esperado y ayuda a descubrir defectos.
  • Probar no garantiza perfección, pero reduce riesgos y aumenta la confianza.
  • El testing no es solo ejecutar pasos; también implica análisis, diseño, observación y comunicación.
  • Un error humano puede introducir un defecto, y ese defecto puede manifestarse como una falla.
  • Las pruebas deben comenzar lo antes posible, no solamente al final del proyecto.
  • La calidad es responsabilidad de todo el equipo.
  • Un buen caso de prueba necesita un resultado esperado claro.

1.17 Conclusión

El Testing de Software es una disciplina esencial para construir aplicaciones más confiables. Su propósito no es criticar el trabajo de otros ni buscar errores sin contexto, sino aportar información concreta sobre la calidad y los riesgos del producto.

Para quien comienza, la idea principal es esta: probar software significa observar el comportamiento de un sistema de manera planificada para comparar lo que hace con lo que debería hacer.

En los próximos temas avanzaremos sobre los motivos por los que probamos, las diferencias entre errores y defectos, los roles del equipo, los niveles de prueba, los tipos de testing y las técnicas básicas para diseñar casos de prueba útiles.