Általában a fejlesztők feleslegesnek vagy szükségesnek gondolják a tesztelők munkáját?
Miután a tesztelés a szoftverfejlesztés egy nem is annyira elhanyagolható része mit gondoljak? Szükséges. Persze az ember teszteli a saját tudása szerint, de általában amikor egy-egy részt fejlesztek egy nagyobb projektben az adott részt tésztelem is. De amikor beteszik az egészbe aazt már nem én tesztelem. Meg rengeteg dolgot megtalálnak amire esetleg vagy a tervezésnél vagy a programozásnál nem gondoltunk. A saját gondolatmenetem aszerint tesztelem a saját kódomat.
Pl. vegyünk egy olyan játékot, hogy van A B C D E F szoba. Az A-ból elmehetsz B és C szobába, a C-ből D-be és E-be is. Az F-be csak B-ből. A játék abból áll, hogy szedd össze az összes szobában lévő kincset. És mindegyikben van egy-egy ajtó azokba a szobákba ahova tovább mehetsz. És mindegyik szobában más feladatot kell végrehajtani a kincs megszerzéséhez. Mindegyik szobát másik programozó készíti. Én megírom A szobát, és leellenőrzöm, hogy B-be és C-be át tudok menni. ("állapot automata"). Aki a B-t készíti ugyanezt megcsinálja B szobával. Majd összerakják az egészet és kiderül, hogy valami rejtett hiba miatt A-ból el lehet jutni F-be is ha előtte B-ben jártál. Ezt már csak az tudja végig tesztelni akinél ott a teljes projekt. És rengeteg ilyen van.
Ugyan kezdő szintű feladat, de hasonló előfordulhat "nagyban is" (azért ezt a példát hozom, mert ezt egy kezdő is átlátja). A feledat kérj be 3 számot, ami egy háromszög három oldalának a hossza. A program számítsa ki ebből a háromszög területét.
Megírod a programot (nem is annyira bonyolult, több matek eljárás is van rá). Leteszteled egy rakás esetre. Aztán beadod a tanárnak és megkapod rá az 1-esedet, mert kihagytad, hogy nem ellenőrzi, hogy a három adat lehet-e egy háromszög három oldala (ún. háromszög egyenlőtlenség teljesül-e). A saját gondolatmeneted szerint végig tesztelted, de egy külső tesztelő más szemléletet követ. OK kijavítottad a programodat, mostmár tesztel háromszög egyenlőtlenségre is, aztán megint 1-est kaptál rá, mert elfogad negatív oldal hosszt is. Mert az se jutott eszedbe. Nyilván a példa az kicist "eröltetett" mert ez egy nagyon kezdő szintű feladat de nagyban előfordulhat.
Másik példa (ezt mi követtük el, nem is vagyunk rá büszkék). Készítettünk egy adatgyűjtő-adatelemző rendszert, mindenre leteszteltük, teljesen frankón működött is. /tesztelő nem kell, mert nem olyan nagy a projekt.../. Eltelt közel félév és jött 2006. október 29. vasárnap hajnal 3 óra /emlékszem mert az nap született a lányom is, a kórházból rohantam az irodába/. És az egész összeborult, az adatbázist telef*ta mindenféle elképzelhetetlen adattal (pár óra alatt néhány száz millió rekordot azért sikerült betennie) és kb. délután 4-kor megállt az adatbázis szerver (addigra telt be a diszk), és álltak le sorban a lényegesebb szolgáltatások. Töröltünk pár ezer feleslegesnek vélt rekordot pár percig ment, megállt. Viszonylag hamar rájöttünk, hogy melyik alkalmazás f*ssa tele az adatbázist szeméttel. A hiba annyi volt, hogy lokális időt használtunk (1. súlyos hiba), és ebből számolt a program időkülönbséget, és amikor átállították az órát 3-ról 2-re negatívvá vált az időkülönbség (erre nem ellenőrzött a program 2. súlyos hiba) és innen kezdve a program amilyen sebességgel csak bírt próbálta az állapotokat rögzíteni, tolni be az adatot az adatbázisba (a lokális cache-ek nem teltek be, mert előtte kaptak valami irgalmatlan méretű diszket, és volt rajtuk hely, adatgyűjtő gépből volt ha jól emlékszem talán 30 db. és egy darab adatbázis szerver). Volt még egy hiba (nem a lokális cache-ből nézte vissza azt, hogy mi az utolsó időpont amihez képest el kell dönteni, hogy kell-e új adatot rögzíteni, hanem vissza olvasta az adatbázisból, de miután 30 gép tolta be a szemetet az adatbázisba, az nem bírta tempóval és az utolsó adat mindig késett, továbbra is negatív volt az időkülönbség 3. súlyos hiba) és ebből az állapotból ki se bírt már kerülni a program. Nyilván a saját logikánk szerint minden jónak tűnt. És ha a 3 hibából csak 1-et nem követünk el valószínűleg nem borul össze az egész. És ezt egy korrekten végig vitt tesztelő kiszűrte volna, mert ő nyilván nem a mi "hibás" gondolatmenetünk szerint teszteli végig. Nekem tanulságos eset volt.
Van a másik véglet, hogy az üzlet se gondolja át az igényét. Lerak egy igényt az asztalra, hogy ezek a feltételek mentén ezt-és-ezt csinálják meg az IT-sek. Ebből alakul ki a teszt esetek, amiket a programnak teljesítenie kell, majd a fejlesztők ezzel párhuzamosan lefejlesztik.
Fejlesztő jól végezte a dolgát, tesztelők is mindent rendben találtak. Üzlet is boldog, mert a kért igényt teljesítették. Majd mehet ki production-be. Csak lett egy sérülékenység az egészben, és újságcikkek jelennek meg, mert mondjuk összeomlott a rendszer.
Szükségesnek tartom, csak ezt sok kis cég nem engedneti meg magának vagy csak nem foglalkoznak vele.
Ahol dolgozok, tesztelők vannak és teszelik is rendesen, viszont az unit/integrációs tesztek el vannak hanyagolva, amire szintúgy szükség lenne, még mielőtt a fejlesztő kézbe kapja a tesztelni való programot.
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!