diff --git a/Cargo.toml b/Cargo.toml index 085ed43..c19ddfd 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -158,3 +158,15 @@ path = "examples/soluciones/chaos_testing_nivel_3.rs" [[example]] name = "quality_strategy" path = "examples/quality_strategy.rs" + +[[example]] +name = "quality_strategy_nivel_1" +path = "examples/soluciones/quality_strategy_nivel_1.rs" + +[[example]] +name = "quality_strategy_nivel_2" +path = "examples/soluciones/quality_strategy_nivel_2.rs" + +[[example]] +name = "quality_strategy_nivel_3" +path = "examples/soluciones/quality_strategy_nivel_3.rs" diff --git a/docs/costos/10-estrategia-de-calidad-para-sistemas-reales.md b/docs/costos/10-estrategia-de-calidad-para-sistemas-reales.md new file mode 100644 index 0000000..ea88903 --- /dev/null +++ b/docs/costos/10-estrategia-de-calidad-para-sistemas-reales.md @@ -0,0 +1,7 @@ +# Costos y benchmarks: estrategia de calidad + +**Estado:** draft + +No hay benchmark propio. El modelo representa decisiones y señales, no el costo +operativo de CI, observabilidad o revisión. `cargo bench --all-targets` verifica +la ruta del repositorio. diff --git a/docs/ejercicios/10-estrategia-de-calidad-para-sistemas-reales.md b/docs/ejercicios/10-estrategia-de-calidad-para-sistemas-reales.md new file mode 100644 index 0000000..c5fd64c --- /dev/null +++ b/docs/ejercicios/10-estrategia-de-calidad-para-sistemas-reales.md @@ -0,0 +1,31 @@ +# Ejercicios: estrategia de calidad para sistemas reales + +**Estado:** draft + +## Nivel 1: asignar señales + +Relaciona una regla de precio, una colaboración entre módulos, una regresión +conocida, un error de producción y una decisión de producto con la señal más +adecuada. + +```bash +cargo run --example quality_strategy_nivel_1 +``` + +## Nivel 2: reconocer límites + +Identifica por qué CI no equivale a aprobación humana y por qué una suite verde +no reemplaza retroalimentación operativa. + +```bash +cargo run --example quality_strategy_nivel_2 +``` + +## Nivel 3: cerrar el ciclo de aprendizaje + +Parte de un error detectado en producción y decide qué prueba, señal operativa +o revisión de diseño debe agregarse para reducir el riesgo en el futuro. + +```bash +cargo run --example quality_strategy_nivel_3 +``` diff --git a/examples/soluciones/quality_strategy_nivel_1.rs b/examples/soluciones/quality_strategy_nivel_1.rs new file mode 100644 index 0000000..d06ca1b --- /dev/null +++ b/examples/soluciones/quality_strategy_nivel_1.rs @@ -0,0 +1,10 @@ +use rust_testing::quality_strategy::{QualityRisk, QualitySignal, StrategyDecision}; +fn main() -> Result<(), rust_testing::quality_strategy::StrategyError> { + let d = StrategyDecision::new( + "protege precio", + QualitySignal::LocalTest, + QualityRisk::LocalRegression, + )?; + println!("{} => {:?}", d.decision(), d.signal()); + Ok(()) +} diff --git a/examples/soluciones/quality_strategy_nivel_2.rs b/examples/soluciones/quality_strategy_nivel_2.rs new file mode 100644 index 0000000..d60d81b --- /dev/null +++ b/examples/soluciones/quality_strategy_nivel_2.rs @@ -0,0 +1,11 @@ +use rust_testing::quality_strategy::{QualityRisk, QualitySignal, StrategyDecision, StrategyGap}; +fn main() -> Result<(), rust_testing::quality_strategy::StrategyError> { + let d = StrategyDecision::new( + "aprueba cambio", + QualitySignal::ContinuousIntegration, + QualityRisk::KnownRegression, + )? + .with_gap(StrategyGap::AutomationAsApproval); + println!("{} => {:?}", d.decision(), d.signal()); + Ok(()) +} diff --git a/examples/soluciones/quality_strategy_nivel_3.rs b/examples/soluciones/quality_strategy_nivel_3.rs new file mode 100644 index 0000000..c73de5b --- /dev/null +++ b/examples/soluciones/quality_strategy_nivel_3.rs @@ -0,0 +1,10 @@ +use rust_testing::quality_strategy::{QualityRisk, QualitySignal, StrategyDecision}; +fn main() -> Result<(), rust_testing::quality_strategy::StrategyError> { + let d = StrategyDecision::new( + "observa error real", + QualitySignal::Observability, + QualityRisk::ProductionBehavior, + )?; + println!("{} => {:?}", d.decision(), d.signal()); + Ok(()) +}