Cómo hacer una prueba de escritorio


En este escrito te explico como hacer una prueba de escritorio detallada para un algoritmo. Para explicártela tomaré como ejemplo  el algoritmo de ordenamiento de arreglos por selección. Y con él, paso a paso, y con muchas ilustraciones, construyo la prueba de escritorio.

Algo que he observado en mis muchos años de profesor universitario es que las pruebas de escritorio casi no se enseñan, y si se enseñan, es en su versión más reducida. Las pruebas de escritorio son vitales en la formación de cualquier programador y son muchas las razones para afirmar esto, pero sólo mencionaré algunas que considero muy importantes. La primera razón es que la pruebas de escritorio son una estrategia para buscar errores en un programa, sólo con esta razón debería ser suficiente para enseñarlas. La segunda razón, es que con una prueba de escritorio se puede entender como funciona un algoritmo, otra razón que por si sola justificaría enseñar las pruebas de escritorio. Y finalmente, la razón que considero más importante; las pruebas de escritorio desarrollan habilidades cognitivas que son esenciales para toda persona que programe.

Pero volviendo al tema, como te decía en el primer párrafo me basaré en el algoritmo de selección que se usa para ordenar arreglos. Este algoritmo ya lo había explicado en ¿Cómo ordenar un arreglo por selección?. Si no lo has leído este es un buen momento, y si ya lo hiciste y no has entendido mucho pues con la prueba de escritorio lo puedes entender; y si ya eres un experto en selección entenderás muy bien este escrito. De todos modos pongo el algoritmo a continuación para que lo recuerdes.

Algoritmo de ordenamiento por selección

Algoritmo en java de un ordenamiento por selección

Una prueba de escritorio es una tabla en la que se ponen las sentencias y variables del algoritmo. En este orden de ideas lo primero que se construye de esa tabla es su encabezado, el cual te muestro a continuación.

Encabezado de la prueba de escritorio

Encabezado de la prueba de escritorio

Como puedes ver la primera columna es la de sentencias del algoritmo, las siguientes son las variables de éste. Además, si te fijas hay varias columnas para el arreglo y cada uno numerada.

Ahora para hacer una prueba de escritorio necesitamos unos datos de prueba, para la nuestra vamos a usar un arreglo de cuatro elementos para que no sea muy largo. Estos datos de prueba se ponen en la inicialización como se ve a continuación.

Inicilalización en la prueba de escritorio

Como puedes ver la longitud del arreglo es cuatro y además están las valores iniciales del arreglo.

Ahora si, entremos en materia comenzando con el algoritmo. La primera sentencia que se ejecuta es la siguiente.

Primera sentencia del algoritmo

Primera sentencia del algoritmo

Se inicializa la variable i del ciclo. Esto agrega una fila en nuestra prueba de escritorio de la siguiente forma.

Inicialización de la i

Puedes ver que la sentencia se anota en la columna de sentencia y el resultado de esta sentencia, el poner el valor de la variable i a cero, se escribe en la respectiva columna (la de la i).

La siguiente sentencia, la validación de la condición del ciclo,  se ve en la ilustración.

Validación de la condición del ciclo externo

Validación de la condición del ciclo externo

Esto agrega una nueva fila a la prueba de escritorio de la siguiente forma.

Validación del ciclo exterior

Mira en la última fila, en la columna sentencia, pongo a continuación el detalle.

Detalle de la validación del cicloComo vez, se copia la sentencia y se evalúa paso por paso, hasta que se obtiene un valor. En este caso éste valor es true lo que quiere decir que el ciclo continua, si fuera false el ciclo terminaría.

Como es verdadero se ejecuta la primera sentencia del ciclo, que es.

Se selecciona como menor el primer elemento

Se selecciona como menor el primer elemento

En la prueba de escritorio lo anterior se anota de la siguiente forma.

Se selecciona el menor como el primer elemento

Se selecciona el menor como el primer elemento

Mira como la sentencia es evaluada paso a paso y cuando ya se tiene un resultado se pone éste en la columna respectiva. Pongo el detalle a continuación.

Evaluación de la sentencia de inicializar el menor

Secuencia de evaluación de la sentencia de inicialización del menor

Ahora el algoritmo continua de la siguiente manera.

Se anota cual es la posición del elemento menor

Se anota cual es la posición del elemento menor

Se anota cual es la posición en el arreglo del menor elemento. Esto en la prueba de escritorio se escribe de la siguiente manera.

Se anota cual es la posición del elemento menor

Se anota cual es la posición del elemento menor

En todas las asignaciones se evalúa primero lo que está a la derecha del igual y cuando se tiene una constante a ese lado, esa constante se copia en la columna de la variable que aparece a la izquierda del igual.

El algoritmo sigue así.

Inicializa la variable j del ciclo interior

Inicializa la variable j del ciclo interior

Aquí se inicializa la variable j del ciclo interior con una posición más de la variable i. Lo cual en la prueba de escritorio se escribe de la siguiente manera.

Inicialización de la variable j del ciclo interior

Inicialización de la variable j del ciclo interior

También aquí la sentencia se evalúa por pasos y modifica la columna de la variable j.

En este momento espero que ya tengas la idea, pero para estar seguro te voy a mostrar a continuación toda la prueba de escritorio.

Prueba de escritorio del algoritmo de selección para n = 4

Prueba de escritorio del algoritmo de selección para n = 4

Si está muy pequeña puedes hacer clic sobre ella para verla más grande y si estás en un navegador como Firefox vuelve y le haces clic para hacer zoom. O mejor, mira el PDF de la prueba de escritorio que te anexo a continuación: Prueba de escritorio del Ordenamiento por Seleccion, para n=04 (PDF). Con este último puedes agrandarlo todo lo que quieras.

Finalmente he hecho una prueba de escritorio mucho más larga para el mismo algoritmo, para n = 10, de hecho con los mismos datos del artículo ¿Cómo ordenar un arreglo por selección?. Esta prueba la adjunto a continuación: Prueba de Escritorio para el algoritmo de ordenamiento por selección para n=10.

Para ser un experto en pruebas de escritorio solo hay un camino: Practicar y volver a practicar y volver al practicar y … . Si practicas muchos te puedo garantizar que tendrás una de las cosas necesarias para dominar la programación.

 

Comments
5 Responses to “Cómo hacer una prueba de escritorio”
  1. José Ebert Bonilla dice:

    Hola Alejandro: Me parece una muy buena explicación de lo que es una prueba de escritorio. Tema que es necesario incentivarlo en los estudiantes de programación.

  2. igortamara dice:

    Con python se pueden hacer pruebas chéveres como esta http://pythontutor.com/visualize.html#mode=edit

    Creo que las pruebas de escritorio ayudan a apreciar y entender el proceso subyacente.

    chévere la producción escrita.

  3. Luis dice:

    Hola aztlek, ante todo darte las gracias por el magnífico post. Estoy aprendiendo a programar de manera autodidacta (de momento), y esto puede ayudarme muchísimo a entender los algoritmos y flujos de datos, entre otras cosas.

    Pero verás, tengo una duda que no consigo resolver (quizá es que hago mal el flujo o que aún no entiendo los bucles bien), pues no comprendo por qué en tu Prueba de Escritorio, en la línea 11 (J++), el bucle FOR que creas para la variable J, no vuelve a evaluar la condición «J<n" hasta que dicha condición es false (4<4); Al menos, no vuelve a aparecer escrito en la Prueba hasta dicho momento.

    ¿No se supone que se debe evaluar la condición "J<n" cada vez que la variable J cambia? Me tiene muy descolocado esto. ¿Cómo sabe el programa entonces que debe volver a ejecutar el contenido del bucle o saltarlo?

    Espero haberme explicado bien. Un saludo.

  4. felipe dice:

    creo que tiene fallas la prueba de escritorio porq en la linea 8 dice array en la posicion 0 no deberia ser la posicion 1 para que escoja el elemento 45 gracias…

Deja un comentario