Към съдържанието
wannacode

Тестване по опит

Накратко: Опитът знае къде обикновено има грешки: нула, отрицателно, много голямо, двоен клик, полунощ, остатък от стара логика. Предположението за грешки превръща това в атаки. Изследователското тестване учи системата, докато я тества, по харта, в сесия с ограничено време и с бележки. Чеклистът пази опита на екипа. Трите намират това, което правилото не казва, и затова допълват другите техники.

Проблем

Десет минути, три грешки

Доставката е тествана по класове и граници. Отстъпките по таблица на решения. Поръчката по преходите. Всичко минава.

Колежка от поддръжката, работила в три онлайн магазина, сяда пред него за десет минути. Натиска „Плати“ два пъти бързо: две поръчки, две плащания. Въвежда кода с интервал отпред: „Кодът е изтекъл“, макар че не е. Слага в количката 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.

Идеята

Изследователско тестване

При изследователското тестване не пишеш тестовите случаи предварително. Учиш системата, проектираш и пускаш тестовете едновременно. Видиш ли нещо странно, следващият тест е там.

Не значи „щракам наслуки“. Има три неща, които го правят работа, а не разходка:

  • Харта (charter): една цел за сесията. Удобен шаблон: „Изследвай [какво] с [какво], за да откриеш [какво].“ Например: „Изследвай промо кода с изтекли, ползвани и написани с малки букви кодове, за да откриеш как магазинът казва на клиента защо кодът не важи.“
  • Сесия с ограничено време: обикновено 60 до 90 минути, без прекъсване, само по хартата. Видиш ли нещо извън нея, записваш го за следваща сесия.
  • Бележки: какво тества, как, какво намери, какви въпроси има. Накрая има разбор с водещия на тестването: какво е намерено, какво остава, каква е следващата харта.
По-точно, за любопитните

Шаблонът „Explore … with … to discover …“ е от книгата на Елизабет Хендриксън „Explore It!“ (2013). Тестването на сесии с харти и разбор (session-based test management) е описано от Джонатан и Джеймс Бах около 2000 г. CTFL v4.0.1 казва, че изследователското тестване е най-полезно, когато спецификацията е бедна или неадекватна, времето е малко, или като допълнение на по-формалните техники. И че работи най-добре с опитни тестери, които познават областта.

Пробвай

Хартата и бележките

1. Коя харта е най-добра?
2. По време на сесията забелязваш, че количката понякога показва старата сума след смяна на адреса. Това не е по хартата. Какво правиш?
3. Какво има в бележките от сесията?

Идеята

Тестване по чеклист

Списъкът с атаки в главата на една колежка помага на един екип. Записан, помага на всички. Тестването по чеклист пуска срещу системата списък с въпроси или условия, които трябва да се проверят.

Чеклист за всяка нова форма в магазина:

  • празно поле, най-дългият позволен текст, един знак повече;
  • интервали отпред и отзад, малки и главни букви;
  • кирилица, латиница, специални знаци;
  • двоен клик на бутона, „назад“ след изпращане;
  • с клавиатура, без мишка; с четец на екрана;
  • съобщението за грешка казва какво да се поправи.

Това е родственик на чеклиста за рецензия, само че за работещата система, не за документа. И има същия риск: остарял чеклист се изпълнява механично, а новите грешки минават покрай него. Затова се обновява с всеки дефект, който се е изплъзнал.

Пробвай

Сесията

Подреди една изследователска сесия от хартата до следващата стъпка.

  1. Бележките: какво е тествано, находки, въпроси, идеи
  2. Сесията: 60 до 90 минути без прекъсване, само по хартата
  3. Хартата: какво, с какво и какво търсиш
  4. Разборът: с водещия на теста, какво е намерено и какво остава
  5. Следващата стъпка: доклади за дефектите, въпроси към собственика, нови харти

Упражнение

Атаки на лимита

1. Отрицателно и какво остава. Двете атаки от списъка: отрицателно количество и „какво остава в количката след отказ“.

Напиши атаките срещу лимита в количката: отрицателно количество и добавяне над лимита. Провери и какво остава в количката.

Правилото: В количката може да има най-много 10 бройки от един продукт. Добавяне над 10 се отказва със съобщение, а количката остава същата. Добавя се поне 1 бройка.

ВходОчакваноПравилната система
#В количкатаДобавямОтказВ количката след това

Празна клетка за резултат не се проверява. Сумите се пишат като 49,99.

Тест

Провери се

1. Какво е предположение за грешки?
2. С какво изследователското тестване се различава от писането на тестови случаи предварително?
3. Защо техниките по опит не заменят класовете и границите?
4. Кога изследователското тестване е най-полезно?
5. Какво е рискът при чеклиста?

Създаден от Иво Гергов като част от кампанията на Evo Tech за достъпно обучение по програмиране ·