viernes, 7 de mayo de 2010

Sobre "bugs", fallos, errores y otra fauna

Siguiendo con el hilo de la terminología confusa, aquí tenemos otra muestra. Se trata de varios conceptos que se diferencian en pequeños matices y sobre los que no hay una definición exacta. En este aspecto cabe destacar que estos matices tienen que ver con el alcance de las consecuencias que cada término conlleva.

Como no hay una definición concreta de la mayoría de ellos, aquí dejo una recopilación de las definiciones que me han parecido más interesantes de cada uno de ellos. Creo que con esto, cada uno se podrá hacer una idea del significado y de por qué se usa un término y no otro en cada caso, etc.

Pido disculpas si la traducción del nombre de algunos conceptos no es del todo correcta o resulta un tanto extraña pero después de mucho buscar e investigar, creo que son las traducciones más adecuadas para lo que cada concepto representa.


ANOMALÍA
  • [IEEE 1044] Cualquier comportamiento que se desvía de las expectativas basadas en las especificaciones de requerimientos, documentos de diseño, documentos de usuario, estándares, etc. o de la percepción y/o experiencia de alguien. Las anomalías se pueden encontrar (aunque no únicamente) durante revisiones, testeo, analisis, compilación o uso de productos de software o documentación aplicable.
  • [COBUILD] Una regla o práctica que difiere de lo que es normal o usual y que es, por consiguiente, insatisfactoria.
  • [ANSI] Cualquier cosa observada en la documentación o en el funcionamiento del software que se desvía de las expectativas basadas en productos de software previamente verificados o en documentos de referencia.
“BUG”
  • [GCSSDT] Un error en un programa que hace que dicho programa funcione de un modo no deseado o imprevisto.
  • [Wikipedia] Un error, defecto, equivocación, falla, fallo o “funcionalidad no documentada” en un programa de ordenador que evita que dicho programa funcione como es debido (por ejemplo, produciendo un resultado incorrecto).
  • [Pham 2000] Un defecto de diseño que se manifestará cuando un objeto sea sometido al test apropiado.
CUELGUE
  • [IEEE] La falla total y repentina de un sistema o componente.
DEFECTO
  • Incumplimiento de los requerimientos o de la especificación funcional o del programa.
  • [ISTQB] Un error en un componente o sistema que causa que dicho componente o sistema falle al ejecutar su funcionamiento requerido (por ejemplo, una sentencia o una definición de datos incorrecta). Un defecto, si se manifiesta en tiempo de ejecución, puede causar una falla del componente o sistema.
  • [IEEE 610.12-1990] Una anomalía en un producto.
DESVIACIÓN
  • Ver incidente.
ERROR
  • [ISO] Una discrepancia entre un valor o una condición computados, observados o medidos y el valor o la condición verdaderos, especificados o teóricamente correctos.
  • [ANSI]
    1. La diferencia entre un valor o una condición computados, observados o medidos y el valor o la condición verdaderos, especificados o teóricamente correctos.
    2. Un paso, proceso o definición de datos incorrecto. También: fallo.
    3. Un resultado incorrecto. También: falla.
    4. Una acción humana que produce un resultado incorrecto [After IEEE 610]. También: equivocación.
  • [Krsul] Un error es una equivocación cometida por un desarrollador. Puede ser un error tipográfico, una confusión con las especificaciones, un malentendido sobre lo que hace una subrutina, etc. [IEEE 1990]. Un error puede conducir a uno o más fallos. Los fallos están localizados en el texto del programa.
  • Un fallo en el sistema bajo testeo; normalmente, aunque no siempre, una equivocación al programar por parte del desarrollador.
EXCEPCIÓN
  • [IEEE] Un evento que causa la suspensión de la ejecución normal de un programa.
FALLA
  • [IEEE/ANSI] La incapacidad de un sistema o componente de llevar a cabo las funciones especificadas en los requerimientos.
  • [After Fenton] Desviación real del componente o sistema de su función, servicio o resultado esperados.
  • No funcionamiento o funcionamiento incorrecto de la función prevista de un producto. Una falla es, a menudo, la manifestación de uno o más fallos.
FALLO
  • [ANSI] Un paso, proceso o definición de datos incorrecto en un programa de ordenador que hace que dicho programa funcione de un modo no deseado o imprevisto. Un paso, proceso o definición de datos incorrecto.
  • [BCS SIGIST] La manifestación de un error en el software. Un fallo, si se produce en tiempo de ejecución, puede causar una falla.
  • [Krsul] Un fallo es la diferencia entre un programa incorrecto y su versión correcta [IEEE 1990].
  • Un defecto inherente en un producto que puede o no manifestarse, tal como un “bug” en el código.
INCIDENTE
  • [After IEEE 1008] Cualquier evento ocurrido durante el testeo que requiere investigación.
EQUIVOCACIÓN
  • Ver error.
PROBLEMA
  • Ver defecto.
----------------------------------------------------------------------------

Continuing with the confused terminology, here we are another sample. They are some concepts that differ each others in little nuances and for which there is no accurate definition. In this sense, it worths mentioning that these nuances have to do with the scope of the consequences each concept implies.

Since there is no accurate definition for the great majority of them, here you are a compilation of definitions that I have considered as the most interesting for each one. I think that with this, everyone will have an idea of the meaning and why a particular term is used instead of other in each particular case, etc.



ANOMALY

  • [IEEE 1044] Any condition that deviates from expectation based on requirements specifications, design documents, user documents, standards, etc. or from someone’s perception or experience. Anomalies may be found during, but not limited to, reviewing, testing, analysis, compilation or use of software products or applicable documentation.
  • [COBUILD] A rule or practice that is different from what is normal or usual and which is therefore unsatisfactory.
  • [ANSI] Anything observed in the documentation or operation of software that deviates from expectations based on previously verified software products or reference documents.
BUG
  • [GCSSDT] A fault in a program which causes the program to perform in an unintended or unanticipated manner.
  • [Wikipedia] An error, flaw, mistake, failure, fault or “undocumented feature” in a computer program that prevents it from behaving as intended (e.g., producing an incorrect result).
  • [Pham 2000] A design flaw that will result in symptoms exhibited when an object is subjected to an appropriate test.
CRASH
  • [IEEE] The sudden and complete failure of a computer system or component.
DEFECT
  • Nonconformance to requirements or functional/program specification.
  • [ISTQB] A flaw in a component or system that can cause the component or system to fail to perform its required function (e.g., an incorrect statement or data definition). A defect, if encountered during execution, may cause a failure of the component or system.
  • [IEEE 610.12-1990] A product anomaly.
DEVIATION
  • See incident.
ERROR
  • [ISO] A discrepancy between a computed, observed or measured value or condition and the true, specified or theoretically correct value or condition.
  • [ANSI]
    1. The difference between a computed, observed or measured value or condition and the true, specified or theoretically correct value or condition.
    2. An incorrect step, process or data definition. Also: fault.
    3. An incorrect result. Also: failure.
    4. A human action that produces an incorrect result [After IEEE 610]. Also: mistake.
  • [Krsul] An error is a mistake made by a developer. It might be typographical error, a misleading of a specifications, a misunderstanding of what a subroutine does and so on [IEEE 1990]. An error might lead to one or more faults. Faults are located in the text of the program.
  • A mistake in the system under test; usually but not always a coding mistake on the part of the developer.
EXCEPTION
  • [IEEE] An event that causes suspension of normal program execution.
FAILURE
  • [IEEE/ANSI] The inability of a system or component to perform its required functions within specified performance requirements.
  • [After Fenton] Actual deviation of the component or system from its expected delivery, service or result.
  • Non-performance or incorrect performance of an intended function of a product. A failure is often the manifestation of one or more faults.
FAULT
  • [ANSI] An incorrect step, process or data definition in a computer program which causes the program to perform in an unintended or unanticipated manner. An incorrect step, process, or data definition in a computer program.
  • [BCS SIGIST] A manifestation of an error in software. A fault, if encountered may cause a failure.
  • [Krsul] A fault is the difference between incorrect program and the correct version [IEEE 1990].
  • An inherent defect in a product that may or may not ever manifest, such as a bug in software code.
INCIDENT
  • [After IEEE 1008] Any event occurring during testing that requires investigation.
MISTAKE
  • See error.
PROBLEM
  • See defect.

Referencias/References:

http://www.xqual.com/documentation/glossary.html
http://www.istqb.org/downloads/glossary-current.pdf
http://www.aptest.com/glossary.html
http://geekswithblogs.net/srkprasad/archive/2004/06/02/5795.aspx
http://sw-assurance.gsfc.nasa.gov/help/glossary.php
http://www.qatutor.com/glossary.html