Использование ортогональных массивов
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.