Testovací strategie ortogonálních polí (Orthogonal Array Testing Strategy (OATS)) slouží k optimalizaci sady testovacích případů. Jejím cílem je nalezení všech dvojic významných hodnot jejích parametrů (tzv. all-pairs testing). Alternativně lze za tímto účelem použít také metodu párově ortogonálních latinských čtverců.
Motivace
Představme si, že máme funkci, která má sedm parametrů, z nichž každý má osm významných hodnot, pak by ideální testovací plán obsahující všechny kombinace parametrů musel mít celkem testů.
V praxi se však ukazuje, že je velká část chyb způsobena pouze chybou v jednom parametru, případně chybou způsobenou kombinací dvou parametrů. Chyby způsobené kombinací více parametrů jsou pak výrazně méně časté. Otestování všech parametrických párů si zároveň vyžádá pouze zlomek testů.
Vrátíme-li se k původnímu příkladu, pak je počet dvojic v sedmici parametrů roven . Každá dvojice může nabývat hodnot. Počet různých parametrických párů je proto . Jelikož má funkce parametrů, tak můžeme do jednoho volání naskládat více dvojic. Při ideálním uspořádání nám tedy bude stačit testů.
Jednou z možností, kterak dosáhnout efektivního uspořádání parametrických dvojic je využití tzv. ortogonálních polí.
Ortogonální pole
Ortogonální pole je matice velikosti , ve které při testování parametrických párů jednotlivé sloupce odpovídají faktorům (parametrům funkce, případně jiným hodnotám, na kterých závisí testovací případ) a řádky jednotlivým testovacím případům.
Ortogonální pole jsou označována podle toho, kolik úrovní (významných hodnot) umožňují jednotlivým faktorům. Ortogonální pole má celkem 8 faktorů. Jeden faktor může mít dvě významné hodnoty, a sedm dalších může mít až 3 významné hodnoty.
Ortogonální pole :
Kódování úlohy a čtení výsledku
Pro použití této techniky je zapotřebí příklad nejprve zakódovat. Tato procedura je velmi snadná – nejprve nalezneme všechny faktory (parametry příkladu) a zjistíme, kolik mají úrovní. Poté nalezneme vhodné ortogonální pole.
Vybrané pole musí umožňovat alespoň tolik faktorů, kolik má náš případ. Dále je nutné, aby jednotlivé faktory měly dostatečný počet úrovní.
Nyní můžeme přejít k samotnému kódování. Každému parametru naší úlohy přiřadíme jeden sloupec – případné přebytečné sloupce můžeme ignorovat. Každé významné hodnotě přiřadíme jednu úroveň – pokud má sloupec více úrovní než potřebujeme, tak můžeme některé významné hodnotě přiřadit více úrovní, tím tuto hodnotu otestujeme více než ostatní (ale stále platí, že otestujeme každou parametrickou dvojici alespoň jednou).
V tomto okamžiku již můžeme pomocí našeho zakódování číst jednotlivé řádky ortogonálního pole – samotné testovací případy.
Nalezení ortogonálního pole
Základním problémem této testovací metody je nalezení vhodného ortogonálního pole. Jelikož neexistuje žádná jednoduchá metoda, kterak takové pole zkonstruovat, tak se musíme spolehnout především na katalogy ortogonálních polí. Jeden takovýto katolog lze nalézt zde.
Příklad
Mějme aplikaci, jež může pracovat nad databázemi algoritmyQL, MySQL, případně Oracle. Pro objektově relační mapování používá buď framework Hibernate nebo Toplink. Komunikace s klientskou stranou probíhá buď potstředctvím protokolu RMI nebo HTTP.
Otestujme aplikaci pomocí metody ortogonálních polí.
Faktory a úrovně
Nejprve identifikujeme jednotlivé faktory. V našem případě se zjevně jedná o databázi (algoritmyQL, MySQL, Oracle), ORM framework (Hibernate, Toplink) a komunikační protokol (RMI, HTTP).
Ortogonální pole
Dále nalezneme vhodné (minimální) ortogonální pole, které postihuje náš příklad. Hledáme mapu, která se nejvíce podobá ideálnímu typu .
V katalogu jsme však nalezli pouze mapu . Proto při kódování přebytečné sloupce vynecháme a u sloupce odpovídajícího databázi zakódujeme některou hodnotu dvakrát (daný případ tak otestujeme vícekrát).
Kódování
Do prvního sloupce zakódujeme protokol – 0 (HTTP), 1 (RMI). Druhý sloupec bude mít význam ORM frameworku – 0 (Hibernate), 1 (Toplink). Další dva sloupce vynecháme. Poslední sloupec nám poslouží pro databáze – 0 (algoritmyQL), 1 (MySQL), 2 (Oracle), 3 (MySQL).
Čtení testovacího plánu
Nyní již můžeme po řádcích číst testovací plán. První test použije: HTTP protokol, Hibernate a algoritmyQL. Druhý: HTTP, Hibernate, Oracle. Třetí: HTTP, Toplink, MySQL. Poslední: RMI, Toplink, algoritmyQL.
Literatura
- MAŘÍK, Radek. Testování a verifikace softwaru, Optimalizace sady testů - slides k přednášce.