Таблица на решения
Накратко: В таблицата на решения всяка колона е комбинация от условия с един резултат, и всяка колона е тестов случай. Три условия с „да“ или „не“ дават 8 колони. Колони с еднакъв резултат, които се различават само по едно условие, се сливат с „—“ (няма значение), и тестовете стават по-малко. Празната или спорна клетка е въпрос към собственика.
Проблем
Три теста, грешна цена
Правилото за отстъпките ти е познато: промо кодът дава 10 %, не важи за намалени продукти; лоялните клиенти имат 5 %, и за намалените; отстъпките не се събират, важи по-голямата.
Тестерът пише три теста: клиент с код (10 %), лоялен клиент без код (5 %), клиент без нищо (0 %). Минават.
След пускането лоялна клиентка въвежда код за продукт без намаление и получава 15 %. Всяко условие беше тествано. Комбинацията, в която живееше грешката, не беше.
Идеята
Всяка колона е тест
В урока „Когато таблицата е по-ясна“ таблицата на решения беше изискване. Сега е тестов дизайн: всяка колона е тестов случай.
| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | |
|---|---|---|---|---|---|---|---|---|
| Кодът е валиден | да | да | да | да | не | не | не | не |
| Продуктът е в намаление | да | да | не | не | да | да | не | не |
| Клиентът е лоялен | да | не | да | не | да | не | да | не |
| Отстъпка | ? | ? | ? | 10 % | ? | ? | 5 % | 0 % |
Тестовете от началото бяха колони 4, 7 и 8. Грешката беше в колона 3. Покритието на таблицата е колко от колоните са тествани: тук 3 от 8.
Пълната таблица е лесна за правене: условията стават редове, а колоните са всички комбинации. Три условия с „да“ или „не“ дават 2 × 2 × 2 = 8.
Пробвай
Колоните като тестове
Попълни отстъпката за всяка от осемте колони. Тук колоните на таблицата са редове: всеки ред е един тестов случай.
Правилото: Валиден промо код дава 10 %, но не важи за продукти в намаление. Лоялният клиент има 5 %, и за намалените продукти. Отстъпките не се събират: важи по-голямата.
| Вход | Очаквано | Правилната система | ||||
|---|---|---|---|---|---|---|
| # | Валиден код | В намаление | Лоялен | Отстъпка | ||
Отстъпката се пише като число: 10 или 10 %. Празна клетка за резултат не се проверява.
Решение
| Валиден код | В намаление | Лоялен | Отстъпка |
|---|---|---|---|
| да | да | да | 5 |
| да | да | не | 0 |
| да | не | да | 10 |
| да | не | не | 10 |
| не | да | да | 5 |
| не | да | не | 0 |
| не | не | да | 5 |
| не | не | не | 0 |
Колона 3 (валиден код, без намаление, лоялен клиент) хваща две грешки: събраните отстъпки (15 %) и по-малката вместо по-голямата (5 %). Колона 1 хваща кода, който изключва лоялността и за намален продукт дава 0 %. Пълната таблица не пропуска нищо, защото пробва всяка комбинация.
Идеята
Съкращаване
Погледни колони 1 и 5. Различават се само по кода, а резултатът е един: 5 %. Когато продуктът е в намаление и клиентът е лоялен, кодът няма значение. Двете колони се сливат в една, а на мястото на кода се пише „—“.
| 1+5 | 2+6 | 3+4 | 7 | 8 | |
|---|---|---|---|---|---|
| Кодът е валиден | — | — | да | не | не |
| Продуктът е в намаление | да | да | не | не | не |
| Клиентът е лоялен | да | не | — | да | не |
| Отстъпка | 5 % | 0 % | 10 % | 5 % | 0 % |
Осем теста стават пет. Това е съкращаването на таблицата.
Цената му: сливането казва „по правилото това условие няма значение“. Но черната кутия не знае дали кодът е съгласен. Колони 3 и 4 се сливат в „код да, намаление не“, а колона 3 е точно тази, в която кодът даваше 15 %. Ако от слятата колона тестваш само нелоялен клиент, грешката минава.
Тестът не може да е „—“: на мястото на тирето се избира стойност. Избери тази, при която грешка е най-вероятна. Затова за рисковите правила се тества пълната таблица, а съкращава се, когато тестовете са скъпи и рискът е малък.
По-точно, за любопитните
ISTQB CTFL v4.0.1 описва техниката в раздел 4.2.3 (decision table testing). Условията и действията са редове, колоните са правилата (комбинациите). Нотацията: „T“ и „F“ (или „да“ и „не“) за условията, „—“ за условие без значение, „N/A“ за невъзможна комбинация, „X“ за действие, което се изпълнява. Покритието е броят тествани колони върху всички възможни (без невъзможните). Съкращаването (collapsing, minimization) намалява броя на тестовете, но програмата казва, че така се губи част от проверката.
Пробвай
Слей колоните
Направи съкратената таблица: най-много 5 реда, които пак хващат всички грешки. Където в урока има „—“, избери стойност.
Правилото: Валиден промо код дава 10 %, но не важи за продукти в намаление. Лоялният клиент има 5 %, и за намалените продукти. Отстъпките не се събират: важи по-голямата.
| Вход | Очаквано | Правилната система | ||||
|---|---|---|---|---|---|---|
| # | Валиден код | В намаление | Лоялен | Отстъпка | ||
Отстъпката се пише като число: 10 или 10 %. Празна клетка за резултат не се проверява.
Решение
| Валиден код | В намаление | Лоялен | Отстъпка |
|---|---|---|---|
| да | да | да | 5 |
| да | да | не | 0 |
| да | не | да | 10 |
| не | не | да | 5 |
| не | не | не | 0 |
При 3+4 лоялността е „да“: там отстъпките могат да се съберат. При 1+5 кодът е „да“: там кодът може да важи за намален продукт или да изключи лоялността. Пет реда хващат всичко, което хващат и осемте, но само с тези стойности. С „не“ на мястото на всяко тире таблицата е пак съкратена, а четири грешки минават.
Идеята
Повече от две стойности
„Кодът е валиден“ изглежда като „да“ или „не“. В магазина не е. Кодът може да е невъведен, валиден, изтекъл или вече ползван, и всяко дава различно нещо на клиента:
| 1 | 2 | 3 | 4 | 5 | |
|---|---|---|---|---|---|
| Кодът е въведен | не | да | да | да | да |
| Изтекъл е | N/A | не | да | не | да |
| Ползван е | N/A | не | не | да | да |
| Клиентът вижда | сумата без код | отстъпката | „Кодът е изтекъл“ | „Кодът вече е ползван“ | ? |
Две неща се виждат веднага.
Невъзможните комбинации. Невъведен код не може да е изтекъл. Тези колони се отбелязват като невъзможни (N/A) и не се тестват.
Празната клетка. Колона 5: кодът е и изтекъл, и ползван. Кое съобщение? Правилото не казва. Тестерът не решава вместо собственика. Това е находка, и тя излезе от таблицата, преди да има код. Затова тестовият дизайн е и рецензия.
Колоните растат бързо: условие с четири стойности и две с по две дават 4 × 2 × 2 = 16. При десет условия с „да“ или „не“ са 1024. Тогава правилото се дели на по-малки таблици, а комбинациите се избират с друга техника, като тестването по двойки по-нататък в модула.
Упражнение
Таблиците на кода
1. Какво казва таблицата? Четири въпроса, които тестерът намира, докато пише таблицата.
Тест
Провери се
Свързани уроци
Раздел „Свързани уроци“- Нужно отпреди: Критерии за приемане · Рецензия на спецификация · Класове на еквивалентност · Гранични стойности
- Продължава в: Преходи на състоянията · Тестване по двойки · Покритие на кода · Тестване по опит
- Задачи по темата: Техники за тестов дизайн