Tudományosan igazolt: az opensource jobb módszer

Ben Liblit doktori diszertációja a valós világban előforduló szoftver hibák megértése, és kijavítása címet viseli. A disszertáció vizsgálatai alapján az opensource nem amiatt jobb, mert több a beta teszter. Módszerében is jobb, tehát azonos mennyiségü beta teszter esetén is jobb eredményt produkál, mint a szokásos zárt szoftverfejlesztési módszer.Az ok: az opensource (devel ág) felhasználók random adatokon tesztelnek, míg a szokásos módszernél az összes lehetséges esetet próbálják végignézni, és "listából" dolgoznak. (vagyis az opensource Monte Carlo-val, míg a régi módszer lineáris módon tesztel).
A disszertáció azért került a figyelem középpontjába, mert megnyerte a Association for Computing Machinery (ACM) 2005 Doctoral Dissertation Award-ot.
slashdot hír itt.

Hozzászólások

"Az ok: az opensource (devel ág) felhasználók random adatokon tesztelnek, míg a szokásos módszernél az összes lehetséges esetet próbálják végignézni, és "listából" dolgoznak. (vagyis az opensource Monte Carlo-val, míg a régi módszer lineáris módon tesztel)."

Hát ez meglehetősen helytelen általánosítás...

szerintem nem.
ugyanis: sok-sok user mas felhasznalasi szokas, mig egy zart koru program fejlesztesenel van egyfajta minosegellnorzesi folyamat, igy csak azokat ellenorzik le, amikkel mar korabban volt gondjuk illetve ismert hibak, vagy lehetseges hibak.

ne feledjuk el, hogy egy agyon tesztelt sw-t is egy betanitas nelkuli user par perc alatt kivegezhet, hogy olyat csinal amire mi nem gondoltunk.

A szoftvertesztelés szisztematikus folyamat kell, hogy legyen amelyben nyilvánvalóan szerepet kell kapnia a véletlenszerűségnek is. Azzal a sommás kijelentéssel nem értek egyet, hogy a zárt forrású terméket fejlesztők nem használnának véletlenszerűségen alapuló módszereket.

Hasznalhatnak.
viszont konnyen belathato, hogy csak megkozelithetik az userek tevekenyseget. ugyanis az userek csinaljak a legjobban azt, amit az userek szoktak csinalni;)) es azokban az esetekben kell _mindenkeppen_ jonak lenie a programnak, amit az userek csinalnak.
ha letesztelsz olyan esetet is, amit az userek sohasem csinalnak->felesleges munka
ha nem tesztelsz le olyan esetet, amit az userek csinalnak->potencialis hiba

Anr - http://andrej.initon.hu

Először is, minek fejlesztene bele bárki olyan funkciót egy programba (legyen akár opensource, akár nem), amit senki nem használ? Az már tervezési hiba, nem felesleges tesztelés.
Másodszor, a jó tesztelés szerintem a unit test-eknél kezdődik, amit a programozó ír és futtat, itt tehát semmit nem érnek a felhasználók.
Harmadszor, máris ott tartunk, hogy csakis olyan programok jöhetnek szóba, amelyeknek a devel verziója is legalább annyira stabil, hogy sokan merik éles üzemben használni. Egyébként vagy a felhasználók száma nem éri el a kritikus tömeget (nem sokan használják), vagy nem azt fogják csinálni, amit általában a userek szoktak (nem éles üzem, csak fölrakja megnézegetni).
Negyedszer, ha jól emlékszem itt is hír volt, hogy egy fejlesztő beírt egy levlistára, hogy milyen a jó bugreport (egy valós bejelentést hozva föl példának). Gondolom, ebből mindenki el tudja képzelni, hogy milyen lehet a beérkezők többsége.

KisKresz

teljesen ugy irsz, mint aki meg nem irt nagy programot.

en irtam. brokercegnek teljess rendszert.
kiszamoltam, ha masodpercenkent 1 tesztet hajtanak vegre a tesztelok, akkor is keves a vilagegyetem elettartama a teljes teszthez.
_nyilvan_ lehetetlen minden lehetoseget vegigtesztelni. az hogy minden funkciot letesztelsz 1-2 adattal _lofaszt_ sem er. minden olyan adattal le kell tesztelni, ami a program kodja miatt kulonfelekeppen hajtodhat vegre. meg megtippelni is nehez, hogy mekkora adathalmazzal kene letesztelni.

egyebkent itt _beta_ tesztrol van szo, nem a programozo tesztelget cimu alfa tesztrol.

>Gondolom, ebből mindenki el tudja képzelni, hogy milyen lehet a beérkezők többsége.
ha mar nagyjabol kiderul, hogy hol van valamifele hiba a programozo mar konnyeben lokalizalhatja.
tudod milyen bugreportokat kaptam en a nem opensource fejlesztesnel?
"Szar az egesz" es kiderult, hogy hianyzott az egyik view-rol egy gomb...

Anr - http://andrej.initon.hu

teljesen ugy irsz, mint aki meg nem irt nagy programot.

Pedig több, elég nagy programmal foglalkoztam már. Ennek folyományaképpen láttam már több tucat, ha nem százas nagyságrendű tesztelővel végrehajtott tesztelést is, ahol aztán a projekt mihamarabbi befejezése miatt a legalapvetőbb tesztelési szabályokat is felrúgták. Így persze csak szar programot lehetett előállítani.

kiszamoltam, ha masodpercenkent 1 tesztet hajtanak vegre a tesztelok, akkor is keves a vilagegyetem elettartama a teljes teszthez.
_nyilvan_ lehetetlen minden lehetoseget vegigtesztelni. az hogy minden funkciot letesztelsz 1-2 adattal _lofaszt_ sem er. minden olyan adattal le kell tesztelni, ami a program kodja miatt kulonfelekeppen hajtodhat vegre. meg megtippelni is nehez, hogy mekkora adathalmazzal kene letesztelni.

Ezért kellenek a fejlesztés elejétől unit testek, ezért kell szétválasztani a funkciókat egymástól független részekre, stb. Elég fura elképzelés, hogy "ez már akkora program, hogy nem is lehet letesztelni normálisan".

egyebkent itt _beta_ tesztrol van szo, nem a programozo tesztelget cimu alfa tesztrol.

Nem alfa tesztről beszéltem, hanem unit testekről.

ha mar nagyjabol kiderul, hogy hol van valamifele hiba a programozo mar konnyeben lokalizalhatja.
tudod milyen bugreportokat kaptam en a nem opensource fejlesztesnel?
"Szar az egesz" es kiderult, hogy hianyzott az egyik view-rol egy gomb...

Azért nem árt, ha a hiba reprodukálható, ami nem biztos, hogy egy bugzillában berögzített, rossz bugreport alapján lehetséges.

KisKresz