Was macht einen Fehler aus?

10

Was ist eigentlich ein Fehler? irgendwelche vordefinierten Regeln?

Muthu
quelle
Können wir einen Kontext haben? Sprechen Sie aus rein technischer Sicht oder über Fehler, die auf Tracking-Sites gemeldet werden?
Jeremy
5
Alle Fehler sind nur versteckte Funktionen :)
Marco Ceppi
2
Ich neige dazu, "undokumentierte Merkmale" zu sagen, anstatt sie zu verbergen :-)
Little Jawa

Antworten:

14

Ein Fehler ist:

Ein Softwarefehler ist der gebräuchliche Begriff, der verwendet wird, um einen Fehler, einen Fehler, einen Fehler, einen Fehler oder eine Störung in einem Computerprogramm oder -system zu beschreiben, der ein falsches oder unerwartetes Ergebnis erzeugt oder dazu führt, dass es sich unbeabsichtigt verhält. (Aus Wikipedia )

Hier ist eine weitere gute Definition dessen, was einen Fehler ausmacht. Entweder:

  1. Das Programm hat sich nicht gemäß den Absichten des Programmierers verhalten. oder
  2. Die Absichten des Programmierers erfüllten nicht die allgemeinen und vernünftigen Benutzererwartungen.

Die Ubuntu-Community hat eine hervorragende Definition für Fehler in diesem Wiki , die insbesondere den Unterschied zwischen Fehlern und fehlenden Funktionen hervorhebt :

Ein Softwarefehler ist ein Fehler oder eine Störung in einem Computerprogramm, die dazu führt, dass es nicht wie vorgesehen funktioniert. Dies kann so einfach sein, dass es überhaupt nicht funktioniert, oder so kompliziert wie ein subtil falsches Ergebnis. [...] Einige Dinge sind keine Fehler, aber es fehlen Funktionen, die vernünftigerweise enthalten sein sollten. Fehlende Features sollten nicht als Fehler gemeldet werden, stattdessen sollten FeatureSpecifications für sie geschrieben werden.

Während es schwierig ist, eine Linie zwischen den beiden Definitionen zu ziehen und die Frage zu beantworten, sind es Fehler oder fehlende Funktionen? Es ist möglich, einige Richtlinien zu geben:

  • Wenn es sich um ein Problem handelt, bei dem viele Details behoben werden müssen, handelt es sich wahrscheinlich um eine Funktion. Beispielsweise fehlt die Unfähigkeit, Dateien sicher auf eine moderne Windows-Partition zu schreiben .
  • Die Unfähigkeit, Dateien sicher auf eine ReiserFS-Partition zu schreiben, wäre ein Fehler.

Der Unterschied zwischen den beiden Behauptungen besteht darin, dass die erste weiter verbreitet ist (Unterstützung für moderne Windows FS) und daher als fehlendes Feature angesehen werden kann, während die andere ein einzigartiges Problem hervorhebt (nicht in ReiserFS schreiben kann) - einen bestimmten Fehler.

Wenn Sie interessiert sind, empfehle ich Ihnen, einen Blick in das BugSquad-Team- Wiki zu werfen . Das Bekämpfen von Fehlern ist neben einer großartigen Lernmöglichkeit eine der interessantesten Aktivitäten im Softwareentwicklungszyklus :-)

Vielen Dank!

crncosta
quelle
Schön, obwohl es nicht direkt damit zusammenhängt, ist es vielleicht erwähnenswert, dass jeder Fehler, den Sie begehen möchten, reproduzierbar sein muss.
Danizmax
Nein, es gibt Fehler aufgrund der Rennbedingungen. Warum solltest du sie nicht auch begehen wollen? Es wird schwierig sein, wenn der Programmierer den Fehler nicht reproduzieren kann, aber das hat keinen Einfluss auf den Wunsch, dies zu tun, oder?
Benutzer unbekannt
Bitte beachten Sie auch die Ubuntu BugSquad-Anleitung zu Fehlern: wiki.ubuntu.com/Bugs
Thomas Ward
2

Ich werde eine Schaukel nehmen. In erster Linie Verhalten, das nicht vom Designer / Programmierer beabsichtigt ist (Abzinsung von schlechtem Design). In Bezug auf die Fehler, die Sie den Leuten melden sollten, alles, was das Programm schwieriger zu verwenden macht und der obigen Beschreibung entspricht. Dies umfasst vom schlimmsten bis zum am wenigsten schwerwiegenden Systemabsturz, X-Absturz, Programmabsturz und alle internen Programmfehler.

Fehler, die zu Abstürzen oder zum Schließen von Fenstern führen, führen normalerweise zu einer Ausgabe von stderror, wenn Sie die Anwendung von einem Terminal aus ausführen. Dies kann hilfreich sein. Siehe auch Systemprotokolle für Fehlerberichte.

Jeremy
quelle
1

Ein Fehler ist ein Fehler in einem Computerprogramm oder -system, daher funktioniert das Programm nicht richtig oder überhaupt nicht. Fehler können also auf falschen Programmcode oder auf Programmcode zurückzuführen sein, der nicht robust genug ist und bestimmte Ausnahmen nicht verarbeiten kann (z. B. Division durch 0).

3sdmx
quelle
1

Für alle praktischen Zwecke sollte der Begriff "Fehler" als zu unscharfer Begriff vermieden werden.

Die beste Antwort auf Ihre Frage füllt ein ganzes Buch: "Why Programs Fail" von Andreas Zeller. Ein Buch, das im Bücherregal jedes Programmierers stehen sollte. Der Autor bemüht sich auch, sie nicht als "Bugs" zu bezeichnen (lesen Sie weiter). Denn wie die Antwort von crncosta bereits andeutet, ist ein "Fehler" nicht nur ein Programmierfehler. Aus diesem Grund bevorzugen einige Leute stattdessen den Begriff "Problem" (was zu "Issue Tracker" anstelle von "Bug Tracker" führt).

Denn was von einem Endbenutzer als Fehler wahrgenommen wird, muss überhaupt kein Fehler sein. Es kann - obwohl dies oft als lahme Ausrede verwendet wird - einfach beabsichtigt sein. Einige einmal beobachtete Fehler werden jedoch als "Fehler" eingestuft, obwohl sie auf das Fehlen einer Funktion zurückzuführen sind.

Der Autor des oben genannten Buches widmet sich auf mehreren Seiten der Definition von Begriffen wie Fehler und Defekt und beschreibt, warum "Fehler" kein geeigneter Begriff ist (zu unscharf).

Zusammenfassung seiner Terminologie:

  1. Programmierer erstellt den Defekt
  2. Defekt verursacht eine Infektion ("fehlerhafter Programmzustand")
  3. Infektion breitet sich aus
  4. Infektion verursacht Versagen ("beobachtbares schlechtes / unbeabsichtigtes Verhalten")
  5. Beobachter (normalerweise der Endbenutzer) sieht den Fehler

Wie Sie sehen, unterscheidet der Autor zwischen Ursache und Wirkung, die im Fall von "Bug" fast immer gemischt sind. Meistens wird der Begriff "Fehler" auf den Defekt , die Infektion und den Fehler angewendet .

0xC0000022L
quelle