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

Elvárt és nyújtott minőség

2009.12.02. 09:22 | Verhás Péter | 3 komment

Öregszem. Már nincsen mindenkiről és mindenről olyan hamar kiforrott véleményem, mint régen. És megbocsátóbb is vagyok. Ha valaki bevág elém autóval, veszélyeztetve az épségemet, nem felkoncolnám először, hanem az jut eszembe: biztos jó oka van sietni. Pedig valószínűleg többnyire nincs. A gyerekeimet sem úgy nevelném, mint ahogy tettem, amikor kicsik voltak, és amikor még én is fiatalabb voltam. Ha nem működik rendesen egy szoftver, vagy nincs rendes dokumentációja (ez utóbbira jó példa az Apache Shiro, leánynevén JSecurity), nem dobom rögtön el, mondván: ez szar, tudok ezerszer jobbat írni (pedig de tényleg).

Levelezünk a JavaListán (javalist@javagrund.hu), és vélhetően fiatalabb kollégám szememre veti elnéző megfogalmazásomat. Azt találtam mondani, hogy egy szoftverben nem olyan nagy baj, ha egy hibás használat során (nem felhasználói hiba, hanem programozói hiba, programból nem úgy használunk egy drivert, mint ahogy azt kell) nem definiáltan működik, esetleg nem kezeli le azt a hibát, amelyet nem is ő követett el, hanem az a programozó, aki felhasználta a könyvtárat. Ki lettem oktatva, hogy pedig erre oda kell figyelni, és a konkrét esetben milyen egyszerű lett volna, és írjak csak én is olyan kódot, ami nem dúlja fel az egész rendszert a másik programozó apró hibája miatt.

Ebben igaza van kollégámnak, és meg is írtam neki, hogy egyetértünk. Ha tehetem nem írok ilyen kódot (persze nem szándékosan becsúszhat ilyen hiba, bármilyen: ezért működnek az atomreaktorok 40 éves, kipróbált technológiákkal (remélem)), de ha valakinek ilyen sikerül még nem kiáltom azt, hogy szar. Mert ez van. Ha szar, akkor szar. Akkor ezzel kell trágyázni. De még mindig jobb, mintha még Perl-ben kellene programozni (vagy nem?).

Nem úgy működik a program, mint ahogy várom. Na de hogy jövök én ahhoz, hogy várjak valamit? Maximum a dokumentáció alapján. Mit mond a JavaDoc? Sokszor semmit. Üres, kigenerált oldalak érdemi információ nélkül. Persze a metódusok nevei is lehetnek beszédesek, de azért mégis. A Javadoc az osztály, a metódus specifikációja. Ha nincs, akkor nincs specifikáció. Ha nincs, akkor nem lehet azt mondani, hogy a program unit szinten megfelel a specifikációjának, mert az nincs neki. Akkor azt sem lehet mondani, hogy hiba van benne, vagy, hogy nincs benne hiba.

Ugyanakkor azt látom, hogy olyan fejlesztő csapatok, mint az Atlassian gyakorlatilag nem írnak JavaDoc-ot. Lehetetlen mennyiségű unit tesztjük van (az jó, azt szeretjük), de JavaDoc szinte nulla.

Nemrég debuggoltam egy programot, amit hárman írunk. Nem működött egy funkció. Nézem a kódot: nem rosszul működik, hanem nincs implementálva. Elkezdem írni. Rákeresek egy metódusom nevére: nézd már! Ilyen van máshol is. Akkor ez mégis implementálva lett? És hol használja a projekt ezt az osztályt? Sehol. (bummer). Hogyan kellene használnom (ne írjam meg már mégegyszer). Nézem a kódot: értem. Majdnem jó, de hibás. Beleírok. Fel is kommentelem... hamár. Aztán nézem tovább. Következő metódus. Ez épp azt csinálja, ami az előzőből kimaradt. Ja, hogy ezt meg kell hívni a másik előtt. JavaDoc nem mondta, mert nem volt. Vissza a javításom, JavaDoc módosít.

Hogy csinálja az Atlassian JavaDoc nélkül? És hogyan használjam az Apache Shiro-t rendes dokumentáció nélkül? Hogyan döntsem el, hogy melyik a jövő útja? Apache Shiro? JAAS? Spring Security (leánynevén acegi)? A Seam egyes, erre a kérdésre adott részei? Bezzeg a Microsoft megoldások, vagy az ORACLE. Tonnaszámra van dokumentáció, sokszor nem is rossz, akár bele is fulladhatok.

Erről eszembe jutott az emberorvos, meg az állatorvos története, amikor az állatorvos megbetegedett, kihívta az emberorvost. Megkérdezi az ember orvos: mi a baj? hol fáj? Mire az állatorvos: "Ja, úgy könnyű!"

Hol van a dokumentáció? "Ja, úgy könnyű!"

Persze ha könnyű lenne, akkor nem lenne olyan élvezetes, nagyobb lenne a konkurencia, minden más hülye is programozással foglalkozna, és annyi munka se csurranna, mint amennyi kevés most a válság idején.

Olvasom a kevés dokumentációt az open source programokról... Lesz munkánk.

 

A bejegyzés trackback címe:

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

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.

zmb 2009.12.02. 17:01:07

Hat, lehet rosszabb annal, ha nincs kommentezve a forras. Ha elavult a komment, es jol bevisz az erdobe. Az finom. Ha nincs komment, akkor az nem gaz. Ha jo a kod, akkor ki lehet debuggolni ami erdekes, es a megfelelo helyre be lehet pottyantani a modositast, ha meg kokany, akkor ugyis csak beferceli az ember valahova, aztan mehet.

tvk · http://kodzaj.blog.hu 2009.12.02. 17:27:37

Érdekes témákat feszegetsz.

A fejlesztésre rendelkezésre álló idő és pénz általában kevesebb, mint ami a tökéletes termékhez kellene. Éppen ezért gyakran sorrendbe kell tenni a feladatokat és valljuk be, a nem rendeltetésszerű használatból adódó hibák kezelése igencsak kis prioritású.

fqqdk 2009.12.10. 17:43:21

Az olvasható tesztek dokumentációként is működnek. Amikor egy ilyen borzalmas temporal couplingot csinálok, hogy egy metódust egy másik előtt _kell_ hívni, akkor lesz egy teszt, amit kb úgy fognak hívni, hogy BarShouldOnlyWorkIfFooWasCalledBeforeIt, és testdoxszal vagy hasonlóval ebből lesz egy navigálható, kereshető doksi.
Ráadásul a tesztekből generált dokumentációval még az a szinkronizációs probléma sem léphet fel, ami a sima kommenteknél. Ha a kód megváltozik, akkor a tesztnek is meg kell változnia. Az a fejlesztő, aki veszi a fáradságot, és odamegy a tesztet utánahúzni a kódnak, az a nevét, és a belőle generált doksihoz szükséges más dolgokat is ki fogja javítani.
süti beállítások módosítása