Software Quality

  • Ada Lovelace

    Ada Lovelace
    • Matemática y escritora inglesa, considerada la primera programadora de la historia.
    • Tradujo y amplió un artículo sobre la Máquina Analítica de Babbage, incluyendo un algoritmo para calcular números de Bernoulli (primer programa de computación).
    • Visionaria del potencial del software: "La máquina analítica puede hacer cualquier cosa que sepamos ordenarle que realice".
    • Identificó que los errores podían provenir no solo del hardware, sino también de defectos en la programación.
  • Period: to

    Origen Y Desarrollo de la Computación

    Durante este tiempo vamos a ver como dos personajes sentaron las bases de lo que hoy se conoce como computación y el desarrollo de software.
  • Alan Turing

    Alan Turing
    • Matemático y pionero de la computación, sentó las bases de la verificación de software.
    • Planteó la pregunta: "¿Cómo comprobar que un programa es correcto?" y propuso un método general de prueba.
    • Estableció que el probador debe ser diferente al programador para garantizar objetividad.
    • Su trabajo es fundamental en la teoría de la calidad del software moderno.
  • Period: to

    Origen y desarrollo del concepto de programación

    En este lapso de tiempo se va a apreciar como nace la programación en medios digitales de la mano de dos autores.
  • Daniel D. McCracken

    Daniel D. McCracken
    • Publicó el primer libro de programación: "Programación de computadores digitales".
    • Destacó la importancia de que los clientes preparen casos de prueba para evitar malentendidos.
    • Frase clave:
      "El cliente debe preparar la solución de prueba con anticipación".
  • Charles L. Baker

    Charles L. Baker
    • Diferenció por primera vez entre pruebas (verificación) y depuración (corrección de errores).
    • Antes de su trabajo, no existía el concepto formal de pruebas de software.
  • Gerald M. Weinberg

    Gerald M. Weinberg
    • Pionero en pruebas tempranas (NASA Proyecto Mercurio): escribió pruebas antes del código.
    • Libro "Fundamentos de la programación informática" (1961): primer capítulo dedicado a pruebas.
    Principios clave:
    • "Escribir el programa correctamente desde el inicio".
    • "Las pruebas deben demostrar adaptabilidad, no solo funcionalidad".
    • Enfatizó el factor humano en "La psicología de la programación informática" (1971).
  • Bill Elmendorf

    Bill Elmendorf
    • Introdujo un enfoque disciplinado para pruebas funcionales.
    • Propuso pruebas basadas en modelos (automatización temprana).
  • Edsger Dijkstra

    Edsger Dijkstra
    • Crítica al Go To en "Go To Considered Harmful": impulsó la programación estructurada.
    • Premio Turing (1972):
    1. "Las pruebas muestran defectos, pero no su ausencia".
    2. Abogó por verificación formal sobre pruebas empíricas.
  • Robert W. Bemer

    Robert W. Bemer
    • Contribuyó en la Conferencia NATO de Ingeniería de Software.
    • Plantó bases de garantía de calidad:
    1. "¿Se ha probado el software para ser útil al cliente, no solo funcional?".
    2. Abogó por equipos dedicados a QA (1 por cada 10 desarrolladores).
  • Period: to

    Desarrollo del campo del software

    En este lapso de tiempo se describen los actores que dieron paso a la emancipación y desarrollo de los conceptos que conforman el software.
  • William C. Hetzel & David Gelperin

    William C. Hetzel & David Gelperin
    • En 1973 publican "Métodos de prueba de programas", primera compilación sistemática de técnicas de testing.
    • 1984: Organizan la 1ª conferencia internacional exclusiva sobre pruebas de software.
    • 1988: Definen 4 modelos clave de testing:
      • Demostración (validar especificaciones).
    • Destrucción (encontrar fallos).
    • Evaluación (detectar errores en diseño).
    • Prevención (evitar defectos desde el inicio).
    • 1992/1993: Fundan las conferencias STAR (EE.UU.) y EuroSTAR (Europa).
  • Frederick Brooks

    Frederick Brooks
    Obra fundamental: Publicó "El mítico hombre-mes", una colección de ensayos sobre ingeniería de software.
    Conceptos clave:
    - "No hay bala de plata": No existen soluciones mágicas para los problemas complejos del desarrollo de software. Costo de la calidad: "Un programa depurado cuesta al menos tres veces más que uno sin depurar". Rol del tester:
    - El adversario diseña casos de prueba basados en especificaciones mientras que el ayudante proporciona datos para depuración diaria.
  • Tom Gilb

    Tom Gilb
    Contribuciones:
    • "Leyes de la no fiabilidad" (1975): Relacionó errores humanos con fallos del sistema.
    • "Métricas de software" (1976): Estableció estándares cuantitativos para medir calidad.
    • "Inspecciones de software" (1993, con Dorothy Graham): Formalizó revisiones del software
  • Michael E. Fagan

    Michael E. Fagan
    Inspecciones formales: Introdujo un proceso sistemático para revisar diseños y código.
    Resultados en IBM:
    - Reducción de defectos: 66% menos defectos por cada mil líneas de código.
    - Aumento de productividad: Casi duplicó la producción de código.
  • Thomas J. McCabe

    Thomas J. McCabe
    • Complejidad ciclomática: Métrica basada en teoría de grafos para medir la complejidad lógica del código.
    • Pruebas de ruta básica: Técnica de caja blanca para garantizar cobertura de todas las rutas de ejecución.
  • William C. Howden

    William C. Howden
    • Oráculo de pruebas: Acuñó el término para referirse al mecanismo que determina si una prueba pasa o falla.
    • Base para automatización: Sentó las bases de las herramientas modernas de testing.
    • Enlace hacia el artículo "Estudios teóricos y empíricos sobre la comprobación de programas":
      ARTÍCULO
  • Glenford Myers

    Glenford Myers
    • Filosofía de testing: "El objetivo de los probadores es hacer que el programa falle".
    Contribuciones:
    • "Fiabilidad del software" (1976): Enfatizó la importancia de las pruebas.
    • "El arte de las pruebas de software" (1979):
    • Introdujo el concepto de pruebas de caja negra.
    • Estableció terminología clave en testing.
  • Barry W. Boehm

    Barry W. Boehm
    • Concepto clave: Introdujo la curva de costo de defectos, demostrando que corregir errores en fases tardías es exponencialmente más costoso.
    "Un error detectado en producción cuesta 100x más que en requisitos". Modelo COCOMO: Primera metodología para estimar costos de desarrollo de software.
  • Period: to

    Desarrollo de conceptos de calidad de software

    Se presenta el desarrollo de conceptos de Ingeniería y calidad de software.
  • James Martin

    James Martin
    Distribución de defectos:
    • 56% en requisitos, 27% en diseño, 7% en codificación.
    • Impacto: Destacó la importancia crítica de la calidad en etapas tempranas.
  • Robert B. Grady

    Robert B. Grady
    • Padre de las métricas modernas:
    • Estableció programas de métricas corporativas en HP.
    • Taxonomía de defectos para prevención proactiva.
    • Aplicó el ciclo PDCA a la mejora de procesos de software.
  • Cem Kaner

    Cem Kaner
    • Pruebas exploratorias: Concepto pionero en su libro clásico (1988).
    • Escuela Context-Driven Testing (1999):
    • "Las pruebas deben adaptarse al contexto del proyecto".
    • Contribuciones legales en regulación de calidad de software.
  • Paul E. Rook

    Paul E. Rook
    • Modelo V: Revolucionó las pruebas al vincular cada fase de desarrollo con su correspondiente nivel de testing:
    • Requisitos ↔ Pruebas de aceptación
    • Diseño ↔ Pruebas de sistema
    • Implementación ↔ Pruebas unitarias/integración
  • Watts Humphrey

    Watts Humphrey
    • Padre de la calidad de software:
    • Creó el CMM (Modelo de Madurez de Capacidades).
    • Desarrollo los modelos PSP (Proceso Personal) y TSP (Proceso en Equipo).
    • Filosofía: "La calidad se construye, no se prueba".
  • Boris Beizer

    Boris Beizer
    • Clasificación de defectos: Sistema para categorizar errores.
    • Paradoja del pesticida:
      "El software se vuelve inmune a pruebas repetitivas".
  • Dorothy Graham

    Dorothy Graham
    Pionera en automatización:
    • Publicó el primer informe sobre pruebas asistidas por computadora (CAST) (1991).
    • Coautoría del clásico "Automatización de pruebas de software" (1999).
    • Contribuyó al programa de certificación ISTQB (2006).
  • Period: to

    Automatización de procesos, calidad y pruebas

    En el siguiente lapso de tiempo se presenta los personajes que desarrollaron la automatización de pruebas dentro del campo de desarrollo de software
  • Brian Marick

    Brian Marick
    Pruebas como oficio:
    • Comparó el testing con la carpintería: "Se aprende mejor con mentores prácticos".
    Agilismo:
    • Firmante del Manifiesto Ágil (2001).
    • Creó los Cuadrantes de Pruebas Ágiles (2003):
    • Negocio vs. Tecnología.
    • Soporte a desarrollo vs. Crítica al producto.
  • Paul C. Jorgensen

    Paul C. Jorgensen
    Referencia en testing:
    • "Pruebas de software: Un enfoque artesanal" (5 ediciones).
    • Documentó la evolución de técnicas de prueba durante 27 años.
  • James Bach

    James Bach
    Estrategias heurísticas:
    • Modelo para seleccionar técnicas de prueba según contexto del proyecto.
    Pruebas Rápidas (RST):
    • Metodología alineada con la escuela Context-Driven Testing.
  • R. Geoff Dromey

    R. Geoff Dromey
    Modelo de calidad tangible:
    • Propuso un marco para operacionalizar la norma ISO/IEC 9126 (calidad de producto).
  • Eric S. Raymond

    Eric S. Raymond
    Código abierto y calidad:
    • "La catedral y el bazar":
    1. Ley de Linus: "Con suficientes ojos, todos los errores son superficiales".
    2. 19 pautas para software open-source.
  • Jonathan Bach

    Jonathan Bach
    Pruebas basadas en sesiones:
    • Bloques de testing exploratorio con misiones específicas.
    Escala de libertad del tester:
    • Desde "guiado" hasta "exploratorio libre".
  • Period: to

    Apogeo de la automatización de pruebas dentro del software

    En este periodo de tiempo se explorará los principales aportes para el desarrollo y evolución de la automatización de las pruebas de software.
  • Kent Beck

    Kent Beck
    • Padre del TDD: Formalizó el Desarrollo Guiado por Pruebas (TDD) en su libro "Test Driven Development: By Example".
    • "Escribir pruebas antes que el código".
    Contribuciones clave:
    • Framework xUnit para pruebas unitarias.
    • Co-creador de Programación Extrema (XP).
  • Bret Pettichord

    Bret Pettichord
    Escuelas de Testing: Clasificó las metodologías de pruebas en 4 enfoques:
    1. Analítica (basada en datos).
    2. Dirigida por normas (estándares formales).
    3. Orientada a la calidad (enfocada en atributos).
    4. Context-Driven (adaptativa al proyecto).
    5. Posteriormente añadió la escuela ágil.
  • Michael Bolton

    Michael Bolton
    • Diferenció Testing vs. Checking:
    • Checking: Verificación automática (ej.: scripts).
    • Testing: Exploración humana (descubrimiento, aprendizaje).
    • Coautor de Rapid Software Testing (RST) con James Bach.
  • Erik Van Veenendaal

    Erik Van Veenendaal
    Modelo TMMI:
    • Marco para evaluar y mejorar la madurez de los procesos de testing en organizaciones.
    • Evolución del TMM (1996).
  • Doron Reuveni

    Doron Reuveni
    Crowdtesting: Externalización de pruebas a comunidades globales para diversidad de contextos y dispositivos. Basado en el concepto de crowdsourcing (Howe, 2006).
  • Mike Cohn (2009)

    Mike Cohn (2009)
    Pirámide de Automatización:
    • Propuso 3 niveles clave:
    • Pruebas unitarias (base).
    • Pruebas de servicio/integración.
    • Pruebas de UI (cúspide, mínimas).
  • Lisa Crispin

    Lisa Crispin
    Pionera en pruebas ágiles:
    • Libros "Agile Testing" y "More Agile Testing".
    • Integró pruebas exploratorias en equipos ágiles.
  • Jonathan Kohl

    Jonathan Kohl
    Automatización más allá de regresión:
    • Uso de scripts para:
    • Configuración de entornos.
    • Generación de datos.
    • Flujos de trabajo complejos.
    • Defendió el equilibrio entre automatización y pruebas exploratorias manuales.