CDI.CZ – vývoj software na zakázku, tvorba webových stránek

by Lukáš Bílek

Testování

Preferujeme agilní styl vývoje softwarových aplikací, které s sebou nese i vlastní způsob testování.

Veškeré aplikace testujeme průběžně, a to nejen my, jako dodavatel, ale testujeme i na straně zákazníka. Průběžné testování má pozitvní vliv na udržení stálé funkčnosti aplikace.

Typová kontrola kódu

Typová kontrola je proces ověřování datových typů ve zdrojovém kódu počítačového programu (pro operandy ve výrazech, parametry a návratové hodnoty funkcí i jinde). Může být prováděna buď překladačem při překladu programu (statická typová kontrola) nebo až běhovým prostředím za běhu programu (dynamická typová kontrola).

Statická kontrola kódu

Statická typová kontrola, jako jedna ze sémantických kontrol, ověřuje typy výrazů, zda odpovídají svým kontextům např. požadavek na typ operandu určitého operátoru apod. Odhaluje pouze chyby vyhodnotitelné při překladu, ale kontrolované podmínky jsou společné pro všechna vykonání programu a tak odpadá nutnost opakování typové kontroly při každém spuštěním programu. Vynechání typové kontroly za běhu umožňuje efektivnější vykonání programu (rychlé či s menším nárokem na paměť) a další optimalizace. Při pohledu na všechny jazykové konstrukce jako na funkce, jak to dělají funkcionální jazyky, se projeví podobnost s deklaračním problémem u identifikátorů a funkcí, kde je však kromě názvu a typu proměnné zároveň požadována ještě posloupnost (může být i prázdná) argumentů.

U programovacích jazyků používajících statické typování probíhá typová kontrola již v době kompilace. Při programování v těchto jazycích je nutno explicitně deklarovat typy proměnných. Mezi staticky neboli silně typované jazyky patří například Ada, C, C++, C#, Java, Haskell, Perl (s ohledem na rozlišení skaláry, pole a hashe).

Dynamická kontrola kódu

Dynamická typová kontrola probíhá za běhu programu. Jazyky používající dynamické typování nevyžadují specifikaci datového typu u proměnných a ty mohou tudíž odkazovat na hodnotu jakéhokoli typu. Mezi dynamicky neboli slabě typované jazyky patří JavaScript, Lisp, Lua, PHP, Prolog, Python, Ruby, Smalltalk. Dynamické typování je pružnější, protože programy generují typy a funkcionalitu na základě běhových dat, ale také častější na běhové chyby, kdy hodnota nabude neočekávaného typu a ten se použije pro další zpracování. Běhová chyba se projeví až daleko od místa svého vzniku a je těžko odhalitelná.

U dynamicky typovaného jazyka se při kompilaci provede pouze syntaktická analýza. Běhové kontroly umožní sofistikovanější přístup, protože využívají současně hodnocení všech statických i dynamických informací. Nevýhodou je nutnost provádění kontroly při každém vykonání programu. V praxi může dynamické testování objevit mnohem širší rozsah chyb než statická typová kontrola, nicméně neumí ošetřit některé chyby detekované při statické kontrole.

Kombinace statické a dynamické kontroly

Přítomnost statického typování v programovacím jazyce nemusí nutně znamenat absenci všech mechanismů dynamické typové kontroly. Java a jiné další jazyky používají sice statické typování, ale pro některé operace požadují testování za běhu. .NET Framework 4.0 dokonce podporuje variantu dynamického typování pomocí namespace System.Dynamic, který je stále statický, ale jeho možnosti jsou zkoumány až za běhu. Všechny jazyky používané v rámci platformy .NET (C++, C#, J#, Visual Basic) se tak stávají plně dynamickými. Každý objekt může být implicitně přetypován do typudynamic. Nad dynamickým typem je možné provádět všechny operace jako volání metod, přístup k prvkům a vlastnostem, použití indexem i použití jako volání delegáta.

Leave a Comment