David Sedláček
Test Manager
Blog
David Sedláček
Test Manager
Testování na více konfiguracích je relevantní zejména ve fázích testování, kdy je UI produktu stabilnější. Abychom zaručili maximální funkčnost aplikace pro co nejvíce koncových uživatelů, je nutné co nejlépe pokrýt nejen případy užití, ale i podmínky, ve kterých bude aplikace používána.
Vzhledem k množství proměnných a rychlosti vývoje nových verzí systémů a zařízení, nemůžeme nikdy pokrýt všechny případy. Snažíme se proto zvažovat zásadní prvky:
podle kterých navrhujeme konfigurace k testování. Od návrhu k implementaci často narážíme na různé problémy. Povězme si, jak se k nim můžeme a máme stavět.
Pokud bychom chtěli být důkladnější, vždy můžeme přidat další parametry, mezi které patří například architektura systému, systémové zvětšení zobrazení, podpora dotykového ovládání, jazyk systému, používaný file system, úroveň uživatelských oprávnění a další.
Řešení je zároveň jednoduché i složité. Existuje řada placených či neplacených služeb a portálů poskytujících informace o popularitě prohlížečů, operačních systémů, rozlišení obrazovek a dalších ukazatelích. Podniky často také sledují tyto statistiky přímo u svých uživatelů skrz Google Analytics.
Při testování bychom měli pokrýt statisticky nejvýznamnější konfigurace těchto proměnných. Při analýze je nutné si dát pozor na kontext a data vstupující do sledovaných statistik. Proto se řídíme následujícími pravidly:
Obecně chceme buď zajistit fyzická zařízení, nebo si pomoct virtualizací. Testování na fyzických zařízeních je vždy lepší z pohledu spolehlivosti. Virtualizovaná zařízení se nemusí vždy chovat stejně jako ta reálná.
Pokud investice do fyzických zařízení není možná, zvažujeme sdílení s okolními týmy či projekty. Čerpáme tak méně rozpočtu našeho projektu, ale přiděláváme si starosti s dostupností a správou zařízení.
Alternativně, podobně jako máme ve firmách služební počítače, můžeme si zřídit i služební testovací zařízení. Po počátečním trápení s minimálním počtem stejných zařízení pro jednotlivé konfigurace toto řešení funguje krásně s relativně malými náklady na průběžné rozšiřování a doplňování zařízení.
Můžeme si také pořídit službu, která správu těchto zařízení, případně jejich virtualizaci, řeší za nás. Na trhu dostupná řešení, například Sauce Labs, stále více podporují i automatizaci testů. Jsme v ranných fázích jejich používání namísto fyzických zařízení, proto očekáváme jejich průběžné zlepšování, co se týká rychlosti a stability v nejbližších letech.
Lidské zdroje, čas a finance dohromady určují objem práce, kterou na projektu budeme schopni vykonat. Dokážeme s nimi udělat jen velmi málo, pokud jsou fixní. Pokud nás ale trápí jeden nebo druhý natolik, že mu jsme ochotni podřídit spotřebu jiného zdroje, tak máme jisté možnosti.
Pokud máme fixní zdroje:
Pokud máme flexibilní zdroje:
Obecně nejprve určujeme, jaké konfigurace jsou pro nás relevantní, které bychom ideálně chtěli hlídat. Jejich rozsah poté snižujeme o ty:
Řekněme, že na projektu hledáme konfigurace pro testování, z analýzy nám vyšlo, že nás zajímají operační systémy Windows 10, Mac OS a Linux, prohlížeče Chrome, Firefox, IE a Safari v rozlišeních 480p, 720p, 1080p a 1440p. Z toho jsme schopni vytvořit 32 validních a 16 nesmyslných kombinací.
Provádět každý test 32krát je pro většinu projektů nerealistické, potřebujeme je nějak snížit. Pomocí výše uvedených kroků tyto konfigurace snížíme na 16, což je stále příliš. Jaké jsou naše možnosti?
Jedná o přístup, kdy redukujeme počet konfigurací tak, abychom v nich maximalizovali počet nezávislých kombinací dvou parametrů. Uvažujme z výše uvedené situace, že jsme redukovali rozlišení na 720p a 1080p, tím jsme získali 16 racionálních konfigurací, viz Tabulka 1: Racionální konfigurace.
Tabulka 1: Racionální konfigurace
Configuration | Operating System | Browser | Resolution |
1 | Windows | Chrome | 720p |
2 | Windows | Chrome | 1080p |
3 | Windows | Firefox | 720p |
4 | Windows | Firefox | 1080p |
5 | Windows | IE | 720p |
6 | Windows | IE | 1080p |
7 | Mac OS | Safari | 720p |
8 | Mac OS | Safari | 1080p |
9 | Mac OS | Chrome | 720p |
10 | Mac OS | Chrome | 1080p |
11 | Mac OS | Firefox | 720p |
12 | Mac OS | Firefox | 1080p |
13 | Linux | Chrome | 720p |
14 | Linux | Chrome | 1080p |
15 | Linux | Firefox | 720p |
16 | Linux | Firefox | 1080p |
Tabulku optimalizujeme tak, že odstraníme opakující se páry proměnných. Na konci procesu budeme mít ideálně jednu konfiguraci s kombinací Windows – Chrome, jednu konfiguraci s kombinací Chrome – 1080p.
V praxi se nejspíš nepodaří vytvořit ideální sadu konfigurací bez opakování. Referenčním výsledkem je Tabulka 2: Pairwise kombinace konfigurací. Minimální počet řádků je zde určen kombinacemi operačního systému a prohlížeče. Kombinace prohlížeče a rozlišení také nejsou ideální, Chrome a Firefox testujeme dvakrát na stejném rozlišení, zatímco IE a Safari netestujeme na všech rozlišeních.
Tabulka 2: Pairwise kombinace konfigurací
Configuration | Operating System | Browser | Resolution |
1 | Windows | Chrome | 720p |
2 | Windows | Firefox | 1080p |
3 | Windows | IE | 720p |
4 | Mac OS | Safari | 1080p |
5 | Mac OS | Chrome | 1080p |
6 | Mac OS | Firefox | 720p |
7 | Linux | Chrome | 720p |
8 | Linux | Firefox | 1080p |
Metoda Pairwise je o něco složitější, než jak je zde na jednoduchém příkladě uvedena a její těžiště leží v jejím praktickém využití nad konkrétním příkladem, proto nejlepší, co lze v tomto ohledu udělat, je odkázat zájemce na kurz praktické test analýzy, kde se aplikaci této metody mimo jiné věnujeme.
Konfigurace přiřazujeme k testům obvykle teprve tehdy, kdy už víme kolik času na testování máme a jak dlouho bude trvat provedení jednoho testu. Když víme, že chceme provést 800 testů, ale máme čas na provedení pouze 300 z nich, je třeba začít škrtat. Neškrtáme už ale konfigurace, ale jejich příslušnost ke scénářům.
Běžně používáme dva přístupy, přiřazení podle priority nebo podle průchodu aplikací. Přiřazování dle priority spojí nejdůležitější testy a nejvýznamnější konfigurace a primárně se zaměřuje na ně. Zbylé testy dle klesající priority jsou testovány na méně konfiguracích. Testy s nejmenší prioritou tak mohou být testovány pouze v jedné konfiguraci, nebo být vyřazeny úplně.
Rozdělení dle priorit ale často soustředí mnoho úsilí na malou část aplikace. Procházíme pak stejnou obrazovku mnohokrát ve všech konfiguracích a může se stát, že jiné obrazovky neprojdeme v některých konfiguracích ani jednou.
Proto často vytipujeme menší sadu testů, která prochází všemi obrazovkami aplikace a tu provádíme ve všech konfiguracích. Případně obdobně jako při výběru konfigurací pairwise metodou, rozdělíme konfigurace mezi alternativní průchody danými obrazovkami. Tím si zajistíme, že všechny obrazovky byly otestovány ve vybraných konfiguracích a zůstane nám více prostoru pro zodpovědné testování důležitých funkcionalit a procesů.