( enpassant | 2015. 06. 08., h – 09:21 )

"Arra sincs hatásod, hogy alatta mi történik... lásd például virtualizált környezetek. :)"

Van hatásom, hogy alatta mi történik, amit belerakok a forrásba, annak mind van hatása. Ha belerakok egy IO hívást, ami nem válaszol, annak szerinted nem lesz hatása? Ha arra gondolsz, hogy nem csak annak van hatása, akkor így igaz, de minél több egyéb hatás van kívül, annál rosszabb még nekem is tetézni ezt a hatást.

A kérdéseimre amelyikre írtál valamit, azok egyike se érdemi válasz.

"Annyit tegyél bele, amennyivel értéket tudsz teremteni az ügyfél számára..."
Ezt hogy kell elképzelni? A fejlesztőknek mondod: "Srácok mindenki tehet IO-t a tesztelendő kódjába, de csak annyit, amennyi az ügyfél számára értéket teremt!"?
Itt egy adatbázis olvasás, ez értéket teremt, akkor ezt belerakom, itt egy írás, ezt is. Így?

"Csak I/O? Miért nincs CPU vagy memória poharad?"
Van CPU és memória poharam is, csak azok sokkal kiszámíthatóbbak. Illetve, ahol gond lehet, azokat se rakom be a unit test-ekbe, hanem a stress illetve performancia tesztekbe teszem be.

"Ezt csak az I/O befolyásolja? Hm... mik nem vannak."
Állított valaki ilyesmit? A kérdésre a válasz?
Van egy adatbázis hívásod a kódban, ami lefut 1ms alatt. Leáll a külső adatbázis, 2 óra alatt tudják a rendszergazdák megjavítani, vagy elmegy a net, akkor addig nem tudsz unit tesztet futtatni.
Ha jól értelek, akkor ez sem gond, mivel majd kijavítják és onnantól majd tudom futtatni a unit tesztjeimet, általában 1mp alatt, néha 5 perc, nagy ritkán 2 óra.

"ha ezzel öt perc alatt kész a unit teszt, ha pedig eliminálom az I/O-t, akkor két hétig szüttyögök és trükközök"
Igen, nem feltétlen egyszerű, sok esetben programozási paradigmát és/vagy módszertant kell hozzá váltani. (Hülyeség, mert nekem nehéz?)

Akkor még egy pár kérdés az előbbiekhez (bár nagy reményeim nincsenek):
Ha IO van a kódban, akkor elvileg le kell-e tesztelni az esetlegesen előforduló IO hibákra (lassan válaszol, nem válaszol, többször válaszol, ...)?
Ha le kellene tesztelni, akkor hogyan?
Származik-e abból előny, hogy párhuzamosan futtathatók a tesztek?
Ha IO-t tesztelsz, akkor származhat-e abból gond, hogy párhuzamosan futnak a tesztek?

Rá lehet mondani erre az elvre, hogy baromság, de ha be tudod tartani, akkor számtalan előny keletkezik, ha meg nem, akkor hátrány.