Was ist der Unterschied zwischen einem Defekt und einem Fehler?
Was ist der Unterschied zwischen einem Defekt und einem Fehler?
Antworten:
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.
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:
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.
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.
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 .
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.
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.
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.
Dan McGraths Antwort stimmte.
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.
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.
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.
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.
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.
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.