Hibák a programokban azóta vannak, amióta az első program megszületett és minden programban vannak, van amelyikben több, van amelyikben kevesebb. Még az olyan komoly programokban is, mint a Windows, amely a programok egy speciális fajtája, operációs rendszer. Aki valaha is programozott, annak nem kell különösebben magyarázni, vagy belátni, hogy hibák tényleg minden programban vannak, még a legegyszerűbbekben is. Aki viszont nem, annak kicsit nehezebb lehet megérteni, hogy miért hibás egy program, miért nincs javítva, vagy egyáltalán senki nem is ellenőrzi a programokat, mielőtt a nyilvánosság elé kerül? Vagy hogy van ez?
Hogyan keletkeznek a program hibák?
Amikor egy programot valaki (a program fejlesztője, programozó), vagy valakik (akár több százan is dolgozhatnak egy programon) elkészítenek, akkor minimálisan egyszer ellenőrzésre kerül, hogy az elvárt módon működik-e, képes-e annak a feladatnak az ellátására, amire szánják. Ha igen, akkor a program kész (legalábbis a funkcionalitás szempontjából).
Ilyenkor akár a programozó is ellenőrizheti, hogy vétett-e valamilyen hibát? Például ha valahol egy számot vár a program, de beírható betű is, akkor történik-e valami hiba? Egy ilyen egyszerű dolog is okozhat hibás működést, ha nincs megfelelően kezelve a programban. Például úgy, hogy a felhasználó ilyenkor egy hiba üzenetet kap, amely közli, hogy számot kellene megadni és nem próbálja meg feldolgozni a betűt. Általában az ilyenre azért figyelnek a programozók, de megeshet, hogy valahogy elmarad és átcsúszik a tesztelésen is (és nem azért mert trehány, vagy buta a programozó, lehet hogy éppen fáradtabb volt, vagy valami elterelte a figyelmét, aztán elmaradt). Ilyenkor a felhasználó egy elgépelés során program hibába ütközik.
És ez csak a legalapvetőbb hiba lehetőségek egyike, ennél sokkal összetettebb feltételek során keletkező hibák is léteznek, amelyek a fejlesztő figyelmét könnyedén elkerülhetik. Ráadásul minél összetettebb egy program, annál nagyobb a hibák keletkezésének lehetősége és annál több dolog út vezethet egy hiba jelentkezéséhez.
Mit tesznek a programozók a hibák elhárítása érdekében?
A programozók már saját maguk is megpróbálhatnak minél több dolgot, hogy a lehetséges hibákat elő tudják állítani. Azonban ez közel sem mindig lehetséges, mert:
- ahány gép, annyiféle hardver környezet, míg a programozó csak egy gépet használ
- ahány gép, annyiféle program környezet, így program ütközések, egyéb hibalehetőségek előfordulnak
- minél összetettebb egy program, annál több lehetőség van a hibára, illetve a hibát kiváltó dolgok kombinációinak, feltételeinek száma is egyre növekszik. Vagyis egyre több út vezethet egy hibához.
- a programozónak van egy saját gondolkodása, ami nyilván nem fedi le több ezer, adott esetben több százezer, vagy például a Windows esetén sok millió felhasználó gondolkodását, akik esetleg eltérő módon használják (vagy használnák) az adott programot
Könnyen belátható tehát, hogy a programozók általi hibakeresés a legtöbb esetben nem elég, szinte bizonyosan maradnak hibák a programban. Itt jön a képbe a tesztelés.
Teszteléssel a hibák felderítéséért
Minden kicsit is komolyabb program tesztelésen is átesik, mielőtt a nyilvánosság elé kerülne, hogy legalább az alapvető hibák kiderüljenek és javítva legyenek. Általában külön programozó, programozók foglalkoznak a teszteléssel, hibák felderítésével. Számuk változó, nyilván minél több tesztelő, minél több ideig foglakozik a program tesztelésével, annál több hibát deríthetnek fel. Vagyis a tesztelés nem maradhat el, különben egy kicsit is komolyabb program nagy valószínűséggel tele lenne hibával. Ha kevesebb, vagy nem kapnak elég időt a tesztelésre, akkor a programban megmaradó hibák száma is több lehet.
De ha tesztelnek egy programot, akkor miért lehetnek benne sokszor nagyon durva hibák?
Az egyik fő ok a program bonyolultsága. Például egy Windows kaliberű program a világ egyik legbonyolultabb programja, hiszen egy komplett rendszer, amelynek ráadásul kezelnie kell millióféle hardvert, eszközt és működnie kell szinte végtelen számú számítógép konfiguráción. Így belátható, hogy hiába teszteli például 1 millió fő, az még mindig elenyésző a több száz millióhoz képest. Így törvényszerű, hogy hibák maradnak benne, amik persze a felfedezésükkor javításra kerülnek.
Ugyanakkor meg kell említeni a nem elégséges tesztelést is, hiszen vannak szoftverek, amelyeknél fogjuk a fejünket, hogy mégis hogyan maradhattak benne nyilvánvaló hibák? Sajnos a legtöbb esetben soha nem derül ki, hogy miért maradtak egy programban nyilvánvaló hibák is.
Nyilvános tesztelés
A nyilvános tesztelés sokat segít, hiszen jóval többen tesztelhetnek, kipróbálhatnak egy programot, mint amennyi lehetne amúgy a tesztelők száma. Windows esetén ilyen a Windows Insider, vagy a Chrome esetén a Chrome Canary, Firefox esetén a Firefox Nightly. Ezek még nem a nagyobb nyilvánosságnak szánt verziók, hiszen sokkal több hibát tartalmazhatnak, mint a végleges változat, ezért a kísérletező kedvűeknek ajánlott csak inkább.
Hibák persze így is maradnak a programokban, mert a tesztelésben résztvevők száma is csak töredéke az összes felhasználóknak.