Какво покритието не казва
Накратко: Покритието на изискванията брои колко изисквания имат поне един тест. Не казва дали тестът хваща грешката, дали проверява цялото изискване, какво става, когато две правила се срещнат, и какво изобщо не е записано. Затова до числото винаги се пита „какво не е проверено и защо“.
Проблем
Сто процента, и пак грешно
Отчетът преди пускането на есенната кампания е зелен: всички изисквания са покрити, всички тестове минават.
Седмица по-късно поддръжката получава оплакване. Количка за 52,00 € с ЕСЕН10, след отстъпката 46,80 €. В количката пише „Доставка: безплатна“, а при плащането клиентът е таксуван 4,90 €. Количката смята прага преди отстъпката, а плащането след нея.
Доставката има тестове. Промо кодът има тестове. Но никой тест не пуска двете правила заедно. А когато QA пита кой отговор е верен, се оказва, че никой не е решил: прагът от 50 € преди отстъпката ли се смята, или след нея.
Идеята
Какво брои числото
Покритието на изискванията брои изискванията, които имат поне един тест. Четири от четири: 100 %. Нищо повече.
Числото не казва:
- Дали тестът хваща грешката. Тест за 120,00 € покрива „безплатна от 50,00 €“, но не хваща „над 50 €“. Отметката е истинска, тестът е слаб.
- Дали проверява цялото изискване. „Кодът дава 10 % и не важи за намалени продукти“ са две правила в едно изречение. Един тест за 10-те %, и редът е покрит.
- Какво става между изискванията. Матрицата има ред за правило, не за срещата на две правила. Количката за 52,00 € с код не е на нито един ред.
- Какво не е записано. Редове има само за изискванията в списъка. Изискване, което никой не е записал, не прави празен ред. То просто липсва.
Това са границите на покритието (coverage limits). Покритието е полезно. Нулата е тревога, а празният ред е истинска дупка. Но 100 % казва само, че няма празни редове.
По-точно, за любопитните
Покритието винаги е спрямо нещо: изисквания, класове на входа, граници, преходи, разклонения в кода. Ще ги видиш в модула „Техники за тестов дизайн“. 100 % по един критерий значи, че всички негови елементи са упражнени поне веднъж. Не значи, че няма дефекти: тестването показва, че има дефекти, а не че няма. Това е първият от седемте принципа на ISTQB CTFL v4.0.1 (раздел 1.3).
ISTQB CTFL v4.0.1 (раздел 1.4.4) посочва оценката на покритието като една от ползите на проследимостта. Покритието отговаря на въпроса „има ли тест за всяко изискване“. Колко добре тестът проверява е друг въпрос, и той има свои мерки.
Пробвай
Къде лъже числото?
Пробвай
Сто процента на отстъпките
Отбележи връзките, после двата чифта тестове, които проверяват едно и също. Виж колко е покритието и какво още не е проверено.
Тестове
- Т-1: Количка за 30,00 €: доставката е 4,90 €.
- Т-2: Количка за 120,00 €: доставката е безплатна.
- Т-3: Количка за 25,00 €: доставката е 4,90 €.
- Т-4: Тениска за 20,00 € с ЕСЕН10: 18,00 €.
- Т-5: Лоялен клиент, дънки в намаление за 40,00 €: 38,00 €.
- Т-6: Лоялен клиент с ЕСЕН10, тениска за 20,00 €: 18,00 €, не 17,00 €.
- Т-7: Тениска за 30,00 € с ЕСЕН10: 27,00 €.
Натисни клетката, където тестът проверява изискването; отново, за да махнеш връзката. Стрелките местят между клетките, Space или Enter отбелязва.
| Изисквания | Т-1: Количка за 30,00 €: доставката е 4,90 €. | Т-2: Количка за 120,00 €: доставката е безплатна. | Т-3: Количка за 25,00 €: доставката е 4,90 €. | Т-4: Тениска за 20,00 € с ЕСЕН10: 18,00 €. | Т-5: Лоялен клиент, дънки в намаление за 40,00 €: 38,00 €. | Т-6: Лоялен клиент с ЕСЕН10, тениска за 20,00 €: 18,00 €, не 17,00 €. | Т-7: Тениска за 30,00 € с ЕСЕН10: 27,00 €. | Покрито от |
|---|---|---|---|---|---|---|---|---|
| И-1 Доставката е безплатна от 50,00 € включително, иначе е 4,90 €. | 0 | |||||||
| И-2 Промо кодът дава 10 % отстъпка и не важи за намалени продукти. | 0 | |||||||
| И-3 Лоялният клиент получава 5 % отстъпка, и за намалени продукти. | 0 | |||||||
| И-4 Отстъпките не се сумират: важи по-голямата. | 0 | |||||||
| Проверява | 0 | 0 | 0 | 0 | 0 | 0 | 0 |
Еталонната матрица
- И-1: Т-1, Т-2, Т-3
- И-2: Т-4, Т-6, Т-7
- И-3: Т-5
- И-4: Т-6
Излишни: Т-1 / Т-3 (30 € и 25 € са в една и съща група: под 50 €.); Т-4 / Т-7 (тениска за 20 € и за 30 € с кода са един и същ случай: продукт без намаление, с 10 %.)
Всяко изискване е покрито, всеки тест е към изискване. И все пак:
- Никой тест не е на 50,00 €. Ако прагът стане „над 50 €“, всичко остава зелено.
- И-2 е покрито с три теста, но всички са за 10-те %. Кодът върху продукт в намаление не е проверен.
- Т-6 не е към И-3: 18,00 € излиза и ако лоялността изобщо не работи. Ако го вържеш, покритието не се сменя, но матрицата започва да лъже.
- Количката за 52,00 € с код я няма никъде, защото правилото за нея още не е решено.
Два от седемте теста повтарят други. Без тях покритието пак е 100 %, а дупките са същите.
Идеята
Грешката е между тях
Повечето правила в магазина са прости поотделно. Доставката е едно сравнение. Промо кодът е 10 %. Сложното е, когато се срещнат:
- прагът за доставка и отстъпката: преди или след?
- кодът и връщането: ако платената поръчка с кода се върне, може ли кодът да се ползва пак?
- кодът и лоялността върху продукт в намаление: кодът не важи, лоялността важи, значи 5 %. Отговорът следва от правилата, но тест за него няма.
Първите два въпроса нямат ред в матрицата, защото нямат изискване. Третият има отговор, но е между два реда. Това е и най-ценното, което можеш да направиш с матрицата: да погледнеш двойките редове и да питаш „а когато и двете важат?“. Понякога отговорът е нов тест. По-често е отворен въпрос към собственика, а после ново изискване.
Затова празното място в матрицата не е само празен ред. Понякога то е между два пълни.
Идеята
Когато числото стане цел
Ако ръководството поиска „100 % покритие до петък“ и гледа само това, ще го получи. Отметките ще се сложат набързо, част от тях там, където тестът само минава покрай изискването. Числото расте, а проверката не.
Затова до покритието в отчета стоят и други въпроси:
- Какво не е покрито и защо? Списък, не процент.
- Колко е важно непокритото? Цветът на бутона или плащането.
- На границите ли са тестовете? 49,99 и 50,00 €, 14-ият и 15-ият ден.
- Какво казват дефектите? Ако след пускането грешките идват от едно място, там тестовете са слаби, каквото и да казва числото.
Качеството на тестовете се мери другояче: тестовете се пускат срещу версия на системата с истинска грешка и се вижда дали падат. По-нататък в курса ще го правиш с всяка своя таблица и всеки свой сценарий.
По-точно, за любопитните
Наблюдението, че мярка, която стане цел, престава да бъде добра мярка, е известно като закон на Гудхарт (по икономиста Чарлз Гудхарт). Формулировката в този вид е по-късна, на антроположката Мерилин Стратърн.
Упражнение
Тестът, който липсва
1. Какво да добавиш. Матриците са пълни. Кой тест носи нещо ново?
Тест
Провери се
Свързани уроци
Раздел „Свързани уроци“- Нужно отпреди: Доброто изискване · Критерии за приемане · Матрицата на проследимостта · Промяна на изискване
- Задачи по темата: Проследимост