Тестване по опит
Накратко: Опитът знае къде обикновено има грешки: нула, отрицателно, много голямо, двоен клик, полунощ, остатък от стара логика. Предположението за грешки превръща това в атаки. Изследователското тестване учи системата, докато я тества, по харта, в сесия с ограничено време и с бележки. Чеклистът пази опита на екипа. Трите намират това, което правилото не казва, и затова допълват другите техники.
Проблем
Десет минути, три грешки
Доставката е тествана по класове и граници. Отстъпките по таблица на решения. Поръчката по преходите. Всичко минава.
Колежка от поддръжката, работила в три онлайн магазина, сяда пред него за десет минути. Натиска „Плати“ два пъти бързо: две поръчки, две плащания. Въвежда кода с интервал отпред: „Кодът е изтекъл“, макар че не е. Слага в количката 150 € и плаща 4,90 € доставка.
Нито една от трите грешки не идва от правило. Идват от опита какво обикновено се чупи.
Идеята
Техниките по опит
Последната група техники не тръгва от правилото и не тръгва от кода. Тръгва от опита на тестера: какви грешки е виждал, къде, в какви системи.
- Предположение за грешки (error guessing): тестове към местата, където по опит обикновено има грешки.
- Изследователско тестване (exploratory testing): учиш системата, докато я тестваш, и всеки резултат насочва следващия тест.
- Тестване по чеклист (checklist-based testing): опитът на екипа, записан като въпроси.
Те намират това, което правилото не казва. Слабостта им е, че зависят от човека и не дават мерило „колко е покрито“. Затова допълват техниките от предните уроци, а не ги заменят.
Идеята
Предположение за грешки
Опитните тестери носят в главата си списък: къде обикновено има грешка. Списък за магазин:
- нула и празно: празна количка, празно поле за код, 0 бройки;
- отрицателно и абсурдно: -1 бройка, сума 999 999 €;
- много голямо: поръчка за 250 €, когато всички тестове са до 80 €;
- текст, написан различно: код с малки букви, с интервал отпред, копиран с нов ред;
- повторено действие: двоен клик на „Плати“, „назад“ след плащането, същият код в два раздела;
- време: полунощ в последния ден на кода, часови зони, 29 февруари;
- остатъци: стара логика, която никой не е махнал („от 100 € пак 4,90“);
- какво остава след грешка: отказът изпразва ли количката, остава ли половин поръчка.
Когато списъкът се пусне систематично срещу системата, всеки ред става атака (fault attack). Някои от тях отварят въпроси, на които правилото не отговаря: трябва ли кодът с малки букви да важи? Това не решава тестерът, а собственикът.
По-точно, за любопитните
ISTQB CTFL v4.0.1 описва техниките по опит в раздел 4.4: error guessing (с атаките като систематичен начин да се приложи), exploratory testing и checklist-based testing. Списъкът на предположенията идва от опита на тестера, от историята на дефектите в системата и от познати видове грешки в подобни системи.
Пробвай
Атака: нула и много
От списъка с атаки вземи „нула“ и „много голямо“. Напиши ги като тестове на доставката.
Правилото: Доставката е безплатна при поръчка от 50 € включително, иначе е 4,90 €. Празна количка не се поръчва.
| Вход | Очаквано | Правилната система | |||
|---|---|---|---|---|---|
| # | Сума на количката | Отказ | Доставка | ||
Празна клетка за резултат не се проверява. Сумите се пишат като 49,99.
Решение
| Сума на количката | Отказ | Доставка |
|---|---|---|
| 0 | да | |
| 250 | не | 0 |
0 € хваща празната количка, която плаща доставка. 250 € хваща остатъка от старата тарифа, в която от 100 € доставката пак е 4,90 €. По правилото 70 € и 250 € са един клас, затова класовете и границите не подсказват втория тест. Подсказва го опитът: „всичко над нещо“ често има още едно „над нещо“, забравено в кода.
Идеята
Изследователско тестване
При изследователското тестване не пишеш тестовите случаи предварително. Учиш системата, проектираш и пускаш тестовете едновременно. Видиш ли нещо странно, следващият тест е там.
Не значи „щракам наслуки“. Има три неща, които го правят работа, а не разходка:
- Харта (charter): една цел за сесията. Удобен шаблон: „Изследвай [какво] с [какво], за да откриеш [какво].“ Например: „Изследвай промо кода с изтекли, ползвани и написани с малки букви кодове, за да откриеш как магазинът казва на клиента защо кодът не важи.“
- Сесия с ограничено време: обикновено 60 до 90 минути, без прекъсване, само по хартата. Видиш ли нещо извън нея, записваш го за следваща сесия.
- Бележки: какво тества, как, какво намери, какви въпроси има. Накрая има разбор с водещия на тестването: какво е намерено, какво остава, каква е следващата харта.
По-точно, за любопитните
Шаблонът „Explore … with … to discover …“ е от книгата на Елизабет Хендриксън „Explore It!“ (2013). Тестването на сесии с харти и разбор (session-based test management) е описано от Джонатан и Джеймс Бах около 2000 г. CTFL v4.0.1 казва, че изследователското тестване е най-полезно, когато спецификацията е бедна или неадекватна, времето е малко, или като допълнение на по-формалните техники. И че работи най-добре с опитни тестери, които познават областта.
Пробвай
Хартата и бележките
Идеята
Тестване по чеклист
Списъкът с атаки в главата на една колежка помага на един екип. Записан, помага на всички. Тестването по чеклист пуска срещу системата списък с въпроси или условия, които трябва да се проверят.
Чеклист за всяка нова форма в магазина:
- празно поле, най-дългият позволен текст, един знак повече;
- интервали отпред и отзад, малки и главни букви;
- кирилица, латиница, специални знаци;
- двоен клик на бутона, „назад“ след изпращане;
- с клавиатура, без мишка; с четец на екрана;
- съобщението за грешка казва какво да се поправи.
Това е родственик на чеклиста за рецензия, само че за работещата система, не за документа. И има същия риск: остарял чеклист се изпълнява механично, а новите грешки минават покрай него. Затова се обновява с всеки дефект, който се е изплъзнал.
Пробвай
Сесията
Подреди една изследователска сесия от хартата до следващата стъпка.
Бележките: какво е тествано, находки, въпроси, идеиСесията: 60 до 90 минути без прекъсване, само по хартатаХартата: какво, с какво и какво търсишРазборът: с водещия на теста, какво е намерено и какво оставаСледващата стъпка: доклади за дефектите, въпроси към собственика, нови харти
Хартата е преди сесията, бележките са по време на нея, разборът е след нея. Находките от разбора стават доклади за дефекти, въпроси към собственика и нови харти. Така изследването не свършва с „поразгледах“.
Упражнение
Атаки на лимита
1. Отрицателно и какво остава. Двете атаки от списъка: отрицателно количество и „какво остава в количката след отказ“.
Напиши атаките срещу лимита в количката: отрицателно количество и добавяне над лимита. Провери и какво остава в количката.
Правилото: В количката може да има най-много 10 бройки от един продукт. Добавяне над 10 се отказва със съобщение, а количката остава същата. Добавя се поне 1 бройка.
| Вход | Очаквано | Правилната система | ||||
|---|---|---|---|---|---|---|
| # | В количката | Добавям | Отказ | В количката след това | ||
Празна клетка за резултат не се проверява. Сумите се пишат като 49,99.
Решение
| В количката | Добавям | Отказ | В количката след това |
|---|---|---|---|
| 3 | -1 | да | 3 |
| 8 | 5 | да | 8 |
(3, добавям -1) хваща версията, която отказва само 0 и пуска отрицателно количество да маха бройки. (8, добавям 5) е отказ, а количката трябва да остане с 8. Ако не провериш какво остава, версията, която при отказ изпразва количката, минава: отказът е там, а клиентът губи всичко, което е избрал.
Тест
Провери се
Свързани уроци
Раздел „Свързани уроци“- Нужно отпреди: Гранични стойности · Таблица на решения · Преходи на състоянията · Покритие на кода
- Продължава в: Защо и какво да автоматизираш
- Задачи по темата: Техники за тестов дизайн