Definition Bug Was ist ein Bug?

Von Dipl.-Ing. (FH) Stefan Luber 3 min Lesedauer

Ein Bug ist ein Fehler im Programmcode einer Software. Er hat unterschiedliche Auswirkungen, die von unerwünschtem Verhalten bis zur kompletten Fehlfunktion einer Anwendung oder eines per Software gesteuerten Geräts führen. Schon in der Entwicklungsphase versuchen Programmierer Bugs zu finden und zu beseitigen. Das Beheben eines Bugs wird als Bugfixing bezeichnet.

Ein Bug ist ein Fehler im Programmcode einer Software.(Bild:  gemeinfrei / Pixabay)
Ein Bug ist ein Fehler im Programmcode einer Software.
(Bild: gemeinfrei / Pixabay)

Bug ist eine im IT-Umfeld gängige Bezeichnung für einen Fehler im Programmcode einer Software. Wörtlich übersetzt bedeutet „Bug“ auf Deutsch „Käfer“, „Insekt“ oder „Krabbeltier“. Der Begriff leitet sich nach einigen Quellen von einem Vorfall aus den 1940er-Jahren ab, bei dem Insekten in Form von Motten bei zum Teil noch mechanisch arbeitenden Computern die Funktionsfähigkeit von Relais störten. In den letzten Jahrzehnten hat sich der Begriff als eine Art bildlicher Ausdruck für verschiedene Arten von Programmfehlern etabliert. Mittlerweile ist der Begriff Bug Teil der Jugendsprache. „Verbuggt“ bedeutet unter Teenagern, dass eine Person einen Fehler gemacht hat oder dass etwas fehlerhaft ist. In der Gaming-Welt wird der Ausdruck „verbuggt“ verwendet, wenn in einem Spiel ein unerwartetes oder unrealistisches Verhalten passiert, dass das Spielerlebnis negaitv beeinfluss, zum Beispiel, wenn der Avatar durch eine Wand läuft. 2018 wurde „verbuggt“ sogar auf Platz drei der Jugendwörter gewählt.

Was versteht man unter einem Bug?

Bugs sind Programmierfehler, die dazu führen, dass Software nicht so funktioniert, wie sie sollte. Sie haben unterschiedliche Auswirkungen von unerwünschtem Verhalten über Fehler in der Programmausgabe bis zur kompletten Fehlfunktion einer Anwendung oder eines per Software gesteuerten Geräts. In der Regel handelt es sich bei den Bugs nicht um einfache Syntaxfehler, sondern um logische Fehler im Programmcode. Von Bugs können Endgeräte wie Handys, Anwendungen, Betriebssysteme, Hardware-Treiber, Services, Web-Dienste, Anlagensteuerungen und andere softwarebasierte Systeme betroffen sein. Die Erfassung und Dokumentation von Bugs findet mit Hilfe sogenannter Bugtracker statt.

Die verschiedenen Arten von Bugs

Je nach Typ, Auftreten und Auswirkung eines Bugs werden verschiedene Arten unterschieden. Ein funktionaler Bug ist ein Programmfehler, der Auswirkungen auf bestimmte Funktionen eines Programms hat. Laufzeit-Bugs treten während des sequentiellen Ablaufs des Programmcodes auf und betreffen die Programmlogik. Design-Bugs sind grundlegende Fehler bereits im Design des Grundkonzepts einer Software. Eine weitere Art von Bug ist der Regressions-Bug. Er tritt nach einem schon erfolgten Bugfixing in einer späteren Programmversion erneut auf. Darüber hinaus existieren Bugs, die die Bedienoberfläche oder die Darstellung betreffen.

Mögliche Folgen eines Bugs

Die Folgen der verschiedenen Arten von Bugs sind vielfältig. Sie reichen von leichten Fehlfunktionen oder unerwünschtem Verhalten über plötzlich auftretende Programmabstürze bis zur kompletten Fehlfunktion und Nicht-Nutzbarkeit einer Software oder Anwendung. Unter Umständen sind die Auswirkungen gravierend, wenn Geräte oder Maschinen mit einer Bug-behafteten Software gesteuert werden. Dies kann beispielsweise zum komplettem Ausfall von Produktionsanlagen, zu Abstürzen von Flugzeugen oder zu Unfällen beim autonomen Fahren führen und Menschenleben kosten oder immense wirtschaftliche Schäden verursachen.

Suche nach Bugs und Behebung durch einen Bugfix

Aufgrund der negativen Folgen eines Bugs wird schon in der Entwicklungsphase versucht, Programmfehler zu finden, zu beheben und zu minimieren. Hierfür kommen beispielsweise Debugger oder spezielle Tools zur Code-Analyse und zur Identifizierung von Fehlern im Programmcode zum Einsatz. Darüber hinaus nutzen Unternehmen häufig sogenannte Bug-Bounty-Programme zum Finden von Fehlern oder Schwachstellen in Software. Diese Programme belohnen den Finder eines Fehlers mit Geld- oder Sachpreisen. Das Beheben der Fehler findet mit Hilfe sogenannter Bugfixes oder Patches statt. Bugfixes sind installierbare Softwarepakete, die den Fehler im betroffenen Programmteil einer Software beseitigen. Von einem Hotfix spricht man, wenn es sich um einen sehr dringlichen und wichtigen Bugfix handelt.

Für die Suche nach Bugs gibt es verschiedene Tools, die meisten davon führen das Programm für die Analyse aus.

  • Statische Bug-Analyse: Solche Tools führen das Programm bei der Suche nach Bugs nicht aus. Beispiele für Lösungen für die statische Bug-Analyse sind SonarQube, ESLint, Cppcheck und Coverity.
  • Dynamische Bug-Analyse: Bei der dynamischen Bug-Suche wird das Programm ausgeführt. Bekannte Lösungen sind Valgrind, OWASP ZAP und Purify.
  • Debugging-Tools: Diese Art von Lösungen helfen Entwicklern, das zu untersuchende Programm schrittweise auszuführen und auf Fehler zu analysieren. Beispiele sind GNU Debugger, Visual Studio Debugger und Xcode Debugger.
  • Test-Frameworks: Innerhalb von Test-Frameworks können Entwickler ihre Programme testen, bevor sie veröffentlicht werden. Bekannte Frameworks sind JUnit, Pytest, Selenium, TestNG und Cypress.
  • Fuzzing-Tools: Beim Fuzzing werden ungültige Eingaben in ein Softwareprogramm eingegeben, um Schwachstellen aufzudecken. Fuzzing-Tools sind unter anderem LibFuzzer und Peach Fuzzer.
  • Logging und Monitoring: Das kontinuierliche Überwachen nach der Bereitstellung des Programms hilft Bugs über die gesamte Lebensdauer des Programms hinweg zu entdecken. Mögliche Lösungen hierfür sind Sentry, Datadog und Splunk.

(ID:47614411)

Jetzt Newsletter abonnieren

Täglich die wichtigsten Infos zur IT-Sicherheit

Mit Klick auf „Newsletter abonnieren“ erkläre ich mich mit der Verarbeitung und Nutzung meiner Daten gemäß Einwilligungserklärung (bitte aufklappen für Details) einverstanden und akzeptiere die Nutzungsbedingungen. Weitere Informationen finde ich in unserer Datenschutzerklärung. Die Einwilligungserklärung bezieht sich u. a. auf die Zusendung von redaktionellen Newslettern per E-Mail und auf den Datenabgleich zu Marketingzwecken mit ausgewählten Werbepartnern (z. B. LinkedIn, Google, Meta).

Aufklappen für Details zu Ihrer Einwilligung