Diferencia entre Probar y Depurar
La relación entre probar y depurar es tan estrecha que frecuentemente estos términos se utilizan como sinónimos, sin embargo, no lo son. En este artículo primero presentamos las definiciones de probar y depurar y posteriormente exploramos la relación que existe entre las fallas, las pruebas y el proceso de depuración.
Con base en el glosario de la Junta Internacional de Aptitudes de Pruebas de Software (ISTQB, por sus siglas en inglés) podemos definir los términos de la siguiente manera:
Es preferible utilizar los términos formales probar y depurar en lugar de los anglicismos testear y debuggear respectivamente.
Como muestran las definiciones anteriores los propósitos de probar y depurar son diferentes. Mientras los propósitos de probar son evaluar si el producto cumple con sus requisitos, es apto para su propósito y detectar defectos, los propósitos de depurar son comprender las causas de las fallas y reparar los defectos.
Relación entre fallas, pruebas y proceso de depuración
Una falla tiene lugar cuando durante la ejecución del software, en un escenario determinado, existe una desviación del comportamiento esperado del sistema.
Cuando una falla ocurre, ésta generalmente se reporta al equipo de desarrollo y los programadores inician el proceso de depuración con el fin de comprender la causa de la falla y de ser necesario reparar el defecto que la ocasiona.
Si la falla se presenta durante la ejecución de un escenario definido con antelación y con claridad, por ejemplo, como parte de una prueba, la reproducción y el análisis de la falla generalmente es sencillo. Sin embargo, si la falla se presenta durante la ejecución de un escenario que queda definido sólo por las condiciones del sistema en el momento en el que ocurre la falla, por ejemplo, cuando un usuario experimenta una falla al utilizar una función del software de una manera particular, la reproducción y el análisis de la falla generalmente es complejo.
De manera general el proceso de depuración consiste en los siguientes pasos:
- Analizar la falla
- Determinar si existe un defecto
- Reparar el defecto
La figura 2 ejemplifica las relaciones entre la ejecución de un escenario, la falla y el proceso de depuración.
En este ejemplo se considera que el escenario está definido en un caso de prueba, es decir, cada guión dentro de la caja titulada “Ejecución de un escenario” corresponde a una ejecución del caso de prueba.
Los guiones verdes representan una ejecución del caso de prueba en la que no ocurrió ninguna falla. El guión rojo simboliza una ejecución en la que la ejecución del caso de prueba falló y es en ese momento en el que se inicia el proceso de depuración.
Analizar la falla
Analizar la falla consiste en comprender con claridad el escenario que detona la falla con la intención de poder reproducirlo repetidamente, representado por los guiones amarillos en la figura, brindando al programador la posibilidad de utilizar métodos para probar diferentes hipótesis que le permitan determinar la causa de la falla.
Determinar si existe un defecto
No todas las fallas se deben a defectos, algunas fallas ocurren debido a factores externos fuera de nuestro control, por ejemplo, fallas debidas a que alguna dependencia del sistema no está disponible. En esos casos es probable que no haya ningún defecto que reparar. Sin embargo, si el programador determina que existe un defecto, entonces procede a reparar el defecto.
Reparar el defecto
En la mayoría de los casos es responsabilidad del programador determinar la fuente del defecto y realizar las actividades necesarias para repararlo. Cabe destacar que no todas las fallas se deben a defectos en el producto de software, algunas fallas tienen lugar debido a defectos en otros artefactos relacionados como son: requisitos, casos de prueba, o documentación entre otros.
Una vez que se completa la reparación del defecto, el proceso de depuración concluye.
Para el ejemplo mostrado en la figura 2 suponemos que sí existe un defecto y que éste se encuentra en el producto de software y el programador lo repara. El programador ejecuta el caso de prueba para verificar que su reparación fue exitosa y con esto concluye el proceso de depuración.
Como se aprecia en el ejemplo, el poder reproducir el escenario que detonó la falla, es decir la prueba, repetidamente es fundamental para el proceso de depuración ya que habilita al programador para probar diversas hipótesis, y al final permite probar que la reparación fue exitosa.
Conclusión
Los términos probar y depurar se refieren a actividades con propósitos diferentes. Mientras los propósitos de probar son evaluar si el producto cumple con sus requisitos, es apto para su propósito y detectar defectos, los propósitos de depurar son comprender las causas de las fallas y reparar los defectos.
Durante la depuración se ejecutan pruebas de manera iterativa con el fin de explorar diferentes hipótesis que permitan determinar la causa de la falla. Si la causa de la falla se debe a un defecto, el defecto se repara. Para confirmar que la reparación fue exitosa se ejecuta el mismo escenario en el que ocurrió la falla originalmente y se comprueba que ya no ocurra.