-
Aporte: Escribe el primer programa para la máquina analítica de Charles Babbage.
Importancia: Reconoce que los errores pueden originarse en el diseño del programa, no solo en el hardware. -
Aporte: Plantea un modelo de arquitectura que separa datos y programas en memoria.
Importancia: Base de la computación moderna, donde surgen los conceptos de instrucciones almacenadas. -
Aporte: Propone que la persona que prueba el software no debe ser la misma que lo programa.
Importancia: Primer enfoque formal de separación de roles en calidad de software. -
Aporte: Introduce por primera vez la noción de que el cliente debe preparar los casos de prueba.
Importancia: Inicia la visión de que la prueba no es solo técnica, sino también funcional y comunicativa. -
Aporte: Distingue entre depuración (debugging) y prueba (testing).
Importancia: Establece por primera vez que probar no es solo corregir errores, sino verificar la funcionalidad esperada. -
Aporte: Desarrolla pruebas incrementales y pequeños ciclos de verificación.
Importancia: Aplica principios psicológicos y humanos al desarrollo y pruebas de software. -
Aporte: Primer capítulo completamente dedicado a pruebas de software.
Importancia: Se reconoce formalmente el testing como disciplina independiente en la literatura técnica. -
Aporte: Introduce un enfoque disciplinado para las pruebas funcionales.
Importancia: Ayuda a consolidar la visión de las pruebas como parte esencial del ciclo de vida del software. -
Aporte: Presenta una lista de chequeo que incluye prácticas de calidad y aseguramiento. Importancia: Primer intento de formalización de la calidad del software a nivel internacional.
-
Aporte: Aboga por la programación estructurada y destaca que las pruebas no pueden garantizar la ausencia de errores.
Frase célebre: “Las pruebas son eficaces para mostrar presencia de errores, pero inadecuadas para probar su ausencia.”
Importancia: Funda la verificación formal como alternativa o complemento al testing. -
Aporte: Introduce la automatización en el diseño de casos de prueba.
Importancia: Primer paso hacia el uso de herramientas para mejorar la eficiencia de las pruebas. -
Aporte: Enfatiza la dimensión humana en la programación y el testing.
Importancia: El error humano es inevitable; las pruebas son necesarias, pero no suficientes. -
Aporte: Reúne artículos fundamentales del primer simposio sobre pruebas. Importancia: Marca un hito en la formalización de pruebas como disciplina.
-
Aporte: Introduce la figura del probador como adversario y ayudante del programador.
Importancia: Distingue entre programación, depuración y pruebas conceptuales. -
Aporte: Conceptualiza la fiabilidad del software y su vínculo con el error humano.
Importancia: Pionero en proponer métricas de calidad para software. -
Aporte: Mejora sustancial de calidad en IBM usando su técnica.
Importancia: Duplica la productividad y reduce defectos en más del 60%. -
Aporte: Introduce la complejidad ciclomática como métrica clave.
Importancia: Permite controlar la calidad estructural del código. -
Aporte: “El objetivo del probador es hacer que el software falle.” Importancia: Declara el testing como una disciplina destructiva, no confirmativa.
-
Aporte: El oráculo determina si un resultado es correcto.
Importancia: Elemento esencial en el diseño de pruebas efectivas. -
Aporte: Formaliza la terminología actual: caja blanca, caja negra, etc.
Importancia: Primer libro enteramente dedicado al testing como técnica independiente. -
Aporte: Crea el modelo COCOMO y demuestra que el costo de corregir errores crece con el tiempo.
Importancia: Vincula calidad con costo y eficiencia en todo el ciclo de vida del software. -
Aporte: Muestra que la mayoría de los errores provienen de requerimientos (56%) y diseño (27%).
Importancia: Refuerza la necesidad de pruebas tempranas y continuas. -
Aporte: Relaciona cada etapa de desarrollo con su etapa de prueba correspondiente.
Importancia: Modelo clásico para planificación de pruebas por fases. -
Aporte: Sistematiza herramientas automatizadas para pruebas asistidas por computador.
Importancia: Pionera en automatización y certificación de pruebas. -
Aporte: Afirma que el testing es un oficio que se aprende practicando; se enfoca en subsistemas como compiladores y drivers.
Importancia: Pionero del enfoque artesanal y contextual del testing -
Aporte: Presenta una visión práctica y aplicada del testing, adoptando analogías de oficios manuales.
Importancia: El libro se convierte en referencia clave en universidades y cursos profesionales. -
Aporte: Propone un modelo para evaluar cualidades intangibles del software bajo la norma ISO/IEC 9126.
Importancia: Intenta operacionalizar la calidad de producto, relacionando características con métricas. -
Aporte: Introduce patrones adaptables para seleccionar técnicas de prueba según el contexto.
Importancia: Base de la futura metodología Rapid Software Testing (RST) -
Importancia: Plantea la Ley de Linus: “Con suficientes ojos, todos los errores son superficiales”.
Implicación: Vincula la calidad del software con su apertura al escrutinio colectivo. -
Aporte: Fundan la Escuela de Pruebas Dirigidas por el Contexto.
Importancia: Rechazan enfoques rígidos. La prueba se adapta al contexto específico del proyecto -
Aporte: Populariza el Desarrollo Guiado por Pruebas (TDD).
Importancia: Promueve escribir pruebas antes que el código, mejorando diseño y calidad. -
Aporte: Clasifica los enfoques en: analítica, normativa, orientada a calidad y contextual.
Importancia: Establece una taxonomía para comprender distintas formas de ver el testing. -
Aporte: Profundiza el rol de la prueba como investigación, no verificación.
Importancia: Aclara la diferencia entre “probar” y “comprobar” en testing profesional. -
Aporte: Desarrolla el Modelo de Madurez de Pruebas Integrado (TMMi).
Importancia: Provee un estándar de mejora continua en procesos de prueba -
Aporte: Clasifica el grado de autonomía que puede tener un tester, desde “guiado completamente” hasta “exploración libre”.
Importancia: Revaloriza el rol cognitivo del tester como investigador. -
Aporte: Introducen el concepto de crowdtesting, inspirado en el crowdsourcing.
Importancia: Propone probar software en entornos reales con usuarios reales, ampliando la cobertura contextual y de dispositivos. -
Aporte: Diferencia entre “comprobar” (automático) y “probar” (humano, exploratorio).
Importancia: Cambia la perspectiva sobre el rol activo del tester. -
Aporte: Propone la pirámide de automatización de pruebas, estructurada en tres niveles:
Pruebas unitarias (base)
Pruebas de servicios o API (medio)
Pruebas de interfaz gráfica (cima) Importancia: Establece una estrategia eficaz para la automatización. -
Aporte: Integran el testing dentro de la cultura ágil. El capítulo sobre pruebas exploratorias lo escribe junto con Michael Bolton.
Importancia: Considerado uno de los libros fundacionales del agile testing. -
Aporte: Propone un uso creativo de la automatización más allá de regresión: configuración, generación de datos, navegación por flujos. Importancia: Complementa la automatización con pruebas exploratorias manuales para cubrir defectos insidiosos.