Testování softwaru

Proces, který ověřuje a často i jediným způsobem zajišťuje zákazníkovi požadovanou funkčnost systému.Jan Rulíše...


Proces, který ověřuje a často i jediným způsobem zajišťuje zákazníkovi
požadovanou funkčnost systému.Jan Rulíšek a Ondřej Chromek
Nedílnou součástí testování softwaru by mělo být kromě vlastní funkčnosti
rovněž testování zabezpečení aplikace, a to jak samotného kódu na známá rizika
konkrétních programovacích jazyků, tak penetračními testy, které simulují
chování potenciálního útočníka.
Testování funkcionality systému se provádí na datech, která se postupně
vkládají do testované aplikace. Testovací data je třeba systematicky řadit,
proto se vkládají do přehledných tabulek, které se nazývají "dataset".
Příkladem může být formulář pro vstup uživatelského jména, kdy je definováno,
že má umožnit zadání 6-10 znaků a musí obsahovat alespoň jednu číslici. Potom
bude dataset obsahovat například kombinace (varianty) zadání s 5, 6, 10 a 11
znaky s číslicemi a bez nich na vstupu. Pro testování aplikací se používají
jednak lidské zdroje, kdy testeři tzv. "proklikají" (respektive ručně
vyzkoušejí kompletní funkcionalitu aplikace), nebo lze použít automatický
nástroj, který práci konkrétních uživatelů simuluje. Použití automatického
testovacího nástroje se volí zpravidla tam, kde se jedná o opakované činnosti,
zadávání velkého počtu dat atd.
Při práci s nástroji na automatizaci testů funkcionality je postupováno tak, že
se nejprve nahraje uživatelova činnost, která se ukládá do programovacího
jazyka, například jazyka podobného Visual Basic Scriptu. Poté následuje
parametrizace těchto nahraných skriptů, kdy lze jinak ručně zadávané hodnoty
načítat z různých zdrojů, například z textového souboru, z tabulek nebo přímo z
databáze aplikace. Do nahraného kódu lze začlenit i kontrolu různých výstupů
aplikace a vytvořit report o výsledku celého testu. Jedním ze zástupců nástrojů
pro automatické testy je QuickTest (QT), jehož autorem je společnost Mercury.
Pro vstup dat do aplikací se často používá jiný než uživatelský (ruční) vstup,
třeba vstup pomocí souborů různých typů. Mohou to být soubory textové s fixní
nebo variabilní délkou datové věty, či nověji soubory XML. Pro tvorbu těchto
typů souborů je možné s úspěchem využít například i aplikaci MS Excel,
rozšířenou o Visual Basic for Applications (VBA), kde pomocí maker a vlastních
funkcí VBA lze vytvořit z datasetu vstupní soubor pro testovanou aplikaci.
Pokud jsou testovací data vytvářena ručně, například v textovém editoru, může
často dojít k chybám dat způsobených překlepy a nepozornostmi, které je možné
pomocí VBA eliminovat. Taktéž v Excelu lze použít populární funkce tažení
vzorce myší, případně generování řad hodnot a další užitečné funkce, které
usnadní testerům práci. V praxi je často využívána kombinace obou nástrojů, kdy
jsou pomocí Excelu vytvořena testovací data (souborový vstup) a pomocí aplikací
typu výše zmíněného QT se potom s daty pracuje v aplikaci. Test je možné přesně
a velmi rychle opakovat.
Použití Excelu pro generování dat má obrovskou výhodu v rozšířenosti MS Office
(případně jiného nástroje tohoto typu) a možnosti implementovat vlastní
funkčnosti pomocí VBA. Je třeba zdůraznit, že pokud je od nástroje vyžadováno
více možností, vnitřních kontrol a variability, je nutné se do tajů VBA více
ponořit. Kombinace použití Excelu s VBA a Mercury QuickTestu je velmi častá a
umožňuje nezbytné zautomatizování testů.
Testy zabezpečení
Testování zabezpečení aplikací či komplexních IS systémů se provádí nejčastěji
pomocí různých specializovaných nebo volně šiřitelných nástrojů určených k
otestování bezpečnosti programů. Stejně jako v případě testů funkcionality
předchází i testům zabezpečení náročná příprava v podobě plánování, sběru
informací, kontroly dodržování standardů, až po samotné vyhodnocení. V České
republice se na tento typ testování komplexních informačních systémů i
jednotlivých aplikací stále neklade velký důraz, přestože tyto testy dokáží
zabránit velkým škodám, které mohou potenciální útočníci na systému či datech
napáchat.
Při přípravě testu zabezpečení je vhodné začít s vlastní analýzou budoucí
aplikace, která prozradí, s využitím jakých technologií bude budoucí software
vyvíjen a v jaké infrastruktuře bude usazen. Po dodání kompletní dokumentace je
možné začít plánovat test hotové aplikace, přičemž je dobré klást důraz na
vybrané nástroje, které budou k testování použity. Po vyhodnocení těchto
informací je již možné promýšlet, jak navrhnout tzv. penetrační testy a
otestování budoucího kódu aplikace.
K otestování zdrojového kódu aplikací bývají nejčastěji používány
automatizované nástroje, které kód otestují na slabá místa daného
programovacího jazyka a doporučí jeho úpravy na základě provedeného testu. Tyto
testy jsou také označovány jako "black box testing".
Výhodou aplikací na testování zdrojových kódů aplikací je plná automatizace,
komplexní otestování podle definovaných signatur, které jsou pravidelně
aktualizovány. Při testování zdrojových kódů si firmy vystačí se standardními
nástroji, není tedy třeba si na testování najímat externí konzultanty.
Příkladem nástroje na testování zdrojového kódu je aplikace CodeAssure.
Paralelně s probíhajícím vývojem, kde jsou díky testům zdrojového kódu
minimalizovány trhliny v aplikaci, je možné plánovat již také vlastní testy
aplikace. Pro otestování vlastního softwaru se dnes běžně používají též
automatizované nástroje, které realizují testy tím způsobem, že simulují různé
útoky, které by zkoušel potenciální útočník "white box" testy.
Jako příklad můžeme uvést nástroje WebInspect či QA Inspect, které obsahují
předdefinované testy simulující různé útoky, generují podrobné reporty i s
doporučením, jak nalezená rizika eliminovat, a automaticky prioritizují
nalezené nedostatky. Obecně by aplikace pro automatické testování zabezpečení
softwaru měly být snadno konfigurovatelné a pravidelně aktualizované, tak aby
jejich schopnosti odrážely aktuální bezpečnostní hrozby. Při využití kvalitních
testovacích nástrojů není třeba mít dokonalé znalosti problematiky zabezpečení.
Penetrační testy
Dalším typem testů jsou takzvané vnitřní penetrační testy. Jedná se o testy,
které identifikují slabá místa infrastruktury, jež mohou sloužit potenciálním
útočníkům ke vstupu do systému. Provádějí se formou "black box" či "white box"
testů. Cílem testu formou black boxu je identifikovat slabá místa z pohledu
člověka neznajícího detaily infrastruktury, bezpečnostních prvků a platforem.
Zde bývají používány všeobecné nástroje na skenování portů, identifikaci
síťových služeb, odchytávání paketů atd.
Test formou white boxu identifikuje slabá místa infrastruktury z pohledu
člověka, který kromě detailní znalosti problematiky zabezpečení softwaru zná
rovněž detailně architekturu infrastruktury, použitých bezpečnostních prvků a
platforem. Při tomto typu testování jsou používány specifické nástroje, které
simulují útoky vůči používaným platformám a prvkům v infrastruktuře. V potaz
jsou brány rovněž i možné útoky zevnitř společnosti. Výsledkem bývá
sumarizovaná zpráva nalezených nedostatků a doporučení k jejich odstranění.
Autoři jsou specialisty divize QA ve společnosti Cleverlance.(pal) 6 1141









Komentáře
K tomuto článku není připojena žádná diskuze, nebo byla zakázána.