abclinuxu.cz AbcLinuxu.cz itbiz.cz ITBiz.cz HDmag.cz HDmag.cz abcprace.cz AbcPráce.cz
AbcLinuxu hledá autory!
Inzerujte na AbcPráce.cz od 950 Kč
Rozšířené hledání
×
    dnes 02:22 | Zajímavý software

    Hru The Legend of Zelda: Twilight Princess od společnosti Nintendo si lze nově díky projektu Dusklight (původně Dusk) a reverznímu inženýrství zahrát i na počítačích a mobilních zařízeních. Vyžadována je kopie původní hry (textury, modely, hudba, zvukové efekty, …). Ukázka na YouTube. Projekt byl zahájen v srpnu 2020.

    Ladislav Hagara | Komentářů: 0
    dnes 01:11 | Nová verze

    Byla vydána nová major verze 29.0 programovacího jazyka Erlang (Wikipedie) a související platformy OTP (Open Telecom Platform, Wikipedie). Detailní přehled novinek na GitHubu.

    Ladislav Hagara | Komentářů: 0
    včera 21:22 | Bezpečnostní upozornění

    Po zranitelnostech Copy Fail a Dirty Frag přichází zranitelnost Fragnesia. Další lokální eskalace práv na Linuxu. Zatím v upstreamu neopravena. Přiřazeno ji bylo CVE-2026-46300.

    Ladislav Hagara | Komentářů: 0
    včera 14:00 | Komunita

    Sovereign Tech Agency (Wikipedie) prostřednictvím svého fondu Sovereign Tech Fund podpoří KDE částkou 1 285 200 eur.

    Ladislav Hagara | Komentářů: 4
    včera 12:55 | IT novinky

    Google na včerejší akci The Android Show | I/O Edition 2026 (YouTube) představil celou řadu novinek: Gemini Intelligence, notebooky Googlebook, novou generaci Android Auto, …

    Ladislav Hagara | Komentářů: 0
    včera 12:33 | IT novinky

    Evropská komise by do léta mohla předložit návrh normy omezující používání sociálních sítí dětmi v zájmu jejich bezpečí na internetu. Prohlásila to včera předsedkyně EK Ursula von der Leyenová, podle níž řada zemí Evropské unie volá po zavedení věkové hranice pro sociální sítě. EU částečně řeší bezpečnost dětí v digitálním prostředí v již platném nařízení o digitálních službách (DSA), podle německé političky to však není dostatečné a

    … více »
    Ladislav Hagara | Komentářů: 38
    včera 04:11 | Nová verze

    Multiplatformní open source aplikace scrcpy (Wikipedie) pro zrcadlení připojeného zařízení se systémem Android na desktopu a umožňující ovládání tohoto zařízení z desktopu, byla vydána v nové verzi 4.0.

    Ladislav Hagara | Komentářů: 0
    12.5. 23:22 | Pozvánky

    Chybí vám někdo, s kým byste si popovídali o bastlení, technice, počítačích a vědě? Nechcete riskovat debatu o sportu u piva v hospodě? Pak doražte na virtuální pokec u virtuálního piva v rámci Virtuální Bastlírny organizované strahovským MacGyverem již tento čtvrtek. Možná se ptáte, co se tak může probírat? Dají se probrat slavná výročí - kromě 55 let obvodu 555 (což je mimochodem prý andělské číslo) a vzpomínky na firmu Signetics -

    … více »
    bkralik | Komentářů: 2
    12.5. 23:11 | Zajímavý software

    GTK2-NG je komunitní fork GTK 2.24 (aktuální verze je 4.22). Oznámení a diskuse v diskusním fóru Devuanu, forku Debianu bez systemd. Není to jediný fork GTK 2. Ardour je například postaven na vlastním forku GTK 2 s názvem YTK.

    Ladislav Hagara | Komentářů: 0
    12.5. 17:33 | Pozvánky

    V neděli 17. května 2026 proběhne v Českých Budějovicích první MobileLinux Hackday zaměřený na Linux v mobilech, embedded platformy a open source hardware. Po sedmi úspěšných měsíčních setkáních v Praze se akce přesouvá také do jižních Čech, aby se komunita mobilního Linuxu mohla potkat i mimo hlavní město. Akce se uskuteční v konferenčním sále Vajgar v Clarion Congress Hotelu (Pražská tř. 2306/14) se zahájením mezi 14:00 až 15:00 a … více »

    lkocman | Komentářů: 0
    Které desktopové prostředí na Linuxu používáte?
     (13%)
     (8%)
     (2%)
     (14%)
     (31%)
     (4%)
     (6%)
     (3%)
     (16%)
     (25%)
    Celkem 1603 hlasů
     Komentářů: 30, poslední 3.4. 20:20
    Rozcestník

    Jednotkové testy času

    27.8.2009 08:43 | programování | poslední úprava: 27.8.2009 09:07

    S časem je v jednotkových testech maličko problém. (Co když chci otestovat například funkci, která parsuje data s ohledem na aktuální datum?) V dynamičtějších jazycích se to naštěstí dá vyřešit snadno:

    use Test::More 'no_plan';
    use Test::MockTime 'set_absolute_time';
    set_absolute_time('27/08/2009', '%d/%m/%Y');
    # A jedeme.
    
    Základ Test::MockTime je přitom jednoduchý:
    BEGIN {
    	*CORE::GLOBAL::time = \&Test::MockTime::time;
    	*CORE::GLOBAL::localtime = \&Test::MockTime::localtime;
    	*CORE::GLOBAL::gmtime = \&Test::MockTime::gmtime;
    }
    
           

    Hodnocení: 17 %

            špatnédobré        

    Tiskni Sdílej: Linkuj Jaggni to Vybrali.sme.sk Google Del.icio.us Facebook

    Komentáře

    Vložit další komentář

    27.8.2009 13:02 Tomáš
    Rozbalit Rozbalit vše Re: Jednotkové testy času
    Nebylo by lepší používat anglický název unittest? Programátorům to řekne víc.

    K tomu času: pokud se to nedá jednoduše oblafnout, tak to bych to řešil tak, že hodnotu zkontroluji jenom jestli tam něco je a nechám to být. Případně v testu se někdy dá načíst stejná hodnota nezávisle, a pak se dá porovnat. Má to výhodu, že člověk zjistí, co mu tam vlastně chodí (ono se to liší podle platformy a člověk pak nevěřícně kouká, co to tam je za blbost).
    zoul avatar 27.8.2009 13:51 zoul | skóre: 43 | blog: | Boskovice
    Rozbalit Rozbalit vše Re: Jednotkové testy času
    Když je k dispozici pěkný český překlad, dávám mu přednost. Jednak se většinou líp skloňuje a jednak výsledný text nevypadá jako výstup z automatického překladače :) Kontrolovat jen jestli funkce vůbec něco vrací je blbý, protože alespoň v tom mém případě je podrobná kontrola parsovaného data hlavní pointa testu. Nezávislé načtení hodnoty (tj. nějaké testovací rozhraní nezávislé na zbytku systému, globálním stavu) je samozřejmě ideální, to se shodneme. Přesně to ale v podstatě dělá právě Test::MockTime.
    Marek Bernát avatar 27.8.2009 20:52 Marek Bernát | skóre: 17 | blog: Arcadia
    Rozbalit Rozbalit vše Re: Jednotkové testy času

    Sorry, že si musím zasa rýpnuť, ale mne to práve ako z automatického prekladača pripadá. Vždy som unit testy bral tak, že slovo unit tam znamená najmenšia časť kódu, ktorá robí niečo užitočné v danom kontexte. Takže "testovanie častí" je podľa mňa oveľa lepší preklad. Jednotkový test znie skôr ako keby tam išlo o nejakú jednotku v zmysle čísla, alebo o fyzikálne jednotky. Málokto si slovo jednotka predstaví ako časť celku.

    A btw, ten tvoj problém som absolútne nepochopil, zbytočne v blogu šetríš slovami. Mohol by si to vysvetliť trochu lepšie, že čo sa snažíš dosiahnuť, a prečo by to v iných jazykoch nefungovalo?

    physics.stackexchange.com -- Q&A stránky o fyzike v štýle StackOverflow.
    zoul avatar 27.8.2009 22:01 zoul | skóre: 43 | blog: | Boskovice
    Rozbalit Rozbalit vše Re: Jednotkové testy času
    (1) Jde o zavedený překlad, to jsem si nevymyslel. (2) „Unit“ se jako „jednotka“ překládá i v jiných kontextech, takže je to dobré dodržet i tady. (3) Výraz „jednotka“ mi jako označení základních stavebních bloků nepřipadne zlý. „Testování částí“ by klidně mohlo být testování složitejších částí systému, například autentizačního systému a podobně. Ve výrazu „unit“ jde právě o tu nedělitelnost.

    V blogu šetřím, protože ho používám především jako poznámkový blok. Na víc nemám čas ani ambice. Pokud se někdo s problémem času v jednotkových testech setkal, bude vědět, o čem mluvím, takže článek přeci jen není pouze pro mě. (Doufám.)

    Jeden ze základních problémů jednotkových testů je izolace testovaných komponent od zbytku systému. Pokud se kus kódu nedá rozumně izolovat, nedá se rozumně testovat. Ideální je, když může člověk testovanou komponentu samostatně zapojit v „laboratorním“ prostředí, kde má všechny vstupy pod kontrolou. Test je pak deterministický a jednoduchý. Pokud komponenta pracuje s reálným časem, závisí na nějakém globálním stavu systému, a tahle závislost komplikuje testování.

    Jedna možnost, jak tuhle závislost vyřešit, je připsat testovací rozhraní. Nějakou „diagnostickou konzoli“, která umožní nahradit reálný čas laboratorním časem, na kterém se dají dobře odzkoušet všechny hraniční případy. Pokud tomu dobře rozumím, ve statických jazycích se to často řeší pomocí inversion of control. Pokud je jazyk dynamičtější, nabízí se jednodušší řešení, kterému se říká monkey patching – člověk prostě nahradí část testovaného kódu nebo runtimu svým vlastním kódem, který poslouží jako potřebné testovací rozhraní.

    V postu jsem chtěl především upozornit na šikovný perlový modul, který umožňuje v testech nafixlovat reálný čas. Pokud někdo pracuje v Perlu a potřebuje testovat nějaký kód, který si hraje s časem, možná mu přijde vhod. Na ukázce zdrojáku je pak vidět, jak jednoduše se dá takový monkey patching provést.
    Marek Bernát avatar 28.8.2009 00:44 Marek Bernát | skóre: 17 | blog: Arcadia
    Rozbalit Rozbalit vše Re: Jednotkové testy času

    Ok, to znie vcelku rozumne. Ale ja, ak dovolíš, sa budem držať názvu unit test :-)

    Jj, viem presne o čo ide v unit testoch, len som nepochopil ten tvoj problém kvôli tomu, že sám už pracujem prakticky výlučne v dynamických jazykoch a tam je to, ako hovoríš, triviálne, takže ani nemá cenu to rozoberať :-) A ešte jednoduchšie je to, ak človek pracuje vždy s REPLom a len si naťahuje skompilovaný kód (bežná práca s Lispom cez SLIME), a ešte oveľa viac v Squeaku, kde nič ako program ani neexistuje, ale všetok kód stále beží -- to je tá tvoja diagnostická konzola, len dotiahnutá ešte oveľa ďalej.

    V statických jazykoch je to holt ťažké a človek si bez nejakých nadbytočných hookov a patternov asi neporadí. Samozrejme, záleží od toho, v ktorých statických jazykoch. Napríklad taký Haskell je čisto funkcionálny, takže pojem stav neexistuje a stačí kontrolovať len vstupy/výstupy každej funkcie -> ideálna situácia pre testera :-)

     

    physics.stackexchange.com -- Q&A stránky o fyzike v štýle StackOverflow.
    default avatar 29.8.2009 16:08 default | skóre: 22 | Madrid
    Rozbalit Rozbalit vše Re: Jednotkové testy času

    Já tohle řešil. Při analýze jsem vycházel ze zkušeností se špatně napsanou aplikací. Ta aplikace má totiž rozdělenou business logiku. Jedna část je v Javě a druhá — na jiném stroji — v databázi. Aplikace zahazuje čas; ukládá jen datum. To se jeví jako elegantní obejití problému s vyhledáváním (netřeba porovnávat na rozsahy). Co už ale hoši nedomysleli, je způsob práce této aplikace. Ta totiž největší práci dělá přes noc. A v noci se děje co? No láme se datum. :-D

    Takže já ve svých komponentách zavedl pojem business date. Naprogramovat pro to provider je triviální. Na první pohled si člověk řekne, co že to je za hovadinu: obalovat SYSDATE. Ale těch providerů může být několik. Jeden vytáhne datum z aplikáče, druhý z databáze, třetí odněkud odjinud. Navíc to business date je konstantní pro všechny komponenty po celou doby noční dávky.

    Ale ta hlavní výhoda spočívá právě v těch tvých jednotkových testech času (mimochodem — až z diskuze jsem pochopil, co ten termín skutečně znamená). Prostě napíšu Mock Provider, kterej to datum tahá z konfiguráku. :-D Klidně si ten Mock objekt můžeš předat pomocí IoC. :-D

    Osobně si troufám tvrdit, že když nějaký proces potřebuje ke své činnosti datum, pak to datum má být parametrem. Takže je to spíš takový workaround na špatně navrženou (naimplementovanou) aplikaci.

    Ale jinak je to všechno v pořádku. Občas potřebuješ otestovat něco, co prostě není úplně ready. Jako to tady děláme my pořád dokolečka s tou aplikací, kterou jsem popsal v úvodu. A jako že je to zábava udržovat testovací datum na několika strojích, když by stačil konfigurák. :-D

    Založit nové vláknoNahoru

    ISSN 1214-1267   www.czech-server.cz
    © 1999-2015 Nitemedia s. r. o. Všechna práva vyhrazena.