Aquellos maravillosos años, cuando nació el Testing

Aunque no lo parezca, o sí, es difícil, y puede que hasta aburrido, hacer una retrospectiva histórica del Testing. O, al menos, y de paso para intentar minimizar lo de aburrido, de los hechos más destacados de la historia del Testing software. Pero el tema, seré raro, me produce curiosidad (y de hecho, alguna cosa te he dejado en algún post anterior).
Prometo intentar no darte “la brasa” con este post y que te resulte, como a mí, interesante algunos de los siguientes datos.
La primera referencia “textual” que tenemos (o conocemos) del Testing en un libro es de 1957, el libro “Digital Computer Programming”, de D. D. McCracken, que algunos dicen que es el primer libro de texto sobre programación, y decía:

In these cases it is highly desirable that the “customer” prepare the check case, largely because logical errors and misunderstandings between the programmer and customer may be pointed out by such procedure. If the customer is to prepare the test solution is best for him to start well in advance of actual checkout, since for any sizable problem it will take several days or weeks to and calculate the test.

En estos casos es muy deseable que el “cliente” prepare el caso de verificación, en gran parte debido a los errores lógicos y malentendidos entre el programador y el cliente pueden ser señalados por dicho procedimiento. Si el cliente prepara la solución a la prueba es mejor para él para iniciar con suficiente antelación la comprobación, ya que para cualquier problema considerable le llevará varios días o semanas.

En su día, ya te cité el anterior (y otros casos curiosos), cuando hicimos un repaso histórico del de dónde viene el ATDD.
Además del anterior, siempre sale como hecho destacado de los comienzos del Testing software el mítico proyecto Mercury.
El proyecto Mercury de la NASA, del 1958 al 1963, es mítico porque fue, según la propia NASA, el “primer programa para poner al hombre en el espacio”. Y, aparte de lo anterior, ya en lo nuestro, es mítico porque fue el primero (hubo un proyecto anterior, el del X-15, pero no tenía tanto de software), al menos datado, en usar un ciclo de vida iterativo e incremental (predecesor del que hoy consideraríamos ágil).
Y, volviendo al testing, es mítico porque allí trabajó el “famoso” Gerald M. Weinberg, entre otros, famoso por el libro “The Psychology of Computer Programming” (del que la agilidad de hoy ha tomado ciertas cosas) y que posteriormente escribiría el considerado primer libro que tenía “un capítulo” de Testing software (a falta de otra referencia anterior, si alguien la tiene se agradece que la comparta),
Aquel libro era el “Computer Programming Fundamentals” de 1961, de Gerald Weinberg y Herbert Leeds (luego hubo una nueva versión en el 66, en la página del propio Weinberg hay información interesante de ello), y en aquel libro hay párrafos como este:

“It is, of course, difficult to have the machine check how well the program matches the intent of the programmer without giving a great deal of information about that intent”

Weinberg hablaba ahí de la división entre el Testing humano y el automatizado, y hay quien hasta dice que esta podría ser la primera referencia del que hoy se conoce como Testing exploratorio.
El que parece que es el primer artículo de Testing software (realmente era un whitepaper) es el “Evaluation of the Functional Testing of Control Programs” (1967) de IBM.
Luego vendrían menciones al tema en la famosa primera conferencia sobre “ingeniería software” de la OTAN (1968) y el famoso artículo del GO TO, y sus problemas “de Testeo”, de Dijkstra. Y en el 1969, de nuevo Dijkstra, en la segunda conferencia de la OTAN, lanza su famosa cita del… “Testing shows the presence, not the absence of bugs“.
Otro artículo interesante de citar es el “Fault Diagnosis of Computer Programs” (1971), de Richard Lipton, ya que es el primero que lanza las ideas de los Test que hoy conocemos como “Mutantes”.
Pero el primer libro, enterito de Testing, no llega hasta 1972 o 1973, según lo entiendas (ahora te explico), hablo del “Program Test Methods”. Realmente, el “libro”, que se publica en el 73, era una recopilación de artículos de una conferencia, el Chapel Hill Symposium organizado por la Universidad de Carolina del Norte en 1972, y que edita un tal William Hetzel. La crítica hoy a aquel libro es que… estaba muy centrado el “métodos” de testing, lo que algunos llaman el inicio de la época del “Testing formal”.
Y fue Cem Kaner, en su libro Testing Computer Software, de 1988, quien acuñó el término “pruebas exploratorias”, según él, lo opuesto al Testing basado en Scripts, y que antes se había definido de múltiples y curiosas maneras:. «pruebas rápidas», «incursiones guerrilleras», etc.
Bueno, todo esto después de horas de leer cosas. Y queriendo centrarme en los hechos menos conocidos, los más antiguos. Al empezar el post no creí que se me extendería tanto y he preferido centrarlo ahí, en los comienzos. Y así no entrar en los Cucumber y otros.
Referencias buenas son esta web y estas dos páginas (1 y 2) de James Bach. En cualquier caso, he tenido que leer de aquí y allá y sintetizar de un sitio y otro. Si ves que tienes algún dato que me falta (dato significativo, obviamente, solo me he quedado con lo que a mí me parece más importante) sería bueno que lo dijeras y añadirlo.

jgarzas

Ph.D. en informática, Postdoctorado en la Carnegie Mellon (EE.UU) e Ingeniero en Informática.

Primera vez que me tocó hacer una gestión Ágil en una empresa... año 2001. Desde entonces he trabajado en, o para, más de 90. Y he formado a más de 2000 alumnos.

También soy profe de la Universidad Rey Juan Carlos.

Dejar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *