Unterschied zwischen einem Defekt und einem Fehler beim Testen?


35

Was ist der Unterschied zwischen einem Defekt und einem Fehler?


2
Lesen Sie testingstandards.co.uk/bs_7925-1_online.htm für weitere Informationen
StuperUser

1
Es gibt Fehler, die tatsächlich darauf hinweisen, dass etwas fehlt, was bedeutet, dass es sich um Funktionsanfragen handelt, nicht um Fehler.
m3th0dman

Die Antwort hängt vom Zweck ab, warum Sie fragen.
bis

Schlagen Sie die Etymologie des Wortfehlers nach. De = nicht, un. Facere = do. Also, tut nicht (wie erwartet), führt nicht aus, ist kaputt, kaputt. Während Bug bedeutet "etwas in der Arbeit, was die Leistung beeinträchtigt". Am Ende des Tages müssen Sie etwas reparieren, damit alles akademisch ist. Ich habe für das Schließen gestimmt. Haben Sie nicht ein paar Fehler zu beheben ?!
Martin Maat

Antworten:


59
  • Ein Fehler ist das Ergebnis eines Codierungsfehlers

  • Ein Mangel ist eine Abweichung von den Anforderungen

Das heißt: Ein Defekt bedeutet nicht unbedingt, dass der Code einen Fehler enthält , es könnte sich um eine Funktion handeln, die nicht implementiert, sondern in den Anforderungen der Software definiert wurde.


Auf der Wikipedia-Seite zum Testen von Software :

Nicht alle Softwarefehler werden durch Codierungsfehler verursacht. Eine häufige Ursache für teure Mängel sind Anforderungslücken, z. B. nicht erkannte Anforderungen, die zu Fehlern führen, die der Programmierer unterlässt. [14] Eine häufige Ursache für Anforderungslücken sind nicht funktionale Anforderungen wie Testbarkeit, Skalierbarkeit, Wartbarkeit, Benutzerfreundlichkeit, Leistung und Sicherheit.


15
Beides sind "Abweichungen von den Anforderungen", wie ich es sehe.
Martin Wickman

2
Ein Defekt muss kein Fehler sein. Außerdem muss ein Fehler nicht bedeuten, dass eine Anforderung nicht erfüllt wurde, und ist daher keine „Abweichung von der Anforderung“
Dan McGrath,

2
Ein Fehler, der die App zum Absturz bringt, ist eine Abweichung von den Anforderungen, nein? Oder ein Fehler, der aufgrund der Verwendung von long vs double zu Rundungsfehlern führt. Defekt oder Fehler? Oder ein Popup, das nicht angezeigt wird. Bugs oder Defekte sind die gleichen: Dinge, die falsch sind, Fehler.
Martin Wickman

5
Sie scheinen den Punkt @Martin zu verpassen. Ja, ein Fehler kann ein Defekt sein. Ja, ein Defekt kann ein Fehler sein. Das muss aber nicht immer so sein. Nur weil es einige Überlappungen gibt, heißt das nicht, dass sie identisch sind! Venn-Diagramm von Bug & Defect -> (())
Dan McGrath

8
@Dan McGrath: Im Grunde genommen hast du hier deine eigene Definition eines Fehlers. Aber im Allgemeinen gibt es keine definierte Bedeutung, es ist nur ein Fachjargon!
12.

21

Zitieren von Ilene Burnstein aus dem Buch Practical Software Testing (empfohlen), die Teile aus der Definition in der "IEEE-Standardsammlung für Software-Engineering" (1994) und dem "IEEE-Standardglossar für Software-Engineering-Terminologie" (Standard 610.12, 1990) enthält:

Error

Ein Fehler ist ein Fehler, eine falsche Vorstellung oder ein Missverständnis eines Softwareentwicklers

In der Kategorie der Entwickler zählen wir Softwareentwickler, Programmierer, Analysten und Tester. Beispielsweise kann ein Entwickler eine Entwurfsnotation falsch verstehen, oder ein Programmierer kann einen Variablennamen falsch eingeben.

Fehler (Defekte)

Ein Fehler (Defekt) wird als Ergebnis eines Fehlers in die Software eingeführt. Es ist eine Anomalie in der Software, die dazu führen kann, dass sie sich nicht ordnungsgemäß und nicht gemäß der Spezifikation verhält.

Fehler oder Defekte werden manchmal als "Bugs" bezeichnet. Die Verwendung des letzteren Begriffs ist eine Trivialisierung der Auswirkungen von Fehlern auf die Softwarequalität. Die Verwendung des Begriffs „Defekt“ ist auch mit Software-Artefakten wie Anforderungen und Konstruktionsdokumenten verbunden. Fehler, die in diesen Artefakten auftreten, werden ebenfalls durch Fehler verursacht und normalerweise im Überprüfungsprozess erkannt.

Ausfälle

Ein Fehler ist die Unfähigkeit eines Softwaresystems oder einer Softwarekomponente, die erforderlichen Funktionen innerhalb der angegebenen Leistungsanforderungen auszuführen.

Während der Ausführung einer Softwarekomponente oder eines Systems stellt ein Tester, Entwickler oder Benutzer fest, dass die erwarteten Ergebnisse nicht erzielt werden. In einigen Fällen weist eine bestimmte Art von Fehlverhalten darauf hin, dass eine bestimmte Art von Fehler vorliegt. Wir können sagen, dass die Art des Fehlverhaltens ein Symptom für den Fehler ist. Ein erfahrener Entwickler / Tester verfügt über eine Wissensbasis für Fehler / Symptome / Fehlerfälle (Fehlermodelle, wie in Kapitel 3 beschrieben), die im Speicher gespeichert sind. Inkorrektes Verhalten kann das Erzeugen falscher Werte für Ausgabevariablen, eine falsche Antwort seitens eines Geräts oder ein falsches Bild auf einem Bildschirm umfassen. Während der Entwicklung werden Fehler normalerweise von Testern beobachtet, und Fehler werden von Entwicklern lokalisiert und repariert.

Das vollständige Kapitel in Google Books finden Sie hier .


12

Es gibt verschiedene Begriffe im Zusammenhang mit Softwarefehlern. Auszug aus einem Kurs, den ich belegt habe:

  • Fehler : Menschliches Handeln oder Unterlassen, das zu einem Fehler führt.

  • Fehler : Ein Fehler ist ein Softwarefehler (falscher Schritt, Prozess oder falsche Datendefinition), der einen Fehler verursacht.

  • Bug : Wie Fehler.

  • Fehler : Die Unfähigkeit einer Software, die erforderlichen Funktionen innerhalb der angegebenen Leistungsanforderungen auszuführen.

Demnach gibt es keinen Unterschied zwischen einem Defekt und einem Fehler. Einige Leute argumentieren jedoch, dass der Fehler ein Fehler ist, der vor der Veröffentlichung der Software festgestellt wurde, während ein Fehler vom Kunden festgestellt wurde.

Ich konnte nicht widerstehen, den berühmten "ersten tatsächlichen Fall von gefundenem Fehler" zu posten.

Alt-Text


Endlich jemand, der gelesen hat: testingstandards.co.uk/bs_7925-1_online.htm
StuperUser

Das ist nicht der Ort, von dem ich es bekommen habe, aber sie haben möglicherweise eine gemeinsame Quelle (oder diese könnte die Quelle sein).
Tamás Szelei

Ja, vor vielen, vielen Jahren habe ich eine Weile versucht, einen Fehler zu beheben. Ich hatte ein nerviges Flimmern in einer Zelle auf dem Bildschirm und es ergab keinen Sinn. Es flog schließlich weg. (Dies war in der Ära des weißen Texts auf einem schwarzen Bildschirm, der fragliche Punkt war weit genug rechts, um während der Bearbeitung immer schwarz zu sein, daher bemerkte ich es nur, wenn das Programm etwas Weiß dahinter stellte.)
Loren Pechtel

7

Ach je.

In früheren Zeiten wurde der fehlerhafte Betrieb eines Computers durch alle möglichen Dinge verursacht - einschließlich Ratten, die an den Kabeln kauen, und echten Insekten (Critters), die in die Werke eindringen.

Der Begriff BUG ist ein Begriff geblieben, der bedeutet, dass etwas nicht wie erwartet funktioniert.

BUG sollte als ein Fachjargon angesehen werden, der einen Defekt bedeutet.

Ein Defekt ist ein technisch korrekter Begriff, der bedeutet, dass die Sache nicht so funktioniert, wie sie sollte.

Wo immer möglich, ist die Verwendung von DEFECT anstelle von BUG tatsächlich mit der Konnotation verbunden, dass wir unsere Fehler (unsere Mängel, unser mangelndes Verständnis der Benutzeranforderungen oder der Dinge, die wir bei der Implementierung übersehen haben) anerkennen, anstatt sie als den trivial klingenden Fehler zu verkleiden ".

Verwenden Sie DEFECT.

Versuchen Sie, den Begriff BUG nicht zu verwenden. Es ist albern, irrelevant, historisch und belanglos.


2
Warum sollten Sie einen gut verstandenen Fachbegriff aus der Verwendung entfernen? Es tut mir leid ... ja, BUG ist historisch - aber wenn Sie der Meinung sind, dass Programmierer Bugs (allgemein und nicht spezifisch) als trivial ansehen, nur weil sie als Bugs oder als irrelevant bezeichnet werden, bin ich es Angst, dass ich mich in ein mürrisches Kind mittleren Alters verwandle, ist völlig gerechtfertigt. Oh, und wie @Dan betont, sind Fehler Fehler, aber Fehler sind nicht unbedingt Fehler, was weiter darauf hindeutet, dass der Begriff Wert hat.
Murph

3
@Murph, ein "Bug" ist ein Euphemismus für einen Programmierfehler. Unbewusst verführt dies zu einer Art Gremlin, über den der Entwickler keine Kontrolle hat. Dies ist nicht korrekt - es ist ein Fehler, und dies anzuerkennen ist ein Schritt in Richtung professionelleres Verhalten. (Imho natürlich :-))
rsp

1
Ähm, klar bin ich anderer Meinung (-: Ich weiß genau, wer für die Fehler verantwortlich ist - Codierungs- und Logikfehler - die ich in meinem Code habe. (Ich kann auch Fehler im Code anderer Leute identifizieren.) Alle Programmierer, die ich kenne Es ist klar, was der Begriff bedeutet - dass sie (auch einige Programmierer) und nicht irgendeine Art von Gremlin einen Fehler gemacht haben
Murph

2
Im Umgang mit Ihren Kunden können Sie diese Dinge als Fehler oder Mängel bezeichnen. Bugs ist Jargon. Mängel sind eine Bestätigung außerhalb des Jargons, dass es nicht so ist, wie es sein sollte. "Defects" ist ein Begriff, der eine klare Kommunikation fördert - sowohl innerhalb als auch außerhalb der Programmbrüderlichkeit. (Ich bin nicht einverstanden, dass es einen Unterschied zwischen einem Fehler und einem Defekt.)
quickly_now

Mängel ist der richtige Begriff. Wie viele Programme werden mit Bugs veröffentlicht und wir alle akzeptieren das? Aber wie viele Programme sind mit Mängeln veröffentlicht? Wir würden das nicht akzeptieren, weil der Begriff einen höheren Schweregrad impliziert und wir wissen, dass es unsere eigene Schuld für den Fehler ist und nicht ein Fehler, bei dem wir das Wetter oder die Tageszeit verantwortlich machen können.
Rudolf Olah

7

Aus dem IEEE-Standardglossar für Software-Engineering-Terminologie, das in der Software-Engineering-Wissensbasis KA für Softwaretests und Softwarequalität zitiert wird:

Fehler. Siehe: Fehler; Fehler.


Error. (1) Die Differenz zwischen einem berechneten, beobachteten oder gemessenen Wert oder Zustand und dem wahren, spezifizierten oder theoretisch korrekten Wert oder Zustand. Zum Beispiel eine Differenz von 30 Metern zwischen einem berechneten Ergebnis und dem korrekten Ergebnis. (2) Eine falsche Schritt-, Prozess- oder Datendefinition. Zum Beispiel eine falsche Anweisung in einem Computerprogramm. (3) Ein falsches Ergebnis. Zum Beispiel ein berechnetes Ergebnis von 12, wenn das richtige Ergebnis 10 ist. (4) Eine menschliche Handlung, die ein falsches Ergebnis erzeugt. Zum Beispiel eine falsche Aktion eines Programmierers oder Bedieners. Hinweis: Während alle vier Definitionen häufig verwendet werden, weist eine Unterscheidung dem Wort "Fehler" die Definition 1, dem Wort "Fehler" die Definition 2, dem Wort "Fehler" die Definition 3 und dem Wort "Fehler" die Definition 4 zu. Siehe a2so: dynamischer Fehler; fataler Fehler; indigener Irrtum; semantischer Fehler; syntaktischer Fehler; statischer Fehler; vorübergehender Fehler.


Fehler. Die Unfähigkeit eines Systems oder einer Komponente, die erforderlichen Funktionen innerhalb der angegebenen Leistungsanforderungen auszuführen. Hinweis: Die Fehlertoleranzdisziplin unterscheidet zwischen menschlichem Handeln (Fehler), dessen Manifestation (Hardware- oder Softwarefehler), dem Ergebnis des Fehlers (Fehler) und dem Ausmaß, um das das Ergebnis falsch ist (Fehler). Siehe auch: Absturz; abhängiges Versagen; Ausnahme; Fehlermodus; Fehlerrate; hartes Versagen; beginnendes Versagen; unabhängiges Scheitern; zufälliges Versagen; weiches Versagen; Versagen stecken.


Fehler. (1) Ein Defekt in einem Hardwaregerät oder einer Hardwarekomponente; Zum Beispiel ein Kurzschluss oder ein Kabelbruch. (2) Eine falsche Schritt-, Prozess- oder Datendefinition in einem Computerprogramm. Hinweis: Diese Definition wird hauptsächlich von der Fehlertoleranzdisziplin verwendet. Im allgemeinen Sprachgebrauch werden die Begriffe "Fehler" und "Fehler" verwendet, um diese Bedeutung auszudrücken. Siehe auch: datensensitiver Fehler; programmsensitiver Fehler; äquivalente Fehler; Fehlermaskierung; zeitweiliger Fehler.


Ich denke, die Definition von Misserfolg ist am relevantesten. Alles beginnt mit einem Fehler, sei es in den Anforderungen, dem Design, der Implementierung oder dem Testfall / -verfahren. Wenn sich dieser Fehler in der Software manifestiert, liegt ein Fehler vor. Ein Fehler wird durch das Vorhandensein eines oder mehrerer Fehler in der Software verursacht.

Ich bin jedoch nicht auf die formale Definition von Fehler aus. Ich bevorzuge die Definition von dukeofgaming in seiner Antwort sehr , jedoch ist die in dieser Antwort die IEEE-Standarddefinition für Fehler.


3

Dan McGraths Antwort stimmte.

  • Ein Fehler ist das Ergebnis eines Codierungsfehlers
  • Ein Mangel ist eine Abweichung von den Anforderungen

Vielleicht würde ein Beispiel es klarer machen.

Beispiel: Der Kunde wollte, dass das Webformular das Fenster speichern und schließen kann.

Szenario 1: Das Webformular verfügt über eine Schaltfläche zum Speichern und eine weitere Schaltfläche zum Schließen. Ergebnis: Fehler, da der Client die Schaltfläche 1 zum Speichern und Schließen des Fensters haben wollte. Entwickler falsch verstanden und separat erstellt. Da beide Tasten ihre Anforderungen erfüllten, handelt es sich nicht um einen Fehler, sondern um einen Defekt, da er nicht den Anforderungen des Kunden entsprach.

Szenario 2: Das Webformular verfügt über eine Schaltfläche zum Speichern und Schließen, die jedoch nur speichert, aber nicht schließt. Ergebnis: Bug. Weil die Schaltfläche nicht die erforderliche / erwartete Leistung erbringt. Der Entwickler weiß, dass dieses Ergebnis erzielt werden soll, hat es aber letztendlich nicht getan. (vielleicht Codierungsfehler)

Ich bin mir nicht sicher, ob dies klarer ist.

p / s: Aus Entwicklersicht (ich war einmal) sind sowohl Fehler als auch Bugs genauso wichtig. Wir werden es immer noch reparieren.

Wir sind sogar auf seltsame Anomalien gestoßen, die wir unter Bugs kategorisiert haben, und wir versuchen ständig herauszufinden, was die Ursache ist und wie wir sie beheben können. Wenn man es als Fehler bezeichnet, ist es im Vergleich zu Defekten nicht trivial.


Wie nennen wir fehlerhafte Anforderungen?
gnasher729

@ gnasher729 wenn du durch fehlerhafte anforderungen die programmierer missverstanden hast, dann würde ich denken, dass es ein fehler ist. Wenn Sie jedoch fehlerhafte Anforderungen gemeint haben, weil der Benutzer, der die falschen Anforderungen für die endgültige Arbeit angibt, das ursprüngliche Problem nicht löst, ist dies kein Problem, da es sich eher um ein Problem mit der Anforderungserfassungssitzung als mit der Entwicklung handelt.
tctham

0

Der Unterschied ist, dass der Begriff "Bug" magisch klingt. Als ob ein Programm zufällig Fehler enthalten könnte, nachdem Sie mit dem Programmieren fertig sind. Wenn es zufällige Fehler gibt, bedeutet dies, dass Sie die Spezifikationen nicht eingehalten haben und Ihr Programm fehlerhaft ist.

Ein Defekt bedeutet einen Fehler, bei dem das Programm nicht den Spezifikationen entspricht. Dies ist schwerwiegender und besagt im Grunde, dass jeder Fehler ein großes Problem mit dem Programm darstellt und dies bedeutet, dass das Programm nicht für die Veröffentlichung geeignet ist.

Der Unterschied liegt in der Einstellung der Programmierer, die die Begriffe verwenden. Es gibt Millionen von Programmen, die mit Fehlern veröffentlicht werden, und die Leute sind damit einverstanden, dass ein Fehler magisch und zufällig ist und dass jedes Programm mindestens einen Fehler enthält. Ein Programmierer, der den Begriff "Defekt" verwendet, kann sich jedoch unwohl fühlen, ein Programm mit einem Defekt freizugeben, da der Begriff einen höheren Schweregrad impliziert.

Die Implikationen, einen Begriff dem anderen vorzuziehen, wirken sich täglich auf uns aus.


0

Nach der Zuverlässigkeit: Grundbegriffe und Terminologie :

Ein Systemausfall auftritt , wenn der gelieferte Dienst abweicht von der Systemfunktion zu erfüllen, wobei letztere , was das System bestimmt ist. Ein Fehler ist der Teil des Systemzustands, der zu einem späteren Ausfall führen kann. Ein Fehler, der sich auf den Dienst auswirkt, ist ein Hinweis darauf, dass ein Fehler aufgetreten ist oder aufgetreten ist. Die festgestellte oder vermutete Fehlerursache ist ein Fehler .

Ich verstehe den Fehler nur als einen anderen Namen für einen Fehler.

Bug ist verwirrend und kann einen Fehler oder einen Ausfall darstellen , je nach Kontext.

Beachten Sie, dass die Spezifikation nicht erwähnt wird: Auch eine Spezifikation kann fehlerhaft sein.


0

Hier ist eine, die ich zuvor für meinen Arbeitgeber Q-LEAP basierend auf dem ISTQB-Vokabular durchgeführt habe, und ich habe auch das IEEE-Vokabular überprüft. Genießen.

Fehler und Defekt? Das gleiche, obwohl man darüber endlos diskutieren kann. Wir haben wirklich andere Sorgen, das Leben ist schon kompliziert genug usw.

Bildbeschreibung hier eingeben

Ein Beispiel für die Verwendung des Begriffs in freier Wildbahn finden Sie unter "So testet Google Software" auf S. 70 . 113. Öffnen Sie einen Artikel von "IEEE Software" und es wird auf die gleiche Weise verwendet. In der Tat trifft man selten auf das Wort "Defekt" im wirklichen Leben.

Das Leben eines Käfers

Bugs und Bug Reports sind das einzige Artefakt, das jeder Tester versteht. Das Auffinden von Fehlern, das Ausprobieren von Fehlern, das Beheben von Fehlern und das Zurückbilden von Fehlern sind der Herzschlag und der Workflow für die Softwarequalität. Dies ist der Teil des Testens, der bei Google am konventionellsten ist, aber es gibt immer noch einige interessante Abweichungen von der Norm. In diesem Abschnitt ignorieren wir die Fehler, die zum Nachverfolgen von Arbeitselementen gemeldet werden, und verwenden den Begriff, um den tatsächlich fehlerhaften Code zu identifizieren. Als solche repräsentieren Fehler häufig den stündlichen und täglichen Arbeitsablauf für Entwicklungsteams.

Ein Bug wird geboren. Fehler werden von jedem bei Google gefunden und abgelegt. Produktmanager melden Fehler, wenn sie Probleme in den frühen Builds feststellen, die sich von ihren Spezifikationen / Gedanken unterscheiden. Entwickler melden Fehler, wenn sie feststellen, dass sie versehentlich ein Problem eingecheckt haben oder ein Problem an einer anderen Stelle in der Codebasis oder beim Füttern von Google-Produkten gefunden haben. Fehler kommen auch von außerhalb des Unternehmens, von Crowd-Sourcing-Testern und von externen Anbietertests. Sie werden von Community-Managern gemeldet, die die produktspezifischen Google Groups überwachen. Viele interne Versionen von Apps bieten auch die Möglichkeit, Fehler mit einem Klick zu melden, wie z. B. Google Maps. Und manchmal verursachen Softwareprogramme Fehler über eine API.


0

Außerhalb eines bestimmten Fehlers / einer Aufgabe / eines Tickets / eines Fehlers / eines Problems / einer beliebigen Nachverfolgungssysteminstanz haben diese Wörter keine exakte Bedeutung, und daher ist es sinnlos, Unterschiede zwischen ihnen zu diskutieren. Wenn Sie Ihren Workflow erledigen, sollten Sie die Terminologie festlegen und Beschreibungen bereitstellen.

In meiner jetzigen Umgebung ist ein "Defekt" ein beliebiger Artikel in Jira. Es sieht so aus, als ob Jira selbst den Begriff "Problem" verwendet. Wir haben es möglicherweise von einem früheren System geerbt. "Bug" ist eine Art von Problem, wenn etwas nicht wie erwartet funktioniert und in der Dokumentation beschrieben wird. "Funktionsanforderung", wenn etwas wie erwartet funktioniert, aber eine Verbesserung gewünscht wird (dies kann offensichtlich und wichtig sein, aber wenn das aktuelle Verhalten beschrieben wird, handelt es sich immer noch um eine Funktionsanforderung). Es gibt mehr Typen, aber diese 2 werden von Leuten außerhalb des Entwicklungsteams verwendet, um etwas von ihm zu verlangen.

Wenn Sie Namen für Problemtypen auswählen, klingen "Fehler" und "Defekt" ähnlich wie ich. Der Unterschied zwischen ihnen ist stilistisch. Da Englisch nicht meine Muttersprache ist, kann ich nicht viel davon sehen und bin mir nicht sicher, ob das, was ich sehe, richtig ist.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.