Rullst AcademyRullst Academy/Lección
Rust II: datos, decisiones y confianza · Lección 11 / 12

Pruebas que encuentran defectos

Una prueba útil comprueba una regla, incluido el punto donde cambia. Busquemos un defecto de un solo carácter.

Rutas de aprendizaje14 min

Vamos a descubrir juntos

  1. 1

    #[test] marca funciones ejecutadas por cargo test. #[cfg(test)] incluye el módulo solo al compilar pruebas. use super::* permite acceder a elementos del módulo padre.

  2. 2

    assert! exige true; assert!(!valor) exige false. assert_eq! compara valores. La expectativa debe venir de la regla, no copiar el cálculo de la implementación.

  3. 3

    Con 3 disponibles se permiten pedidos de 2 y 3; de 4 no. Cero también es inválido. Estos casos prueban por debajo, justo en el límite, por encima y un valor prohibido.

  4. 4

    El escenario 2 cambia <= por < y rechaza un pedido válido de 3. Ejecuta las pruebas tras el cambio: boundary debe fallar. Restaurar la regla y verlo pasar muestra que detecta ese defecto concreto.

DE LA LECCIÓN A LA PRÁCTICA

Una guía para seguir a tu ritmo

Lee los pasos antes de usar la referencia de abajo. Los comandos se ejecutan en el terminal del sistema indicado; el registro ocurre en el sitio oficial. Los ejercicios de Rullst Academy son práctica y no verifican tu instalación ni cuenta externa.

fn can_take(available: u16, request: u16) -> bool {
    request > 0 && request <= available
}
fn main() {
    println!("{} {} {}", can_take(3, 2), can_take(3, 3), can_take(3, 4));
}
#[cfg(test)]
mod tests {
    use super::*;
    #[test]
    fn boundary() {
        assert!(can_take(3, 2));
        assert!(can_take(3, 3));
        assert!(!can_take(3, 4));
    }
    #[test]
    fn rejects_zero() { assert!(!can_take(3, 0)); }
}

Enlaces oficiales y siguiente paso

✦
TU MISIÓN

Escribir pruebas de frontera y mostrar que detectan un cambio incorrecto.

Ahora te toca

Taller de descubrimientos

Lee, predice, investiga

Predice antes de mostrar. Este panel revela resultados preparados; no compila tu código. Los errores se resumen; el texto exacto puede variar con la versión del compilador.
Mini experimento

Simulación didáctica: compara tarjetas y comprueba tus predicciones. El navegador no compila Rust ni inicia un servidor.

fn can_take(available: u16, request: u16) -> bool {
    request > 0 && request <= available
}
fn main() {
    println!("{} {} {}", can_take(3, 2), can_take(3, 3), can_take(3, 4));
}
#[cfg(test)]
mod tests {
    use super::*;
    #[test]
    fn boundary() {
        assert!(can_take(3, 2));
        assert!(can_take(3, 3));
        assert!(!can_take(3, 4));
    }
    #[test]
    fn rejects_zero() { assert!(!can_take(3, 0)); }
}
Prepara tus respuestas y comprueba cuando estés listo.
Una pausa para entender

¿Todas las pruebas pasando demuestran ausencia de defectos?

Necesito una pista

Un conjunto finito de ejemplos no cubre automáticamente todos los comportamientos.

Cargando tu camino…

Llévatelo contigo

Ejecuta cargo test. Cambia <= por <, confirma el fallo y restaura. Añade (0, 1) y (20, 20), explicando qué regla protege cada caso.

RUST II · .rs

Tu espacio de práctica Rust II

Lee, predice y responde aquí. Para compilar realmente, extrae el ZIP en una carpeta nueva, abre la terminal junto a Cargo.toml y usa estos comandos. Debes tener instalados Rust y las herramientas de tu sistema.

cargo check --offline
cargo test --offline
cargo run --offline
Mis archivos y GitHub

El editor guarda un borrador en este navegador y permite descargar o publicar tu .rs. Para ejecutarlo en el proyecto, guarda el archivo editado como src/main.rs. El ZIP contiene la versión inicial; los resultados preparados no cambian con tus ediciones. La evaluación online no verifica ejecución local.

A tu ritmo

Mis archivos y GitHub

Cada lección puede convertirse en un registro propio: código, notas o un plan de práctica. Guardar un archivo en GitHub es opcional y no cambia tus XP.

Manual del alumno

El editor y las descargas se abren cuando esta lección esté disponible para tu cuenta. Revisa el acceso indicado abajo o vuelve al mapa de la ruta.

Comprobando tu acceso a esta lección…

Rullstpetbot

La IA puede equivocarse. Consulta el material de la lección.