... sorba rendezett bemeneti adatokkal való ellátását, s a kimenet vizsgálatát jelenti, feltéve, hogy bemeneti adatnak vesszük az adatokat és az egyéb felhasználói interakciókat is.
Ha elfogadjuk ezt a definíciót, hibának azt nevezhetjük, ha adott bemeneti adatsorra a szoftver hibás kimeneti adatsort állít elő. Fontos leszögezni, hogy detektálható hibáról akkor beszélhetünk, ha annak ismerjük legalább egy bemeneti adatsorát, így szoftverről gyakorlatilag azt sosem jelenthetjük ki, hogy hibamentes, esetleg azt, hogy nem tartalmaz detektálható hibákat.
Hibakeresésnél fontos mérőszám még a tesztkészlet hibafedése, azaz az az arányszám, amely a tesztkészletünk által detektálható hibákat veti össze az összes, elvi számításon alapuló összes hibával. A mai szoftverek komplexitása miatt a teljes hibafedés, akárcsak a hibamentesség, elérhetetlen, a cél mindig a lehető legjobb közelítés, azaz olyan tesztkészletek kidolgozása, melyek a legkisebb befektetett energiával a lehető legnagyobb hibafedést valósítják meg.
A hibákat a fenti definíció alapján két nagy körre érdemes bontani, hiszen egyáltalán nem mindegy, hogy a szoftver milyen ok miatt nem állítja elő a kívánt kimeneti adatot: lehet, hogy azért, mert a szoftver terve, specifikációja nem volt megfelelő, így az üzleti igényeket nem helyesen valósítja meg; lehet azonban azért is (és a klasszikus "hibát", azaz "bug"-ot erre értjük), mert a szoftverfejlesztők vétettek hibát, és amúgy a specifikáció (vagy az üzleti szándék) világos és helyes volt.
Amikor tehát biztonsági hibákról beszélünk, akkor szinte kizárólag programozói hibára utalunk, és a fejlesztők/szoftvergyártók szeretik is elhallgatni a sokkal fájóbb, nehezebben javítható specifikációs elégtelenségből származó hibákat.
(Forrás: www.computerworld.hu)