Csak a tesztemen keresztül!

Szakmai gondolatok informatikai rendszerek teszteléséről.

Gazda

Friss topikok

  • Akron: @Verhás Péter: Az ügyfeled a cég (vezérigazgatóval, Józsi nénivel) A cég ellenőrzi le és veszi át ... (2018.01.31. 14:09) Miért UAT
  • Verhás Péter: @ hrgy: Egy kicsit felhúztam magam, de sebaj. A lényegi állításokban igazad van, ám a személyekre... (2011.10.09. 00:25) A tesztelés nem mindenható
  • crix: Ez a hozzáállás. Sajnos most is. Aztán csodálkoztak itt a népek, amikor bevállaltam a hétvégi munk... (2011.10.05. 16:56) Újra fizetni kell
  • crix: és milyen specifikáció mentén ment át az ügyfél? elég blind? (2011.10.05. 13:41) Ügyfélteszt
  • fqqdk: fitnesse, concordion, és cucumber integráció lesz? (2011.03.05. 13:42) Automatizált tesztelés és üzleti tesztelés

Társblogok

Blog

Szakmai gondolatok informatikai rendszerek teszteléséről.

A minőségi szoftverhez három dolog kell: tesztelés, tesztelés és tesztelés.

Így tesztelünk mi.

Linkblog

Hogyan érjük el, hogy teszteljünk?

2009.05.18. 15:50 | Verhás Péter | 6 komment

Szoftverfejlesztés közben tesztelünk, mert jó. Számomra sok esetben a kódolás során az okoz örömet (flow) amikor elindul a program, elkezd működni, azt csinálja amit én akarok. Olyankor én vagyok az Isten. (Tudom, cseppnyi az én világom, de mégiscsak én teremtettem. Rajzolj nekem egy bárányt!)

Idáig tart az élvezet, és sokszor a hobbiprogramozás esetében itt véget is ér a tesztelés. Ezzel pedig a minőségi szoftver készítés nem csak véget ér, de el sem kezdődött. (OFF: Ez sajnos nagyon gyakran jellemző az OpenSource programok készítőire, és így az OpenSource programokra is, és ezért van sokakban előítélet, hogy ami OpenSource az szár. Pedig nem.)

A profi programot teljes körűen kell tesztelni (amennyire teljes körűen lehet, vagy amennyire teljes körűen érdemes/ erről később esetleg majd másik bejegyzésben). Ez meg már nem olyan élvezetes, nem jön olyan gyakran a flow érzés. Ugyanolyan lapátolós kubikos munka, mint a dokumentáció írás, csak éppen enélkül, mint ahogy dokumentáció nélkül sem megy a dolog.

Mi a teendő?

A szokásos válasz rendkívül egyszerű:

a szár munkát is el kell végezni, tesztelni kell. Főnökök korbácsot elő és addig nincs shipment, release és fizetés, amíg a tesztek nincsenek készen!

A nagy kövér veri a dobot, az őrök korbáccsal járnak a sorok között, a rabok meg eveznek a gályán, és a hajó révbe is ér (vagy elsüllyed). Nem lenne sokkal jobb vitorlázni? Gőzhajó? Netán hatalmas dízel motorok? Atommeghajtású Mary Queen II? Kurszk? Hova is akarunk menni? Azért néha jó a kenu is!

Csattog a korbács és a tesztek készen is lesznek, a programok pedig hibásak maradnak. Miért is? Mert a programozó nem kubikos földásó munkás, és nem is favágó sem pedig nem gályarab. Nem kilométerben gyártja az árkot és nem köbméterben vágja a fát, se a programokat nem milligrammra készíti. A programozó szabad madár, kreatív munkára termett, ha bezárják elpusztul, megszűnik programozó lenni, jobb esetben megszökik.

Az igazi programozó képtelen megbízhatóan tesztelni, legfeljebb ideig, óráig, aztán besokall, és elkezdi rosszul végezni a munkáját. Először csak a tesztelést, aztán a fejlesztést is, és utána rosszabbodik a helyzet: elkezd inni, veri a feleségét, gyerekét, vagy csak más munkahely után néz.

A válasz rendkívül egyszerű:

Legyen a tesztelés is fejlesztői munka.

Szokatlan? Annyira nem. Aki például Java nyelven fejleszt az szinte biztosan ismeri a Unit teszt fogalmát, és a Java-ban ehhez társuló Junit könyvtárat. Minden egyes unit-hoz, programozási egységhez egy, vagy több tesztet írunk, amelyeket minden fordítás után lefuttatunk. Ez egyértelműen a programozó dolga. Sokan azt vallják, hogy a unit teszteket a tervezést követően, és még a unit kódolása előtt kell megírni.

És mi a helyzet a felhasználói tesztekkel? Azokat kézzel kell végigcsinálni? Úgy szokták. De nem lehetne automatizálni?

Terheléses teszt? Beégetési, stabilitási (burn-in) teszt? Ezeket nem is nagyon lehet automatizálás nélkül végrehajtani.

Automatizáljunk minden tesztet!

Valahol a végén persze kell, hogy legyen egy ember (aki már tényleg nem fejlesztő), aki a teszt végső eredményét ellenőrzi. De ne ember legyen, aki leellenőrzi 12,874 darab tesztesetben, hogy klikkentés hatására valóban megváltozott a form harmadik sora, és piros lett a mikulás orra az ikonon ha megnyomtam az „alkohol” gombot, de ha nem, akkor maradt kék. Ezt program is el tudja végezni, olcsóbban, és jobb minőségben. És nem is őrül bele. És több időnk marad bárányt rajzolni.

 

A bejegyzés trackback címe:

https://csakatesztemenkeresztul.blog.hu/api/trackback/id/tr41091661

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben és az adatvédelmi tájékoztatóban.

Pötyy 2009.05.21. 09:45:30

Őszintén?

Inkább nyomom meg 12.674-szer az alkohol gombot és ellenőrzöm, hogy megissza-e a télapó, mint írok 12.674 szkriptet, amit majd lefuttatok és ellenőrzöm 12.674 sorban, hogy mit adott vissza, bízva abban, hogy zseniálisan és hibátlanul írtam meg őket (nem). A tesztelő nem programozó. Ha az lenne, fejlesztőnek hívnák, és fejlesztene nem tesztelne.

Csak azt lehet automatizálni, ami azonos lépésekből áll. Ha a szoftvertesztelés ilyen lenne, akkor nem diplomás emberek foglalkoznának vele, hanem betanított munkások...

verhasi · http://verhas.com 2009.05.21. 12:54:50

@Pötyy: Az automatizált funkcionális tesztelésnek két szintje van. Az egyik az üzleti szint ahol tesztelőre van szükség, hogy meg tudja fogalmazni a tesztet oly módon, hogy az valóban az üzleti igényeket fedje le. A másik szintje, ami az előzőt kiszolgálja az a technikai szint. Az automatizált funkcionális tesztek technikai szintű kidolgozásához valóban programozóra van szükség. Ez a programozó nem tesztel, hanem fejleszt, méghozzá olyan eszközt amit aztán a tesztelő fel tud használni, hogy hatékonyabban végezze a munkáját. Hatékonyság alatt értem például azt is, hogy a diplomája mögött meglévő tudást kelljen minél inkább használnia és minél kevesebb betanított munkát végezzen.
A gálya és a gőzhajó között nem csak a meghajtó erő forrása változott, hanem a lapátok formája és elhelyezkedése is.

fqqdk 2009.05.30. 15:34:43

Az egységtesztelés egyik legfontosabb feladata az, hogy regressziós tesztcsomagként minden egyes módosításnál védőhálóként szolgáljon, ellenőrizze azt, hogy a legutolsó módosításod nem rontott-e el valamit. Azért nehogymár abban az illúzióban éljünk, hogy a télapó viselkedésére csak a télapó osztályban való turkálás lehet hatással. Pláne egy szarul tervezett rendszernél, amikor a télapó véletlenül valami vicces módon integrálva van a szánnal, és te erről semmit nem tudsz amikor épp átírod a szánt benzinesről dízelesre...

fqqdk 2009.05.30. 15:45:22

Ami azt illeti, az egységteszteket a programozónak kell írnia, és a programozónak kell futtatnia is, még mielőtt kommitolna a verziókezelőbe. Sőt, lehetőleg minden egyes ctrl+s után. Sőt, lehetőleg úgy, hogy ezt az IDE megcsinálja neki, szép grafikusan. Mindenki mindig a szoftver külső minőségével van elfoglalva (nem ír ki hülye hibaüzenetet, nem törik szét a dizájn), holott az iszonyatos pénzek meg idők arra csesződnek el, hogy förtelmes belső minőségű kódok tonnáiban turkálgatunk, csigalassúsággal. Merugye elmondják ám az iskolában, hogy programozzunk modulárisan, meg olvashatóan, de nem igazán mutatnak rá masszív, prodáksön kódot, ami olyan is lenne.
A Test Driven Developmentnek az az egyik legfontosabb előnye, hogy amikor előbb írod meg a tesztet, garantálod, hogy a kód utána tesztelhető lesz. A tesztelhetőségnek meg eléggé komolyan feltétele az, hogy a kódod _tényleg_ moduláris legyen.

PeterBogyo · http://ujbuda.kutyaiskola.eu 2009.06.23. 10:02:13

Nem azért h reklámot csináljak, devan egy cég akinek kíváló load és funkcionális tesztelő eszközei vannak. ezekkel megoldható az automatizált tesztelés. Elég sok felületet ismer és rengeteg adatot képes szolgáltatni a tesztelt alkalmazásról és annak környezetéről. Érdemes ezeket megnézni és használni, mert jelentősen csökkenti a hibák számát, és még idejében feltűnik ha vmi mégse olyan kerek.
Ráadásul garantálni tudja a regressziós teszt körét is, mivel megismételhetővé és összevethetővé teszi a teszteket

Verhás Péter · http://csakatesztemenkeresztul.blog.hu 2009.06.23. 10:43:03

>Nem azért h reklámot csináljak,

Még szerencse, mert ez a blog nem azért van,hogy másoknak reklámot csináljon.

>egy cég akinek kíváló load és
>funkcionális tesztelő eszközei vannak

Nem csak egy van.
süti beállítások módosítása