¿Diferencia entre un defecto y un error en las pruebas?

35

¿Cuál es la diferencia entre un defecto y un error?

maz3tt
fuente
2
Lea testingstandards.co.uk/bs_7925-1_online.htm para obtener más información
StuperUser
1
Hay errores que en realidad dicen que falta algo, lo que significa que son solicitudes de funciones, no errores.
m3th0dman
La respuesta depende del propósito por qué preguntas.
max630
Busque la etimología de la palabra defecto. De = no, un. Facere = hacer. Por lo tanto, no hace (como se esperaba), no realiza, está roto, kaput. Mientras que error significa "algo en proceso que impide el rendimiento". Al final del día, tendrás que arreglar algo, por lo que todo es académico. He votado para cerrar, ¿no tienes algunos errores que corregir?
Martin Maat

Respuestas:

59
  • 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.

Dan McGrath
fuente
15
Ambas son "desviaciones de los requisitos" como yo lo veo.
Martin Wickman
2
Un defecto no tiene que ser un error. Además, un error no tiene que significar que no se cumplió un requisito y, por lo tanto, no es 'una desviación del requisito'
Dan McGrath
55
Parece que te estás perdiendo el punto @ Martin. Sí, un error puede ser un defecto. Sí, un defecto puede ser un error. Pero eso no es necesariamente siempre cierto. ¡Solo porque haya cierta superposición, no significa que sean idénticos! Diagrama de Venn de errores y defectos -> (())
Dan McGrath
8
@Dan McGrath: básicamente lo que hiciste aquí es tu propia definición de error. Pero en general no hay ningún significado definido, ¡es solo una jerga de ingeniería!
Marzo
3
@DanMcGrath: su diagrama de Venn es inútil. Podría significar ({}) o ({)} . Supongo que te referías al segundo.
Brian
21

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):

Error

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.

Fallos (defectos)

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.

Fallas

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í .

dukeofgaming
fuente
12

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".

texto alternativo

Tamás Szelei
fuente
Por último, alguien que ha leído: testingstandards.co.uk/bs_7925-1_online.htm
StuperUser
No es de donde lo obtuve, pero pueden tener una fuente común (o esta podría ser la fuente).
Tamás Szelei
Sí, hace muchos, muchos años pasé un tiempo tratando de arreglar un error. Tuve un parpadeo molesto en una celda de la pantalla y no tenía sentido. Finalmente se fue volando. (Esto era en la era del texto en blanco en una pantalla en negro, el punto en cuestión estaba lo suficientemente a la derecha para estar siempre en negro mientras estaba editando, por lo que solo lo noté cuando el programa puso algo de blanco detrás).
Loren Pechtel
7

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.

rápidamente_ahora
fuente
2
¿Por qué querría eliminar del uso un término técnico bien entendido? Lo siento ... sí, BUG es histórico, pero si crees que los programadores consideran que los errores (genéricamente en lugar de específicos) son triviales solo porque se llaman errores o el término es irrelevante debido a sus orígenes, entonces estoy Me temo que convertirme en un gruñón de mediana edad está totalmente justificado. Ah, y como señala @Dan, los errores son defectos, pero los defectos no son necesariamente errores, lo que sugiere que el término tiene valor.
Murph
3
@Murph, un "error" es un eufemismo para un error de programación. Inconscientemente, esto se refiere a una especie de gremlin sobre el cual el desarrollador no tiene control. Esto no es correcto, es un error y reconocer esto es un paso hacia un comportamiento más profesional. (Imho, por supuesto :-))
rsp
1
Erm, claramente no estoy de acuerdo (-: sé exactamente quién es responsable de los errores - codificación y errores lógicos - que tengo en mi código. (También puedo identificar fallas en el código de otras personas). Todos los programadores que conozco tienen claro lo que significa el término - que ellos (así algún programador) y no algún tipo de Gremlin cometido un error.
Murph
2
Al tratar con sus clientes, puede llamar a estas cosas errores o defectos. Bugs es jerga. Defectos es un reconocimiento, fuera de la jerga, de que no es como debería ser. "Defectos" es un término que es, y fomenta, una comunicación clara, tanto fuera de la fraternidad de programación como dentro. (También no estoy de acuerdo en que haya una diferencia entre un error y un defecto)
Rápidamente_ahora el
Defectos es el término apropiado. ¿Cuántos programas se lanzan con errores y todos lo aceptamos? Pero, ¿cuántos programas se lanzan con defectos? No aceptaríamos eso porque el término implica una mayor gravedad y sabemos que es nuestra culpa por el error, en lugar de un error en el que podemos culpar al clima o la hora del día.
Rudolf Olah
7

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.

Thomas Owens
fuente
3

La respuesta de Dan McGrath fue correcta.

  • Un error es el resultado de un error de codificación.
  • Un defecto es una desviación de los requisitos.

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.

tctham
fuente
¿Qué llamamos requisitos defectuosos?
gnasher729
@ gnasher729 si por requisitos defectuosos, quisiste decir que los programadores no entendieron los requisitos, entonces creo que es un defecto. Pero si se refería a requisitos defectuosos ya que el usuario que proporciona los requisitos incorrectos que resultan en el trabajo final no resuelve el problema inicial, entonces eso está más allá de los errores y defectos, ya que este es un problema con la sesión de recopilación de requisitos y no con el desarrollo.
tctham
0

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.

Rudolf Olah
fuente
0

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.

Mouviciel
fuente
0

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.

ingrese la descripción de la imagen aquí

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.

David Tonhofer
fuente
0

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.

max630
fuente