Использование ортогональных массивов

1. Определите переменные (кол-во входных данных)
Важно: необходимо выбирать входные данные, любые комбинации значений которых, могут логически существовать. Например, если нам нужно проверить на браузерах: IE и FF, и операционных системах Linux и Windows, то мы явно не сможем проверить работу сайта под линухом в IE (ну или это лишено логического смысла). В этом случае необходимо сделать 2 ортогональных массива с браузерами для линуха и windows.

2. Определите количество значений, которое может принимать каждая переменная (каждый входнной данный :))
Важно: К моменту определения количества значений вы уже должны применить всевозможные техники тест дизайна для уменьшения количества значений - классы эквивалентности, граничные значения и др. Например, если переменная может принимать значения от 1 до 100, то ортогональный массив, в котором 1 столбец может принимать 100 значений очень существенно разрастется, по сравнению с ортогональным массивом, где вы разбили 100 значений на классы эквивалентности и теперь эта переменная может принимать, скажем, 5 значений - 5 диапазонов классов эквивалентности.

3. Определите ортогональный массив, у которого будет столбец для каждой переменной (каждый столбец ортогонального массива имеет столько же вариантов значений, сколько имеет ваша переменная).

4. Спроецируйте (map) задачу тестирования на ортогональный массив.
Важно: шаги 3 и 4 успешно делают различные утилиты, например как http://www.testersdesk.com/pairwse_testersdesk.html. Вам всего лишь нужно вбить в нее какие входные данные могут быть, например так:
Journey mode: Return trip, One way
Preferred time: Morning, Afternoon, Evening, Late night
Leaving from: Type1_City,Type2_City,Type3_City
Going to: Type1_City,Type2_City,Type3_City
Booking type: Economy, First class
Customer type: Registered, New
Adults: 1, 2, 3, 4, 5, 6
Children: 0, 1, 2, 3, 4
Все остальное утилита сделает сама и вам останется перейти к 5 шагу.

Постройте тест кейсы.

Перейдем наконец к примеру.
Сайт должен работать в 8 браузерах - Internet Explorer 5.0, 5.5, и 6; Netscape 6.0, 6.1 и 7.0; Mozilla 1.1; Opera 7; используя плагины - RealPlayer, MediaPlayer, без плагинов; на ОС - Windows 95, 98, ME, NT, 2000, и XP; на разных веб серверах - IIS, Apache, и WebLogic; запущенных на сервере с разными ОС - Windows NT, 2000, и Linux.

1. Определите переменные (кол-во входных данных)
* бразуеры
* плагины
* ОС клиента
* веб сервера
* ОС сервера
2. Определите количество значений, которое может принимать каждая переменная
* 8 бразуеров - Internet Explorer 5.0, 5.5, and 6.0, Netscape 6.0, 6.1, and 7.0, Mozilla 1.1, and Opera 7.
* 3 плагина - RealPlayer, MediaPlayer, без плагинов.
* 6 ОС клиента - Windows 95, 98, ME, NT, 2000, and XP.
* 3 веб сервера - IIS, Apache, и WebLogic..
* 3 ОС сервера - Windows NT, 2000, and Linux..
3. Определите ортогональный массив, у которого будет столбец для каждой переменной.
Какой размер нам нужен? Для начала, ортогональный массив должен быть с 5 столбцами, каждый столбец для каждой переменной. Первый столбец должен принимать значения от 1 до 8 - браузеры. Второй столбец должен принимать значения от 1 до 3 - плагины. Третий столбец должен принимать значения от 1 до 6 - ОС клиента. Четвертый и пятный столбцы должны принимать значения от 1 до 3 - веб сервера и ОС сервера.

Итого нам нужен массив 816133. К сожалению, такого ортогонального массива не существует. Но существует ортогональный массив 8243, который нам подходит. Да да, подходит. Вот смотрите. Мы заменили колонки 81 и 61 на 82, а 33 заменили на 43.

Вы наверное скажите - у нас же 3 разных плагина, 3 веб сервера, 3 ОС сервера, где мы возьмем каждой переменной по еще одному значению? Ответ прост. Когда сформируется ортогональный массив, мы не существующие (лишние) значения просто заменим на любые валидные для переменной. Удалить строки с несуществующими значениями мы не можем - таким образом мы уничтожим баланс пар в ортогональном массиве. Поэтому просто заменим лишнее значение переменной любым валидным значениям. Давайте смотреть на примере.

Вот наш ортогональный массив 8243:

# строки
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           
           


Сформировали, пора переходит к четвёртому шагу.

4. Спроецируйте задачу тестирования на ортогональный массив.
Значения браузера у нас проецируются на первый столбец ортогонального массива:
1 = Internet Explorer 6
2 = Internet Explorer 7
3 = Internet Explorer 8
4 = Netscape 6
5 = Netscape 7
6 = Mozilla 2
7 = Mozilla 3
8 = Opera 9

Заменим значения ортогонального массива на версии браузеров:

# строки Browser
    IE 5.0        
    IE 5.0        
    IE 5.0        
    IE 5.0        
    IE 5.0        
    IE 5.0        
    IE 5.0        
    IE 5.0        
    IE 6.0        
    IE 6.0        
    IE 6.0        
    IE 6.0        
    IE 6.0        
    IE 6.0        
    IE 6.0        
    IE 6.0        
    IE 5.5        
    IE 5.5        
    IE 5.5        
    IE 5.5        
    IE 5.5        
    IE 5.5        
    IE 5.5        
    IE 5.5        
    Net 6.0        
    Net 6.0        
    Net 6.0        
    Net 6.0        
    Net 6.0        
    Net 6.0        
    Net 6.0        
    Net 6.0        
    Net 6.1        
    Net 6.1        
    Net 6.1        
    Net 6.1        
    Net 6.1        
    Net 6.1        
    Net 6.1        
    Net 6.1        
    Moz 1.1        
    Moz 1.1        
    Moz 1.1        
    Moz 1.1        
    Moz 1.1        
    Moz 1.1        
    Moz 1.1        
    Moz 1.1        
    Net 7.0        
    Net 7.0        
    Net 7.0        
    Net 7.0        
    Net 7.0        
    Net 7.0        
    Net 7.0        
    Net 7.0        
    Opera 7        
    Opera 7        
    Opera 7        
    Opera 7        
    Opera 7        
    Opera 7        
    Opera 7        
    Opera 7        

Таким же образом мы проецируем каждую переменную (входной параметр).


2ой столбец - плагины:
1 = None
2 = RealPlayer
3 = MediaPlayer
4 = 4. У нас нет 4ого значения плагинов. Так и оставяем "4"

3ий столбец - ОС клиента
1 = Windows 95
2 = Windows 98
3 = Windows ME
4 = Windows NT
5 = Windows 2000
6 = Windows XP
7 = 7. У нас нет 7ого значения ОС клиента. Так и оставяем "7"
8 = 8. У нас нет 8ого значения ОС клиента. Так и оставяем "8"

4ой столбец - веб серверы
1 = IIS
2 = Apache
3 = WebLogic
4 = 4. У нас нет 4ого значения веб серверов. Так и оставяем "4"

5ый столбец - ОС сервера:
1 = Windows 2003
2 = Windows 2008
3 = Linux
4 = 4. У нас нет 4ого значения ОС сервера. Так и оставяем "4"

Итого:

# строки Browser Plug-in Client OS Server Server OS
    IE 5.0   None   Win 95   IIS   Win NT
    IE 5.0     Win ME    
    IE 5.0     Win 98    
    IE 5.0   None   Win NT   IIS   Win NT
    IE 5.0   MediaPlayer   Win 2000   WebLogic   Linux
    IE 5.0   RealPlayer     Apache   Win 2000
    IE 5.0   RealPlayer   Win XP   Apache   Win 2000
    IE 5.0   MediaPlayer     WebLogic   Linux
    IE 6.0     Win 95   WebLogic   Linux
    IE 6.0   None   Win ME   Apache   Win 2000
    IE 6.0   None   Win 98   Apache   Win 2000
    IE 6.0     Win NT   WebLogic   Linux
    IE 6.0   RealPlayer   Win 2000   IIS   Win NT
    IE 6.0   MediaPlayer      
    IE 6.0   MediaPlayer   Win XP    
    IE 6.0   RealPlayer     US   Win NT
    IE 5.5   MediaPlayer   Win 95   Apache   Win NT
    IE 5.5   RealPlayer   Win ME   WebLogic  
    IE 5.5   RealPlayer   Win 98   WebLogic  
    IE 5.5   MediaPlayer   Win NT   Apache   Win NT
    IE 5.5   None   Win 2000     Linux
    IE 5.5       IIS   Win 2000
    IE 5.5     Win XP   IIS   Win 2000
    IE 5.5   None       Linux
    Net 6.0   RealPlayer   Win 95     Linux
    Net 6.0   MediaPlayer   Win ME   IIS   Win 2000
    Net 6.0   MediaPlayer   Win 98   IIS   Win 2000
    Net 6.0   RealPlayer   Win NT     Linux
    Net 6.0     Win 2000   Apache   Win NT
    Net 6.0   None     WebLogic  
    Net 6.0   None   Win XP   WebLogic  
    Net 6.0       Apache   Win NT
    Net 6.1   RealPlayer   Win 95     Win 2000
    Net 6.1   MediaPlayer   Win ME   IIS   Linux
    Net 6.1   MediaPlayer   Win 98   IIS   Linux
    Net 6.1   RealPlayer   Win NT     Win 2000
    Net 6.1     Win 2000   Apache  
    Net 6.1   None     WebLogic   Win NT
    Net 6.1   None   Win XP   WebLogic   1 Win NT
    Net 6.1       Apache  
    Moz 1.1   MediaPlayer   Win 95   Apache  
    Moz 1.1   RealPlayer   Win ME   WebLogic   Win NT
    Moz 1.1   RealPlayer   Win 98   WebLogic   Win NT
    Moz 1.1   MediaPlayer   Win NT   Apache  
    Moz 1.1   None   Win 2000     Win 2000
    Moz 1.1       IIS   Linux
    Moz 1.1     Win XP   IIS   Linux
    Moz 1.1   None       Win 2000
    Net 7.0     Win 95   WebLogic   Win 2000
    Net 7.0   None   Win ME   Apache   Linux
    Net 7.0   None   Win 98   Apache   Linux
    Net 7.0     Win NT   WebLogic   Win 2000
    Net 7.0   RealPlayer   Win 2000   IIS  
    Net 7.0   MediaPlayer       Win NT
    Net 7.0   MediaPlayer   Win XP     Win NT
    Net 7.0   RealPlayer     IIS  
    Opera 7   None   Win 95   IIS  
    Opera 7     Win ME     Win NT
    Opera 7     Win 98     Win NT
    Opera 7   None   Win NT   IIS  
    Opera 7   MediaPlayer   Win 2000   WebLogic   Win 2000
    Opera 7   RealPlayer     Apache   Linux
    Opera 7   RealPlayer   Win XP   Apache   Linux
    Opera 7   MediaPlayer     WebLogic   Win 2000


Что делать с не назначеными значениями (4=4,7=7 и др.) му уже знаем - выберите им любые валидные значения для переменной и запишите в таблицу.

Вот и все, можно составлять тест кейсы.

Еще раз хочу обратить внимание - выбрать подходящий ортогональный массив и заполнить его помогут различные тулзы на подобие http://www.testersdesk.com/pairwse_testersdesk.html. Вам всего лиш нужно будет определить входные данные и количество значений входных данных.

Будем считать с pairwise testing на основе ортогональных массивов мы разобрались. Следующим постом пойдет повествование о pairwise testing на основе Allpairs Algorithm.

Наши рекомендации