Easier to read with cream paper, a tint, more contrast or larger text? Choose your colours and text, once, for every page.

Vista previa

Probar un programa

Esta es la primera página de la lección. Léela y prueba las actividades. El resto está en el curso completo.

35 minutos

Funciona, hasta que llega tu amigo

Haces un programa para cobrar la entrada del polideportivo. Pruebas con tu edad, 15 años. Sale bien.

Pero llega tu amigo, que tiene justo 12 años. El programa le cobra mal.

Un programa no está terminado hasta que lo has probado con cuidado.

Palabras clave

PalabraQué significaEjemplo
PruebaEjecutar el programa con unos datos para ver si responde bien.Probar con 15 años
Caso de pruebaUn dato de entrada y el resultado que esperas.15 años, 2.5 euros
Resultado esperadoLo que debería salir. Lo decides antes de ejecutar.2.5
Resultado realLo que sale de verdad al ejecutar.0.0
Valor límiteUn dato justo en el borde de una regla.11, 12, 17 y 18 años
Prueba automáticaUna prueba escrita en código que se ejecuta sola.Las de Ejecutar pruebas

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

Un caso de prueba

Una prueba tiene dos partes. Un dato de entrada y el resultado esperado.

Piensa el resultado antes de ejecutar. Si miras primero lo que sale, te lo creerás aunque esté mal.

Después comparas el resultado esperado con el resultado real. Si no coinciden, hay un fallo.

Pruébalo: tres casos de prueba

Código: java
public class Main {
    // Menos de 12 años: gratis. De 12 a 17: 2.5. De 18 en adelante: 4.
    // El if significa "si". Lo verás con calma más adelante.
    static double ticketPrice(int age) {
        if (age < 12) {
            return 0;
        }
        if (age <= 17) {
            return 2.5;
        }
        return 4;
    }

    // Compara lo esperado con lo real y escribe OK o FALLA.
    static void check(double expected, double actual) {
        if (expected == actual) {
            System.out.println("OK: salió " + actual);
        } else {
            System.out.println("FALLA: esperaba " + expected + " y salió " + actual);
        }
    }

    public static void main(String[] args) {
        check(0, ticketPrice(6));
        check(2.5, ticketPrice(15));
        check(4, ticketPrice(30));
    }
}

Los fallos viven en el borde

Casi todos los fallos aparecen en el borde de una regla. Probar solo con 6, 15 y 30 no basta.

La regla cambia en el 12 y en el 18. Mira qué pasa justo antes y justo después.

Esos datos se llaman valores límite. Un buen probador siempre los prueba.

Pruébalo: los bordes de verdad

Código: java
public class Main {
    // Este precio tiene un fallo en un borde.
    static double ticketPrice(int age) {
        if (age <= 12) {
            return 0;
        }
        if (age <= 17) {
            return 2.5;
        }
        return 4;
    }

    static void check(double expected, double actual) {
        if (expected == actual) {
            System.out.println("OK: salió " + actual);
        } else {
            System.out.println("FALLA: esperaba " + expected + " y salió " + actual);
        }
    }

    public static void main(String[] args) {
        check(0, ticketPrice(11));
        check(2.5, ticketPrice(12));
        check(2.5, ticketPrice(17));
        check(4, ticketPrice(18));
        // Busca la línea con el fallo y corrígela.
    }
}

Ejemplo resuelto: casos de prueba para la tarifa

EdadEsperadoTipo de pruebaPor qué sirve
60NormalEstá dentro del primer grupo.
110LímiteEs el último año gratis.
122.5LímiteEs el primer año de pago.
172.5LímiteEs el último año del segundo grupo.
184LímiteEs el primer año del tercer grupo.
404NormalEstá dentro del último grupo.

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

Pruebas que se ejecutan solas

Probar a mano cansa. Por eso los programadores escriben pruebas automáticas.

En Java se usa una herramienta llamada JUnit. Cada prueba compara lo esperado con lo real. La orden se llama assertEquals: primero va lo esperado y después lo real.

Cuando pulsas Ejecutar pruebas en una tarea, la plataforma hace exactamente esto.

Una prueba automática, para leer

Código: java
@Test
void firstYearOfPayment() {
    // Esperado 2.5, real lo que devuelve ticketPrice(12).
    // El 0.001 es la diferencia pequeña que se acepta en decimales.
    assertEquals(2.5, Main.ticketPrice(12), 0.001);
}

Qué datos probar siempre

Consejo

Uno normal, de en medio. Los dos límites de cada regla. Y uno raro, como 0 o un número negativo. Con eso encuentras casi todos los fallos.

Elige los casos

Inténtalo

Elige los casos

4 preguntas
Pruébalo: tus respuestas se corrigen aquí y después se olvidan. Inicia sesión si quieres que se guarde tu puntuación y continuar donde lo dejaste.Iniciar sesión para guardar tu puntuación

Tus respuestas se corrigen aquí y no se guardan. Una cuenta guarda tus resultados.

La lección continúa

4 partes más de esta lección están en el curso completo, con los ejercicios y la comprobación final. Una cuenta te da todo.