Тестване по двойки
Накратко: Всички комбинации растат като произведение: 3 × 3 × 3 × 3 = 81. Тестването по двойки иска само всяка двойка стойности на два параметъра да се срещне поне в един тест, и тук стигат 9. Опитът показва, че повечето грешки зависят от един или два параметъра. Тези, които зависят от три наведнъж, двойките може да пропуснат.
Проблем
27 теста или 9
Магазинът почва да продава в Гърция и Румъния. Тестерът трябва да провери поръчката с всеки начин на плащане, всеки начин на доставка и всяка държава:
- плащане: карта, наложен платеж, банков превод;
- доставка: до адрес, до офис на куриер, до автомат;
- държава: България, Гърция, Румъния.
Всички комбинации са 3 × 3 × 3 = 27. Една ръчна поръчка от началото до края е 10 минути. Четири с половина часа. Утре идва и четвърти параметър, устройството (телефон, таблет, компютър), и стават 81.
Изчерпателното тестване е невъзможно и тук, само че по-бързо.
Идеята
Двойките
Повечето грешки не зависят от всичко наведнъж. Зависят от една стойност („банковият превод не работи“) или от две („наложеният платеж не работи за Румъния“). Грешки, които се показват само при три точни стойности наведнъж, са по-редки.
Тестването по двойки (pairwise) стъпва на това. То не иска всички комбинации. Иска всяка двойка стойности на всеки два параметъра да се срещне поне в един тест. Карта с офис, карта с Румъния, офис с Румъния, и така за всички двойки.
Тук стигат 9 теста, и за трите параметъра, и за четирите:
| № | Плащане | Доставка | Държава | Устройство |
|---|---|---|---|---|
| 1 | карта | до адрес | България | телефон |
| 2 | карта | до офис | Гърция | таблет |
| 3 | карта | до автомат | Румъния | компютър |
| 4 | наложен платеж | до адрес | Гърция | компютър |
| 5 | наложен платеж | до офис | Румъния | телефон |
| 6 | наложен платеж | до автомат | България | таблет |
| 7 | банков превод | до адрес | Румъния | таблет |
| 8 | банков превод | до офис | България | компютър |
| 9 | банков превод | до автомат | Гърция | телефон |
Вземи всеки два стълба. Всяка от деветте им двойки е някъде в таблицата, точно веднъж. 81 комбинации, 9 теста.
Пробвай
Колко са?
Идеята
Какво пропускат
Двойките са залог. Ако грешката се показва само при три стойности наведнъж (наложен платеж, до автомат, Румъния), а тази тройка я няма в деветте реда, тя минава.
Затова техниката не е за всичко:
- за много, почти независими параметри е отлична: настройки, браузъри и устройства, начини на плащане и доставка;
- за правило с число са граничните стойности, за комбинации, които правилото изрежда, е таблицата на решения, за път е машината на състоянията;
- за рискови тройки се добавят тестове на ръка, или се строи таблица по тройки.
Има и невъзможни комбинации. Ако, да кажем, наложен платеж до автомат не се предлага, тази двойка се забранява, и таблицата се строи без нея. А отделен тест проверява, че магазинът наистина не я позволява.
Таблицата по-горе е лесна, защото всички параметри имат по три стойности. В истинския живот не е така, и таблиците се строят с инструмент, не на ръка.
По-точно, за любопитните
В ISTQB CTFL v4.0 тестването по двойки не е част от програмата: там техниките на черната кутия са четири (класове, граници, таблици на решения, преходи). Комбинаторните техники, като тестването по двойки и дървото на класификациите, са в програмите от по-високо ниво, за анализатора на тестове (Advanced Level Test Analyst). Тук са, защото се ползват всеки ден и защото отговарят на въпроса „какво правя, когато таблицата на решения стане 1024 колони“.
Идеята, че повечето откази се предизвикват от взаимодействие на малко параметри, е подкрепена от изследвания на NIST върху истински системи. Инструментите за таблици по двойки са много: например PICT на Microsoft, с отворен код. Те поддържат и ограничения (забранени двойки), и по-високи степени: всяка тройка, всяка четворка.
Таблицата в урока е ортогонален масив L9: 9 реда за 4 параметъра с по 3 стойности. В него всяка двойка се среща точно веднъж. Инструментите обикновено дават таблици, в които някои двойки се повтарят, защото параметрите са с различен брой стойности.
Упражнение
Липсващата двойка
1. Счупената таблица. Някой е сменил един ред в таблицата по двойки.
Тест
Провери се
Свързани уроци
Раздел „Свързани уроци“- Нужно отпреди: Защо програмите грешат · Класове на еквивалентност · Таблица на решения
- Задачи по темата: Техники за тестов дизайн