čtvrtek 29. dubna 2010

FAT – FACTORY TESTY V DWH

1. Co jsou Factory testy?
FAT – Factory Acceptance Test - je jeden z řady mnoha testů, které se provádějí před nasazením DWH nebo jeho nové verze do provozu.

FAT plynule navazuje na Unit a Extract testy (EAT) a dále pokračuje uživatelskými testy (UAT) jež zahrnují systémové integrační testy, testy bezpečnosti systému (SAT), ověření správnosti statických dat (SDAT) a regresní testy (RAT). Celý proces testování je završen podepsáním akceptačního protokolu. V tomto článku se zaměřím pouze na jednu část tohoto testovacího řetězce, na popis FAT.

FAT je první test, který umožňuje ověřit nasazované řešení jako celek. Do této chvíle se ověřovala správná funkčnost jednotlivých modulů řešení, ale teprve test celého systému DWH nám umožní říci, že dodávané řešení je kompletní a s požadovaným chováním.

V průběhu FAT je potřeba se zaměřit na následující části DWH:
• Migrace
• Datový model
• ETL Moduly
• Procesy
• Výstupy - reporty, uživatelské rozhraní (EUL) a dávkové rozhraní
• Dokumentace

FAT se provádějí v rámci vývojového týmu tj. maximálně se využívají stávající vývojáři DWH a jejich vývojové nástroje. Jak externí síly lze využít administrátory databáze pro přípravu testovacího prostředí.


1.1 Test migrace
Každé nové řešení DWH je nutno nasadit do běžného – produkčního provozu. Je celkem jedno, zda se jedná o první nasazení DWH nebo jen doplnění nové funkčnosti do již existujícího DWH, vždy se však musí nově vyvinuté řešení nasazovat prostřednictvím migračních modulů, které jsou seskupovány do migračních procesů. Vždy je od migrace vyžadováno, aby proběhla rychle a bez problémů, v přesně definovaném časovém úseku. Aby bylo tohoto dosaženo, je nutno migrační proces otestovat již v rámci FAT.

Cílem tohoto testu je ověřit že:
• do migrace jsou zařazeny všechny požadované moduly
• moduly provádějí požadovanou činnost
• moduly obsahují požadované informační části (autor, popis, datum změny …)
• moduly se vzájemně nechtěně neovlivňují
• moduly jsou prováděny v požadovaném pořadí
• moduly jsou dokončeny v požadovaném čase
• migrace se zastaví v případě výskyty chyby v některém z modulů
• všechny aktivity modulů jsou auditovány

Vzhledem k tomu, že test migrace vyžaduje vždy přípravu nového prostředí DWH, migraci nelze spouštět opakovaně, provádí se tento test ve FAT pouze jednou. Ověření správnosti opravy chyb nalezených v tomto testu se nechává do testů UAT.


1.2 Datový model
Cílem tohoto testu je ověřit správnost nasazovaného datového modelu DWH. V průběhu tohoto testu je nutno provést kontrolu:

Tabulek
– zda vytvořené tabulky jsou správně pojmenované a jejich jména splňují metodické požadavky, tabulky jsou umístěny ve správném databázovém prostoru a obsahují požadované oddíly (partition).

Sloupců tabulek – zde je třeba ověřit správnost názvu sloupce, jeho datový typ a délku, omezení sloupce

Primární a unikátní klíče tabulek – název klíče musí odpovídat definovaným standardům a klíče musí obsahovat správné sloupce a to ve správném pořadí

Indexy – názvy indexů musí odpovídat standardům a musí být umístěny ve správném databázovém prostoru.

Poznámka: Ač jsou view a triggery standardně požadovány za součást datového modelu, zde je nutno je zahrnout do testů ETL modulů neboť jejich definice je většinou výstupem programátorské práce a jsou i součástí ETL procesů. View používané v EUL je nutno testovat jako součást testů uživatelského rozhraní.


1.3 ETL moduly
ETL modul je logická komponenta DWH, která zajišťuje přenos dat ze zdroje do cíle (zdroj i cíl může být zároveň DWH) podle zadaného algoritmu.
Smyslem tohoto testu, je ověřit kompletnost realizovaných ETL modulů vůči logickému mapování uvedenému v zadávací dokumentaci.

Požadavek je, aby pro testování byla ve zdroji dostupná data rozsahem blížící se skutečnosti. U každého ETL modulu je nutno ověřit:

Opakovatelnost – modul musí být opakovaně spustitelný nad stejným vzorkem dat. V případě, že tomu tak není, je nutno tuto informaci udržovat v dokumentaci modulu.
Pokud data na vstupu i v cíli nebyla změněna a nezměnilo se podmínky běhu, nesmí mapování, při opakovaném běhu, provádět žádné změny na cílových datech

Logování – každá modul musí o své činnosti zaznamenávat informace (začátek a konec běhu, počet zpracovávaných záznamů, počet vložených a změněných záznamů)

Ošetření chyb – modul musí v případě chyby, i jediné, ukončit svoji činnost a ohlásit příčinu chybu.

Funkcionalita – podle určení modulu je nutno otestovat zda modul vkládá, mění nebo jen maže záznamy ve svém cíly podle zadaného algoritmu popsaného v zadávací dokumentaci.

Reversibilita – modul musí umět záznam, které je označen jako logicky zrušený, tento záznam nastavit jako aktivní.

Výkonnost – doba zpracování dat modulu musí být přiměřená jako pro zpracování plné množiny dat na vstupu, tak i přírůstkového množství. FAT však nejsou primárně určeny k výkonnostním testů, neboť i dostupné systémové prostředky výpočetní techniky bývají omezené, ale již zde se dá přehledově určit, zda je implementace logického mapování navržena optimálně s dostatečnou výkonnostní rezervou. Zde nalezené problémy je ještě možno včas a s minimálními náklady odstranit.

Spolupráce s ostatními moduly – modul nesmí negativně ovlivňovat současně běžící jiné moduly tj. např. nesmí zamykat celé tabulky, pokud to není vyžadováno funkcí mapování.


1.4 Procesy
Procesy spojují jednotlivé ETL moduly do jednoho celku, který doplňují o podpůrné funkce jako je vytváření a mazání partition, počítání statistik a mnohé další.ETL moduly jsou propojeny logickými operátory, které umožňují jejich paralelní běh. Při testech procesů je nutno se zaměřit na:

Kompletnost – proces obsahuje všechny ETL moduly spouštěné ve správném pořadí a se správnými parametry.

Závislosti – pro každý proces musí být nastaveno za jakých podmínek je možné proces spustit tj. jaká vstupní data musí být k dispozici, které další procesu musí být dokončený nebo naopak nesmí běžet současně.

Reakce na vstupní data – proces musí být schopen na základě typu vstupních dat (plný/přírůstkový) spouštět příslušné modulu

Oznámení – proces při dokončení nebo v případě chyby zasílá oznámení příslušným adresátům s doplňujícími informacemi např. o počtu zpracovaných záznamů.


1.5 Výstupy - reporty,uživatelské rozhraní EUL a dávkové rozhraní
Reporty a uživatelské rozhraní je klíčový prostředek pro zpřístupnění dat koncovým uživatelům. Testy této oblasti budou maximálně soustředěny v dalších kolech UAT. V prostředí FAT je však možno zkontrolovat:

Kompletnost - jsou připraveny všechny požadované reporty nebo jejich vzory. EUL obsahuje všechny datové položky, které mají být zpřístupněny. Aktivní prvky reportů vykonávají svou činnost.

Datovou kvalitu – reporty zobrazují správné datové položky v odpovídajícím formátu. Data pro EUL jsou aktualizována.

Testy dávkového výstupního rozhraní zahrnují oba výše uvedené body. Je nutno zkontrolovat jak úplnost – v dávce jsou zahrnuty všechny soubory, tak i obsahově.


1.6 Dokumentace
Obsah dokumentace je sice schvalován při vytváření požadavků pro vývoj, přesto v průběhu vývoje může dojít k realizaci změnových požadavků nebo k odchylkám (samozřejmě schváleným uživateli) od původního zadání. Všechny tyto změny musí být podchyceny v aktuální podobě v dokumentaci projektu. Nejlépe se kompletnost a především pochopitelnost dokumentace pro i jiné účastníky projektu, ověří v průběhu FAT tak, že jednotlivé testovací případy nevytváří ani zadavatel, ani programátor, ale tester, doposavad do problematikou dané oblasti se nezabývající.


2. Příprava testů
Přípravu FAT nelze nijak podcenit a je nutno se na tyto testy začít připravovat se začátkem vývoje. Je nutné zajistit připravenost testovacích dat, testovací infrastrukturu a rozdělit testovací oblasti mezi budoucí testery. Osvědčilo se křížové rozdělení jednotlivých oblastí mezi vývojáře, tak aby žádný vývojář netestoval oblast kterou vyvíjel. Časová souslednost je znázorněna na časovém diagramu na obr. 1


  • Příprava TC – testovací případy jsou připravovány již v průběhu vývoje

  • Provádění TC (Datový model) – testy datového modelu mohou být prováděny již v průběhu vývoje, neboť úplný datový model je nutný předpoklad pro zahájení fáze vývoje

  • Provádění TC (Migrace) – test migrace je první test provádění v rámci FAT

  • Provádění TC (ETL moduly) – testy infrastrukty lze provádět již v průběhu vývoje, ale jinak se jedná o hlavní náplň FAT

  • Provádění TC (Procesy) – testy procesů probíhají po celo dobu FAT

  • Provádění TC (Výstupy) – testy uživatelského rozhraní a dávkové výstupy lze provádět až po nahrání všech dat ETL moduly...
Na podporu FAT a přípravu testovacích případů je výhodné využít některých z bug tracking systémů neboť se tím docílí vyšší produktivity testů.


3. Shrnutí
Provedením všech požadovaných kroků FAT a vyhledáním maximálního počtu chyb v DWH již ve FAT a jejich odstranění, umožní zdárné dokončení celého vývojového cyklu DWH a zvýší prestiž dodavatele řešení.


Jiří Zamouřil (Oracle Consulting)

Žádné komentáře: