¿Cuál es la diferencia entre un defecto y un error?
¿Cuál es la diferencia entre un defecto y un error?
Respuestas:
Un error es el resultado de un error de codificación.
Un defecto es una desviación de los requisitos.
Es decir: un defecto no significa necesariamente que haya un error en el código , podría ser una función que no se implementó pero se definió en los requisitos del software.
Desde la página de Wikipedia sobre pruebas de software :
No todos los defectos de software son causados por errores de codificación. Una fuente común de defectos costosos es causada por lagunas de requisitos, por ejemplo, requisitos no reconocidos, que resultan en errores de omisión por parte del diseñador del programa. [14] Una fuente común de lagunas en los requisitos son los requisitos no funcionales, como la capacidad de prueba, la escalabilidad, la mantenibilidad, la usabilidad, el rendimiento y la seguridad.
Citando a Ilene Burnstein del libro Practical Software Testing (recomendado) que parte de la definición en la "Colección de Estándares IEEE para Ingeniería de Software" (1994) y "Glosario Estándar IEEE de Terminología de Ingeniería de Software" (estándar 610.12, 1990):
Un error es un error, un malentendido o un malentendido por parte de un desarrollador de software.
En la categoría de desarrollador incluimos ingenieros de software, programadores, analistas y probadores. Por ejemplo, un desarrollador puede malinterpretar una notación de diseño o un programador puede escribir un nombre de variable incorrectamente.
Se introduce una falla (defecto) en el software como resultado de un error. Es una anomalía en el software que puede hacer que se comporte incorrectamente y no de acuerdo con sus especificaciones.
Las fallas o defectos a veces se denominan "errores". El uso del último término trivializa el impacto que tienen las fallas en la calidad del software. El uso del término "defecto" también se asocia con artefactos de software, como requisitos y documentos de diseño. Los defectos que ocurren en estos artefactos también son causados por errores y generalmente se detectan en el proceso de revisión.
Una falla es la incapacidad de un sistema o componente de software para realizar sus funciones requeridas dentro de los requisitos de rendimiento especificados.
Durante la ejecución de un componente o sistema de software, un probador, desarrollador o usuario observa que no produce los resultados esperados. En algunos casos, un tipo particular de mal comportamiento indica que hay cierto tipo de falla presente. Podemos decir que el tipo de mal comportamiento es un síntoma de la falla. Un desarrollador / probador experimentado tendrá una base de conocimiento de fallas / síntomas / casos de fallas (modelos de fallas como se describe en el Capítulo 3) almacenados en la memoria. El comportamiento incorrecto puede incluir la producción de valores incorrectos para las variables de salida, una respuesta incorrecta por parte de un dispositivo o una imagen incorrecta en una pantalla. Durante el desarrollo, los probadores suelen observar las fallas, y los desarrolladores localizan y reparan las fallas.
Puedes leer el capítulo completo en Google Books, aquí .
Hay algunos términos diferentes relacionados con errores de software. Extracto de un curso que tomé:
Error : acción u omisión humana que resulta en una falla.
Falla : la falla es un defecto del software (paso incorrecto, proceso o definición de datos) que causa una falla.
Error : igual que la falla.
Falla : la incapacidad de un software para realizar sus funciones requeridas dentro de los requisitos de rendimiento especificados.
De acuerdo con esto, no hay diferencia entre un defecto y un error. Sin embargo, algunas personas argumentan que el error es un error que se encuentra antes de lanzar el software, mientras que el defecto lo encuentra el cliente.
No pude resistirme a publicar el famoso "primer caso real de error encontrado".
Oh querido.
En los viejos tiempos, el funcionamiento defectuoso de una computadora fue causado por todo tipo de cosas, incluidas las ratas que masticaban el cableado y los errores reales (bichos) se metían en las obras.
El término BUG se ha pegado como un término que significa que algo no funciona como se esperaba.
ERROR debe considerarse como un término de jerga que significa un defecto.
Un defecto es un término técnicamente correcto que significa que la cosa no hace lo que debería.
Siempre que sea posible, usar DEFECTO en lugar de ERROR conlleva una connotación de que reconocemos nuestros fallos (nuestros defectos, nuestra falta de comprensión de los requisitos del usuario o las cosas que pasamos por alto en la implementación) en lugar de disfrazarlo como el "error más trivial" ".
Use DEFECTO.
Intenta no usar el término ERROR. Es tonto, irrelevante, histórico y trivializante.
Del Glosario Estándar IEEE de Terminología de Ingeniería de Software, que se cita en el Cuerpo de Conocimientos de Ingeniería de Software KA para Pruebas de Software y Calidad de Software:
error. Ver: error; culpa.
error. (1) La diferencia entre un valor o condición calculada, observada o medida y el valor o condición verdadera, especificada o teóricamente correcta. Por ejemplo, una diferencia de 30 metros entre un resultado calculado y el resultado correcto. (2) Un paso, proceso o definición de datos incorrectos. Por ejemplo, una instrucción incorrecta en un programa de computadora. (3) Un resultado incorrecto. Por ejemplo, un resultado calculado de 12 cuando el resultado correcto es 10. (4) Una acción humana que produce un resultado incorrecto. Por ejemplo, una acción incorrecta por parte de un programador u operador. Nota: Si bien las cuatro definiciones se usan comúnmente, una distinción asigna la definición 1 a la palabra "error", la definición 2 a la palabra "falla", la definición 3 a la palabra "falla" y la definición 4 a la palabra "error". Ver a2so: error dinámico; error fatal; error indígena; error semántico; error sintáctico; error estático; error transitorio
fracaso. La incapacidad de un sistema o componente para realizar sus funciones requeridas dentro de los requisitos de rendimiento especificados. Nota: La disciplina de tolerancia a fallas distingue entre una acción humana (un error), su manifestación (una falla de hardware o software), el resultado de la falla (una falla) y la cantidad en la cual el resultado es incorrecto (el error). Ver también: accidente; falla dependiente; excepción; modo de fallo; tasa de fracaso; fracaso duro falla incipiente; falla independiente; falla aleatoria; falla suave; falla atascada
culpa. (1) Un defecto en un dispositivo o componente de hardware; por ejemplo, un cortocircuito o un cable roto. (2) Un paso, proceso o definición de datos incorrectos en un programa de computadora. Nota: Esta definición es utilizada principalmente por la disciplina de tolerancia a fallas. En el uso común, los términos "error" y "error" se utilizan para expresar este significado. Ver también: falla sensible a los datos; falla sensible al programa; fallas equivalentes; enmascaramiento de fallas; falla intermitente
Creo que la definición de fracaso es la más relevante. Todo comienza con un error, ya sea en los requisitos, el diseño, la implementación o el caso / procedimiento de prueba. Si este error se manifiesta en el software, se convierte en una falla. Una falla es causada por la existencia de una o más fallas en el software.
Sin embargo, no estoy interesado en la definición formal de error. Prefiero la definición proporcionada por dukeofgaming en su respuesta , sin embargo, la de esta respuesta es la definición estándar de error IEEE.
La respuesta de Dan McGrath fue correcta.
Tal vez un ejemplo lo aclararía.
Ejemplo: el cliente quería que el formulario web pudiera guardar y cerrar la ventana.
Escenario n. ° 1: el formulario web tiene un botón para guardar y otro botón para cerrar. Resultado: Defecto, porque el cliente quería que el botón 1 guardara y cerrara la ventana. Desarrollador mal entendido y creado por separado. Debido a que ambos botones cumplieron sus requisitos, no es un error, sino un defecto porque no cumplió con los requisitos del cliente.
Escenario # 2: el formulario web tiene un botón para guardar y cerrar, pero solo guarda pero no se cierra. Resultado: error. Porque el botón no funciona según lo requerido / esperado. El desarrollador sabe que se supone que produce ese resultado, pero finalmente no lo hizo. (quizás error de codificación)
No estoy seguro si esto lo aclara.
p / s: desde el punto de vista del desarrollador (lo era antes), tanto los defectos como los errores son igual de importantes. Aún lo arreglaremos.
Incluso nos encontramos con anomalías extrañas, que clasificamos bajo errores e intentamos continuamente descubrir cuál es la causa y cómo solucionarlo. Llamarlo errores no lo hace trivial en comparación con los defectos.
La diferencia es que el término "error" suena mágico. Como si un programa pudiera tener errores aleatoriamente después de que hayas terminado de programar. Si tiene errores aleatorios, significa que no cumplió con las especificaciones y su programa está en un error.
Un defecto significa un error donde el programa no se ajusta a las especificaciones. Esto es más grave y básicamente dice que cualquier error es un gran problema con el programa y esto significa que el programa no está en condiciones de ser lanzado.
La diferencia está en la actitud de los programadores que usan los términos. Hay millones de programas que se lanzan con errores y las personas están de acuerdo con eso porque aceptan por alguna razón que un error es mágico y aleatorio y que cada programa contiene al menos un error. Sin embargo, un programador que usa el término "defecto" puede sentirse incómodo al lanzar un programa con un defecto porque el término implica una mayor severidad.
Las implicaciones de preferir un término sobre el otro nos afectan a diario.
Según la confiabilidad: conceptos básicos y terminología :
Se produce un fallo del sistema cuando el servicio entregado se desvía del cumplimiento de la función del sistema, siendo este último para lo que está destinado el sistema. Un error es esa parte del estado del sistema que puede conducir a una falla posterior: un error que afecta al servicio es una indicación de que ocurre o ha ocurrido una falla. La causa adjudicada o hipotética de un error es una falla .
Entiendo el defecto como solo otro nombre de culpa.
El error es confuso y puede representar una falla o una falla dependiendo del contexto.
Tenga en cuenta que no se menciona la especificación: incluso una especificación puede ser defectuosa.
Aquí hay uno que hice anteriormente para mi empleador Q-LEAP basado en el vocabulario ISTQB y también verifiqué el vocabulario IEEE. Disfrutar.
¿Error y defecto? Lo mismo a pesar de que uno puede tener una discusión interminable sobre esto. Realmente tenemos otras cosas de qué preocuparnos, la vida ya es lo suficientemente complicada, etc.
Un ejemplo de cómo se usa el término en la naturaleza, de "Cómo Google prueba el software" p. 113. Abra un artículo de "Software IEEE" y se utiliza de la misma manera. De hecho, rara vez se encuentra la palabra "defecto" en la vida real.
Vida de un insecto
Los errores y los informes de errores son el artefacto que todo probador entiende. Encontrar errores, solucionar errores, corregir errores y retroceder errores son el corazón y el flujo de trabajo para la calidad del software. Esta es la parte de las pruebas que es la más convencional en Google, pero todavía hay algunas desviaciones interesantes de la norma. Para esta sección, ignoramos los errores que se archivan para rastrear elementos de trabajo y usamos el término para identificar el código roto real. Como tal, los errores a menudo representan el flujo de trabajo hora a hora y día a día para los equipos de ingeniería.
Nace un error. Los errores son encontrados y archivados por todos en Google. Los gerentes de producto presentan errores cuando detectan problemas en las primeras compilaciones que difieren de sus especificaciones / ideas. Los desarrolladores presentan errores cuando se dan cuenta de que accidentalmente registraron un problema, o encuentran un problema en otra parte de la base de código, o al alimentar los productos de Google. Los errores también provienen del campo, de probadores de origen público, pruebas de proveedores externos, y los Gerentes de la Comunidad los monitorean y monitorean los Grupos de Google específicos del producto. Muchas versiones internas de las aplicaciones también tienen formas rápidas de un clic para archivar errores, como los mapas de Google. Y, a veces, los programas de software crean errores a través de una API.
Fuera del error específico / tarea / ticket / defecto / problema / cualquier instancia del sistema de seguimiento, estas palabras no tienen ningún significado exacto y, por lo tanto, discutir la diferencia entre ellas no tiene sentido. Cuando esté estableciendo su flujo de trabajo, debe resolver la terminología y proporcionar descripciones.
En mi entorno actual, un "defecto" es cualquier elemento en Jira. Parece que Jira usa el término "problema". Es posible que lo hayamos heredado de algún sistema anterior. "Error" es un tipo de problema cuando algo no funciona como se esperaba y se describe en la documentación. "Solicitud de características" cuando algo funciona como se esperaba pero se desea mejorar (puede ser obvio e importante, pero si se describe el comportamiento actual, sigue siendo una solicitud de características). Hay más tipos, pero esos 2 son utilizados por personas externas al equipo de desarrollo para pedirle algo.
Si está eligiendo nombres para los tipos de problemas, "error" y "defecto" suenan similares a mí. La diferencia entre ellos es estilística. Como el inglés no es mi lengua materna, realmente no puedo ver mucho y no estoy seguro de si lo que veo es correcto.