Diferencia Entre Error, Bug, y Falla
Es muy frecuente entre los profesionistas en tecnología utilizar los términos error, bug, y falla para describir un resultado inesperado durante la ejecución de un programa o para referirse a la causa que genera dicho resultado. Sin embargo, error, bug, y falla no son lo mismo. Comprender las diferencias entre estos conceptos y usarlos adecuadamente simplifica y estandariza la comunicación.
Conceptos
El glosario de la Junta Internacional de Aptitudes de Pruebas de Software (ISTQB, por sus siglas en inglés) define los términos de la siguiente manera:
Error | Acción humana que produce un resultado incorrecto. |
Bug | Imperfección en un componente o sistema que puede causar que el componente o sistema falle en desempeñar las funciones requeridas. |
Falla | Desviación del componente o del sistema respecto de prestación, servicio o resultado esperado. |
La ISTQB señala que las palabras defecto, problema y falta son sinónimos de bug y que es preferible el uso de la palabra defecto sobre los otros términos a pesar de que el término bug es más utilizado.
De manera similar, la palabra equivocación es sinónimo de error, y error es el término preferido.
El siguiente enunciado es de utilidad para entender, tanto la diferencia como la relación, que existe entre los términos error, defecto y falla.
Una persona comete un error e introduce un defecto en el código del programa. Si durante la ejecución del programa, se ejecuta la línea de código con el defecto, el programa funciona de manera inesperada, es decir, el defecto causa una falla.
Ejemplo
Un programador tiene la tarea de implementar un programa que controle el acceso a un sitio web permitiendo el acceso sólo a usuarios de 18 o más años de edad.
El programa solicita al usuario introducir su edad y si ésta es de 18 o más, le da la bienvenida al sitio web, si no, se le niega el acceso por ser menor de edad.
El programador implementa el software y decide probarlo utilizando los siguientes casos de prueba:
Edad [Años] | Resultado Esperado [Mensaje Desplegado] |
17 | Es menor de edad, no tiene acceso |
18 | Bienvenido a nuestro sitio web |
19 | Bienvenido a nuestro sitio web |
Los resultados de sus pruebas se muestran a continuación:
Como se observa en los resultados, el programa autoriza correctamente el acceso al sitio web, cuando se introduce la edad de 18 años. Sin embargo falla en los otros dos casos. En el caso en el que la edad es de 17 años el programa debió de negar el acceso al sitio pero el acceso fue autorizado y en el caso en el que la edad es de 19 años el programa debió permitir el acceso pero lo negó.
El programador inspecciona el código y detecta un defecto en la línea 3. La condición utiliza el operador menor o igual que (<=), es decir, verifica que la edad sea de 18 años o menos. En lugar de utilizar el operador <=, debería utilizar el operador mayor o igual que (>=) para que la condición verifique que la edad sea de 18 años o más. El programador introdujo por error el defecto en la condición.
1: function autorizarAcceso() { 2: var edad = prompt("Introducir edad:"); 3: if(edad <= 18) { 4: alert("Bienvenido a nuestro sitio web."); 5: } else { 6: alert("Es menor de edad, no tiene acceso."); 7: } 8:} |
Una vez que el programador identificó y corrigió el defecto que causó la falla, el programador prueba nuevamente el programa utilizando los mismos casos de prueba y verifica que funciona adecuadamente.
Cabe destacar que los defectos no son la única fuente de fallas en el software, otros factores como cambios inesperados en librerías o sistemas de los que se depende también resultan en fallas.
Resúmen
Los términos error, defecto, y falla no son lo mismo y utilizarlos adecuadamente nos ayuda a tener una comunicación eficaz.