-
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
- 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
- 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
- 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
- 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.
- "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
- Introdujo un enfoque disciplinado para pruebas funcionales.
- Propuso pruebas basadas en modelos (automatización temprana).
-
Edsger Dijkstra
- Crítica al Go To en "Go To Considered Harmful": impulsó la programación estructurada.
- Premio Turing (1972):
- "Las pruebas muestran defectos, pero no su ausencia".
- Abogó por verificación formal sobre pruebas empíricas.
-
Robert W. Bemer
- Contribuyó en la Conferencia NATO de Ingeniería de Software.
- Plantó bases de garantía de calidad:
- "¿Se ha probado el software para ser útil al cliente, no solo funcional?".
- 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
- 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
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
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
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
- 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
- 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
- Filosofía de testing: "El objetivo de los probadores es hacer que el programa falle".
- "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
- Concepto clave: Introdujo la curva de costo de defectos, demostrando que corregir errores en fases tardías es exponencialmente más costoso.
-
Period: to
Desarrollo de conceptos de calidad de software
Se presenta el desarrollo de conceptos de Ingeniería y calidad de software. -
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
- 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
- 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
- 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
- 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
- Clasificación de defectos: Sistema para categorizar errores.
- Paradoja del pesticida:
"El software se vuelve inmune a pruebas repetitivas".
-
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
Pruebas como oficio:- Comparó el testing con la carpintería: "Se aprende mejor con mentores prácticos".
- 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
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
Estrategias heurísticas:- Modelo para seleccionar técnicas de prueba según contexto del proyecto.
- Metodología alineada con la escuela Context-Driven Testing.
-
R. Geoff Dromey
Modelo de calidad tangible:- Propuso un marco para operacionalizar la norma ISO/IEC 9126 (calidad de producto).
-
Eric S. Raymond
Código abierto y calidad:- "La catedral y el bazar":
- Ley de Linus: "Con suficientes ojos, todos los errores son superficiales".
- 19 pautas para software open-source.
-
Jonathan Bach
Pruebas basadas en sesiones:- Bloques de testing exploratorio con misiones específicas.
- 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
- 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".
- Framework xUnit para pruebas unitarias.
- Co-creador de Programación Extrema (XP).
-
Bret Pettichord
Escuelas de Testing: Clasificó las metodologías de pruebas en 4 enfoques:- Analítica (basada en datos).
- Dirigida por normas (estándares formales).
- Orientada a la calidad (enfocada en atributos).
- Context-Driven (adaptativa al proyecto).
- Posteriormente añadió la escuela ágil.
-
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
Modelo TMMI:- Marco para evaluar y mejorar la madurez de los procesos de testing en organizaciones.
- Evolución del TMM (1996).
-
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)
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
Pionera en pruebas ágiles:- Libros "Agile Testing" y "More Agile Testing".
- Integró pruebas exploratorias en equipos ágiles.
-
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.