Pairwise testing
Hodnocení uživatelů: / 0
NejhoršíNejlepší 

Teď si tu dovolím odbočení do lehké exotiky. Technika testování Pairwise (nebo taky all pairs) není příliš využívaná. Já sám jsem se s ní setkal jednou před lety. Připadá mi ale zajímavá a rozhodně má svůj význam. Takže teď stručně v čem tato technika spočívá.


Základním důvodem, proč tuto techniku používat, je fakt, že se v aplikaci mohou vyskytnout chyby, které vznikají jako důsledek kombinace vstupních hodnot. Jinak řečeno, v aplikaci může nastat chyba v okamžiku, kdy na vstupu je kombinace hodnot, které samy o sobě jsou validní. Může k tomu dojít i tehdy kdy při testech, ve kterých byly použity samostatně (tedy ne v kombinaci s jinou vstupní hodnotou), žádná chyba nenastala. Aby byly podobné chyby zcela vyloučeny, bylo by nutné provést testy se všemi možnými kombinacemi vstupních hodnot. To je ale značně neefektivní. Počet testů by tak značně narostl. Například už při třech vstupních polích, z nich každé by mohlo nabývat jen dvou hodnot, bychom pro plné pokrytí všech kombinací potřebovali osm testů. A přiznejme si, že vstupy v aplikacích bývají rozhodně rozsáhlejší a komplikovanější. Jak to tedy řešit?

Odpovědí je pairwise testing. Tato technika vychází z teorie ortogonálních polí. Vzhledem k tomu, že si ze školy už nic o tomto tématu nepamatuji, musím vás bohužel odkázat například a tuto stránku. Můžeme si ale alespoň naznačit základní teze.

K minimalizaci počtu testů, potřebných k otestování kombinací vstupních parametrů, dochází tak, že se na celý problém nenahlíží jako na kombinaci X vstupů, ale kombinaci dvojic těchto vstupů. Přičemž každá dvojice by se měla objevit pouze jednou. Dejme tomu, že na vstupu jsou tři pole A, B a C a každé toto pole může nabývat tří hodnot. Pro plné pokrytí všech možných kombinací by bylo nutných 27 testů (tři na třetí). Já ale mohu celý problém řešit tak, že hledám kombinace párů vstupních hodnot. Tedy kombinace AB, AC, BC. A vím, že nechci, aby se mi testech opakovaly stejné kombinace těchto dvojic vstupů. Ideální je ukázat si to na tabulce a bude vše jasnější. Následující tabulky jsem si vypůjčil na stránkách http://www.developsense.com/pairwiseTesting.htm, které se tomuto tématu věnují velice podrobně.


 
A
B
C
1
Red
Red
Red
2
Red
Red
Green
3
Red
Red
Blue
4
Red
Green
Red
5
Red
Green
Green
6
Red
Green
Blue
7
Red
Blue
Red
8
Red
Blue
Green
9
Red
Blue
Blue
10
Blue
Red
Red
11
Blue
Red
Green
12
Blue
Red
Blue
13
Blue
Green
Red
14
Blue
Green
Green
15
Blue
Green
Blue
16
Blue
Blue
Red
17
Blue
Blue
Green
18
Blue
Blue
Blue
19
Green
Red
Red
20
Green
Red
Green
21
Green
Red
Blue
22
Green
Green
Red
23
Green
Green
Green
24
Green
Green
Blue
25
Green
Blue
Red
26
Green
Blue
Green
27
Green
Blue
Blue

Z této tabulky je poměrně jasné, že při pokrytí všech možných kombinací se nám opakují stále stejné kombinace dvojic. Například řádky 1 až 3 obsahují totožnou kombinaci vstupů A a B. Pokud chceme počet testů redukovat, pak jednou z cest je snížení počet variant tak, aby se každá kombinace dvojice vstupů opakovala právě jednou. Výsledná tabulka takto získaných variant testů může vypadat následovně:


 
A
B
C
2
Red
Red
Green
4
Red
Green
Red
9
Red
Blue
Blue
12
Blue
Red
Blue
14
Blue
Green
Green
16
Blue
Blue
Red
19
Green
Red
Red
24
Green
Green
Blue
26
Green
Blue
Green

Nechci se tu zabývat teoretickou cestou, jak z první tabulky udělat tabulku druhou. Pouštěl bych se na tenký led. Jde jen o to demonstrovat, k čemu technika pairwise slouží. Generování příslušných kombinací totiž zvládají existující nástroje pro pairwise. Ty dokáží na základě vložených vstupů, jejich možných hodnot, ale také například důležitosti daného vstupu, generovat konkrétní testovací varianty. 

Nástrojů pro pairwise testování existuje relativně hodně. Jejich přehled můžete nalézt například zde. Každý z těchto nástrojů používá poněkud jiný algoritmus pro generování možných kombinací a proto se počet variant může u různých nástrojů lišit. Stránka, na kterou je odkaz na začátku tohoto odstavce obsahuje také orientační tabulku s počty vygenerovaných kombinací u některých nástrojů v závislosti na počtu vstupů a možných hodnot. Já sám mám zkušenost pouze s nástrojem PICT od Microsoftu. Ten je možné jako freeware získat například na této adrese. Nástroj je to jednoduchý, pracuje v příkazové řádce, konfigurace probíhá pomocí textových souborů, výstup je také v podobě textového souboru. Pro běžné použití tento nástroj bohatě postačí.

Jak už jsem napsal v začátku tohoto článku, pairwise testing považuji spíše za okrajovou záležitost. Vycházím přitom z vlastní zkušenosti. Ovšem nevylučuji, že jsou projekty, kde by tato testovací technika našla své uplatnění a hrála důležitou roli při tvorbě testů. Určitě má smysl při rozsáhlých a složitých vstupech. Vstup do aplikace je vždy považován za kritické místo a každý test, který zvýší jeho otestovanost má samozřejmě smysl. Musíme si tu ještě na závěr říci, že pairwise testování je (podobně jako jiné testovací techniky) cestou, jak smysluplně snížit počet realizovaných testů aplikace tak, aby testování bylo efektivní a aplikace bylo v dostatečném rozsahu otestovaná. Snižování počtu testů se samozřejmě zvyšuje pravděpodobnost nezachycení chyb. Proto je vždy nutné vzít v úvahu, do jaké míry je riziko neobjevení chyby únosné ale také to, jak velká je pravděpodobnost výskytu příslušného typu chyby. Chyby vzniklé kombinací dvou a více vstupů se nepovažují za příliš časté a proto redukce testů zde dává smysl.

 

Nejbližší události


Testování software, Powered by Joomla!; Joomla templates by SG web hosting