¿Te resulta más fácil leer con fondo crema, un tono de color, más contraste o un texto más grande? Elige tus colores y tu texto una sola vez, para todas las páginas.

Lección gratuita

Tipos de pruebas de software

Después de esta lección: Puedo decir qué tipo de prueba encuentra cada tipo de fallo.

Lección de 50 min5 comandosLaboratorio de comandos de Linux de cada día: los treinta comandos que se escriben de memoria

Una tienda que cobra de menos

Probar un programa es ejecutarlo con datos conocidos para ver si hace lo que se espera. Sirve para encontrar fallos antes de que los encuentre un cliente.

Una tienda online vende un pedido de 100 euros y cobra solo 21. Nadie lo nota hasta que llega la factura del mes. Una comprobación de dos líneas lo habría visto el primer día.

Al final de esta lección

Nota

Puedo decir qué tipo de prueba encuentra cada tipo de fallo.

Palabras clave

PalabraQué significa
Defectola línea de código que está mal
Fallolo que se ve mal cuando el programa se ejecuta
Errorla equivocación de la persona que escribió el código
Prueba unitariacomprueba una sola función
Prueba de integracióncomprueba que dos partes trabajan juntas
Prueba de aceptacióncomprueba que se cumple lo que pidió el cliente

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Error, defecto y fallo son cosas distintas

Una persona comete un error: confunde dos ideas al escribir. Ese error deja un defecto en el código. Cuando el programa se ejecuta con ciertos datos, el defecto produce un fallo que alguien ve.

Una prueba solo ve fallos. Después tú buscas el defecto que lo causó. Prueba el ejemplo de la tienda en el laboratorio.

Crea una carpeta de trabajo

Comando
mkdir -p ~/pruebas

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Entra en ella

Comando
cd ~/pruebas

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Escribe la función con un defecto

Comando
printf 'def iva(precio):\n    return precio * 0.21\nprint(iva(100))\n' > iva.py

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Ejecútala y mira el fallo

Comando
python3 iva.py

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Ejemplo: error, defecto y fallo de la tienda

PalabraEn nuestro ejemplo
ErrorQuien escribió la función confundió el IVA con el precio con IVA
DefectoLa línea `return precio * 0.21` devuelve solo el impuesto
FalloEl programa imprime 21.0 y se esperaba 121.0

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Un error frecuente

Advertencia

Mucha gente cree que si el programa no falla hoy, no tiene defectos. Un defecto puede dormir meses hasta que llega un dato concreto. Una prueba que no falla solo te dice que esos datos funcionan, nada más.

Cada nivel de prueba mira más lejos

Las pruebas se ordenan por el tamaño de lo que comprueban. Una prueba unitaria mira una función. Una prueba de integración mira dos partes juntas, por ejemplo la tienda y la base de datos.

Una prueba de sistema ejecuta el programa entero, como lo haría un usuario. Una prueba de aceptación pregunta si el programa cumple lo que pidió el cliente.

Ejemplo: qué nivel encuentra cada fallo

Fallo que se veDónde está el defectoNivel que lo encuentra
El IVA de un precio sale malEn una funciónUnitaria
El pedido se guarda pero el correo no saleEntre el pedido y el correoIntegración
La web se cae con 200 pedidos a la vezEn el programa enteroSistema
El cliente pidió factura en PDF y sale en textoEn lo que se pidióAceptación

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Un defecto cuesta más cuanto más tarde aparece

Un defecto que ves al escribir la función se arregla en un minuto. El mismo defecto en producción obliga a avisar al cliente, buscar la causa y publicar otra versión.

La tabla es una regla práctica con cifras de ejemplo, no una medida exacta.

Ejemplo: el coste relativo según cuándo se encuentra

Cuándo se encuentraQué hay que hacerCoste de ejemplo
Al escribir la funciónCorregir la línea1
En las pruebasCorregir y repetir las pruebas10
Con el cliente ya usándoloAvisar, corregir, publicar y pedir perdón100

Las celdas que rellenan los estudiantes quedan en blanco en esta vista previa.

Busca un fallo real en el registro

Comando
grep -o "ERROR payment service did not answer" /var/log/test.log | head -n 1

Se muestra aquí y no se ejecuta. Crea una cuenta gratuita para pulsar Ejecutar y escribirlo en el terminal de tu propio laboratorio.

Un registro guarda los fallos que nadie probó

La orden anterior muestra una línea del registro del laboratorio: el servicio de pagos no respondió. Ese fallo ocurrió con la máquina en marcha, sin que ninguna prueba lo mirara.

Una prueba de integración entre la tienda y el servicio de pagos lo habría buscado antes.

Sobre este laboratorio y su código: Laboratorio de comandos de Linux de cada día: los treinta comandos que se escriben de memoria

¿Enseñas a una clase? Asigna este módulo a tus alumnos con guía del profesor, tareas con corrección automática y un laboratorio para cada alumno.