Ir al contenido principal

Cómo leer la salida de pruebas en PHP

Para entender la salida de las pruebas, primero analicemos cómo funcionan las pruebas en la plataforma.


⚙️ La prueba del código en PHP se realiza mediante el framework PHPUnit, que también está escrito en PHP. La verificación del código se realiza automáticamente al hacer clic en el botón «Comprobar», después de lo cual el programa bajo prueba se carga en la memoria y se llama con diferentes parámetros, mientras las pruebas supervisan que su comportamiento coincida con lo esperado.

Después de esto, en la pestaña «OUTPUT», puedes ver el resultado de la verificación. Y aquí, si hay errores, puede haber dificultades para entender lo que está sucediendo. Aquí es donde la lectura de la salida de las pruebas nos ayudará, siendo nuestro principal aliado en la depuración del código.

Tipos de errores

Nadie escribe código de manera perfecta. Por lo tanto, tarde o temprano te enfrentarás a errores. Comprender el tipo de error te ayudará a entender la raíz del problema.

Condicionalmente, los errores que surgen durante la ejecución del ejercicio se pueden dividir en dos tipos:

  • Errores del intérprete: varios errores y excepciones integrados en PHP.
  • Errores de afirmación (AssertionError): causados por las pruebas. El resultado de la función no coincide con el resultado esperado.

Errores del intérprete

Los errores del intérprete se pueden dividir condicionalmente en dos categorías

  • Errores sintácticos;
  • Errores semánticos.
⛔ Errores sintácticos

Violaciones de la sintaxis y la puntuación del lenguaje. Durante la ejecución, el intérprete de PHP no puede entender cómo leer la expresión incorrecta y genera un error de SyntaxError. Si omites el signo de dólar antes del nombre de la variable, el intérprete mostrará un error.

⛔Errores semánticos

No impiden el inicio del programa, pero el programa no funciona como se espera. En PHP, hay una gran cantidad de errores y excepciones, pero no es necesario conocerlos; en la mayoría de los casos, el significado del error está oculto en sí mismo o en el nombre de la excepción arrojada. Por ejemplo, al referirse a una variable no declarada, se producirá un error de Undefined variable, que literalmente indica que la variable $sum no está definida.

No temas a este tipo de errores: simplemente lee la descripción y comprenderás lo que el intérprete está buscando. Incluso si la descripción no es clara, siempre puedes recurrir a la documentación, donde se detallan los casos en los que se pueden producir ciertos errores.
Es importante entender que estos errores no están relacionados con las pruebas y señalan un problema en el código.

Afirmaciones

Es crucial destacar los errores de afirmaciones. Estos errores ocurren cuando el valor esperado no coincide con el resultado de la función.
Para empezar, veamos cómo se ven las pruebas para los ejercicios:

La función bajo prueba, en este caso sumOfSeries(), se llama con parámetros específicos, y su resultado se compara con un resultado esperado previamente definido. Sin embargo, en el caso de que los valores no coincidan, se produce un error. Examina más detenidamente la salida en la pestaña «OUTPUT» en caso de que las pruebas fallen:

Aquí observamos que la ejecución se detuvo en la prueba titulada testSumOfSeries. Luego se menciona que la comparación entre el resultado esperado, que es el número 6, y el resultado devuelto por la función dio como resultado false. Para que este caso de prueba se considere superado, la comparación debe devolver true.

En la siguiente línea, vemos el resultado real de llamar a sumOfSeries(6, 6), que es igual a 1.

Finalmente, en la última línea se muestra la ruta del archivo de pruebas con la indicación, mediante dos puntos (:), del número de línea donde se detuvo la ejecución.

Después de esto, es necesario determinar específicamente qué causó la discrepancia en los resultados y corregir la razón del mal funcionamiento de la función bajo prueba.

Echemos un vistazo a otro formato de salida de pruebas que podrías encontrar en tus cursos:


Es muy similar al anterior, pero aquí se comparan dos matrices: la esperada y la obtenida al llamar a la función.

  • Con el signo - se indica el resultado esperado.
  • Con el signo + se indica el resultado obtenido, que no se esperaba.
  • Sin ninguna marca, el resultado coincide con el esperado.
    Según la salida anterior, podemos decir que se obtuvo la matriz [1, 1], pero debería haber sido [1, 3].

Depuración de código

A veces, a primera vista, es imposible entender qué está causando el comportamiento incorrecto de la función. En estos casos, la depuración entra en juego: la capacidad de ver el proceso de ejecución del código. Hay varias formas de hacerlo, pero aquí examinaremos la más simple y común: la impresión de depuración.

La impresión de depuración consiste en mostrar en pantalla los valores de variables, llamadas a funciones, mensajes sobre la ejecución de iteraciones de bucles durante la ejecución del programa. Para esto, simplemente agrega una llamada a la función print_r() o var_dump() con el valor que te interesa.

Aunque la salida de estas funciones, a pesar de estar integradas en PHP, a menudo deja mucho que desear. Para obtener una salida bien formateada en todas las prácticas en Códica, se ha incorporado la función dump() de la biblioteca VarDumper. Esta función también acepta como parámetro el valor que deseas mostrar en pantalla.

Veamos cómo funciona. Agreguemos una llamada a la función dump() en el código.

Después de esto, simplemente ejecuta la verificación de las pruebas nuevamente para ver el resultado de nuestra impresión de depuración en la pestaña «OUTPUT»:

Con la ayuda de la impresión de depuración, es más fácil seguir el proceso de ejecución del programa, lo que significa que identificar dónde se ha infiltrado el error se vuelve mucho más sencillo.