En bugg, som på svenska ibland också kallas lus, är en felaktighet i ett datorprogram. En bugg kan ha olika effekter, men resulterar alltid i att programmet inte beter sig som det ska på något sätt. I värsta fall resulterar buggen i att programmet kraschar. Den vanligaste orsaken till en bugg i ett program är att programmeraren har gjort ett misstag när han eller hon skrev källkoden, men det kan också bero på att kompilatorer har översatt koden på fel sätt.

Ordet ”bugg” kommer från det engelska ordet bug, som betyder insekt. En historia som skulle förklara varför man kallar dessa problem just ”bug” på engelska är att man i en av de tidiga, relästyrda datorerna kunde härleda ett problem i datorn till en nattfjäril som flugit in bland reläerna och hittades där död. Denna historia anses dock nästan vara en myt, och dess sanningshalt är vida ifrågasatt.H96566k

För att få bukt med buggar använder man sig av olika processer som gemensamt kallas debugging, vilket på svenska blir ungefär ”avlusning”. Ända sedan 1970-talet har man i utvecklingsmiljön av ett program använt sig av en rad olika debug-rutiner. Trots detta skulle många hävda att det är omöjligt att skapa helt felfria program, i alla fall när det gäller programvara designad för mänsklig interaktion. För att undvika problem testar man källkoden på flera olika system under utvecklingen av ett program. Även när man senare utvecklar programmet vidare är det viktigt att återigen testa det på alla system, för att se om förändringen har skapat några problem på vissa system. Man utför också omfattande användartester innan man släpper den slutgiltiga versionen av programmet. Det kan man göra genom att släppa en betaversion av programmet, som frivilliga användare får testa, och sedan rapportera in de buggar, problem eller krångligheter med programmet som de har upptäckt.

Oavsett hur rigorösa tester man genomför kvarstår dock normalt ändå vissa fel i koden. En normal felnivå är att det finns mellan 1 och 10 fel per tusen rader kod, och om man har genomgått alla tänkbara kvalitetskontroller och tester som är möjliga kvarstår oftast ändå något tiondels fel per tusen rader kod.