Yii projektek és a tesztek
Lenne némi elvi, illetve technikai kérdésem a Yii keretrendszer és annak tesztelésével kapcsolatban. Körülbelül egy éve nyúzom a Yii-t és már csak egy olyan égető problémám akad ami a boldogságomhoz szükségeltetik, az pedig az, hogy egy használható "tesztágyat" alakítsak ki a projektjeim köré.
Alapvetően Windows + WampServer + NetBeans7.2 felállású rendszeren fejlesztek, és eddig sikerült elérnem azt, hogy az egységtesztek rendesen lefussanak netbeans-ből vezérelve, de a funkcionális tesztekkel bajom van. A probléma az, hogy a Selenium folyton megnyitja a böngészőket és úgy futnak le a tesztek.... ez egyrészt szerintem nagyon sokáig tart, másrészt meg kicsit zavaró.
Keresgéltem a témában, hogy van-e rá megoldás, hogy mindezt háttérben vagy konzolban amolyan "böngészőszimulátorban" futtatni, és rátaláltam a webdriver-ekre, de azokkal nem tudtam mit kezdeni... Elindítottam egy chrome drivert és az általa nyitott portot megadtam a phpunit.xml selenium config részében, de a tesztek futtatásakor nem történik semmi... mintha lefagyna vagy ilyesmi.
Tehát az első kérdésem az, hogy van-e esetleg valakinek egy kézzel fogható megoldása arra, hogy a Yii funkcionális tesztjei ne az arcomba vágott böngésző ablakokban fussanak le, hanem valami háttérfolyamatként?
A második kérdésem inkább elvi mint technikai:
Van-e valami bevált módszer arra hogy, egy Yii projekt melyik részét kell unit tesztekkel és melyik részét kell funkcionális tesztekkel lefedni, a legnagyobb tesztlefedettség elérésének érdekében?
Mert szerintem szimpla egységtesztekkel nem lehet mindent lefedni. Nekem kicsit zavaros ez a téma, és elég részletes leírást nem is találtam sehol (az hogy egy példával megmutatják hogy kell tesztet írni, nekem nem mond semmit), tehát, ha esetleg valaki tudna egy részletesebb felhomályosítást írni, vagy egy kis iránymutatással szolgálni a Yii projektek "okos" tesztelési folyamatával kapcsolatban, roppant hálás lennék! :)
A segítséget előre is köszönöm!
■ Alapvetően Windows + WampServer + NetBeans7.2 felállású rendszeren fejlesztek, és eddig sikerült elérnem azt, hogy az egységtesztek rendesen lefussanak netbeans-ből vezérelve, de a funkcionális tesztekkel bajom van. A probléma az, hogy a Selenium folyton megnyitja a böngészőket és úgy futnak le a tesztek.... ez egyrészt szerintem nagyon sokáig tart, másrészt meg kicsit zavaró.
Keresgéltem a témában, hogy van-e rá megoldás, hogy mindezt háttérben vagy konzolban amolyan "böngészőszimulátorban" futtatni, és rátaláltam a webdriver-ekre, de azokkal nem tudtam mit kezdeni... Elindítottam egy chrome drivert és az általa nyitott portot megadtam a phpunit.xml selenium config részében, de a tesztek futtatásakor nem történik semmi... mintha lefagyna vagy ilyesmi.
Tehát az első kérdésem az, hogy van-e esetleg valakinek egy kézzel fogható megoldása arra, hogy a Yii funkcionális tesztjei ne az arcomba vágott böngésző ablakokban fussanak le, hanem valami háttérfolyamatként?
A második kérdésem inkább elvi mint technikai:
Van-e valami bevált módszer arra hogy, egy Yii projekt melyik részét kell unit tesztekkel és melyik részét kell funkcionális tesztekkel lefedni, a legnagyobb tesztlefedettség elérésének érdekében?
Mert szerintem szimpla egységtesztekkel nem lehet mindent lefedni. Nekem kicsit zavaros ez a téma, és elég részletes leírást nem is találtam sehol (az hogy egy példával megmutatják hogy kell tesztet írni, nekem nem mond semmit), tehát, ha esetleg valaki tudna egy részletesebb felhomályosítást írni, vagy egy kis iránymutatással szolgálni a Yii projektek "okos" tesztelési folyamatával kapcsolatban, roppant hálás lennék! :)
A segítséget előre is köszönöm!
..
A funkcionalis tesztek a controllereket tesztelik. Peldaul sikeresen be lehet e lepni, jo helyre iranyit e belepes utan a program, mukodik e a sorbarendezes egy grid nezetnel, stb.
Arra a kerdesre, hogy hogyan lehet hatterben futtatni a selenium teszteket, nem tudom a valaszt.
És ha a modelleket
Én eddig úgy képzeltem el az egységtesztelést, hogy az egymástól független osztályokat és azok metódusait lehet vele lefedni (Yii-ben pl a komponensek [általában] ilyenek). Ha egy egységteszt függ az adatbázistól (vagy bármi mástól), az már (tudomásom szerint) inkább együttműködési teszt... de lehet hogy én tudom rosszul, ezért nem tiszta nekem ez az egész. :/
De akkor elvileg az egységtesztekkel le lehet fedni mindent, ami nem a felhasználói felülettől függ?
A selenium tesztről csak annyit tudok én is, hogy pl a Jenkins képes rá valahogy... de most ezért nem akarok külön Jenkins szervert fenntartani, ha lehet akkor szeretném Windows környezetben megoldani (nincs bajom a Linuxxal, csak már túl macerás lenne egy Linuxos fejlesztői rendszert összepakolni)
Btw, köszönöm a hasznos kiigazítást!
re
Ez igy nem teljesen igaz. PHP-ban sajnos nincsenek tul jo teszt eszkozok(legalabbis en nem ismerek), ezert van az hogy ha a tesztelni kivant funkciohoz kell gy http keres, akkor azt mar selenium-al vegzi az ember ami egy komplett bongeszo. Ruby-ban peldaul a funkcionalis/controller tesztekhez nem kell bongeszo, hanem command line inditja a http kereseket a legtobb teszt eszkoz.
A futtatas gyakorisaga az igazabol toled fugg. En inkabb rubyban dolgozok tdd szerint es ott nalam ugy uj funkcio fejlesztese jo esetben igy nez ki: