vyvchy
    Теми розділу

    02 · Тест-дизайн

    Дослідницьке тестування

    Зміст

    Скриптований тест перевіряє лише те, що ти придумав заздалегідь. А найдорожчі баги ховаються саме там, куди жоден кейс не дивиться: у несподіваній послідовності дій, у комбінації, якої немає у вимогах, у поведінці, про яку аналітик не подумав. Дослідницьке тестування (exploratory testing) — підхід, у якому тестувальник вивчає продукт, придумує перевірки й виконує їх одночасно, і результат кожної перевірки підказує наступну.

    На співбесідах тема звучить майже завжди — і майже завжди як фільтр. Половина кандидатів відповідає «це коли клацаєш без тест-кейсів», і на цьому розмова про них закінчується. Різниця між дослідницьким тестуванням і безладним клацанням — це і є те, що інтерв'юер хоче почути. Розберімо механізм, а не лише означення.

    Одночасне вивчення, дизайн і виконання

    У скриптованому підході фази рознесені в часі: спочатку аналіз вимог, потім дизайн тест-кейсів, потім — можливо, через тижні — виконання. У дослідницькому цей цикл стискається до хвилин: ти виконуєш перевірку, бачиш реакцію продукту, дізнаєшся щось нове — і це нове народжує наступну перевірку. Тестування перетворюється на розслідування: кожен «свідок» (відповідь системи) підказує, кого допитувати далі.

    Вивчення продукту

    Ідея наступної перевірки

    Виконання

    Спостереження:
    що продукт відповів?

    Вивчення продукту

    Ідея наступної перевірки

    Виконання

    Спостереження:
    що продукт відповів?

    Ключова думка: результат попереднього тесту — головне джерело наступного. Саме тому exploratory неможливо повністю розписати наперед — план з'являється в процесі. Але це не відмова від тест-дизайну, а тест-дизайн у реальному часі: ті самі класи еквівалентності й граничні значення, просто застосовані на льоту, без проміжного артефакту у вигляді кейсу.

    Чому це працює? По-перше, специфікація ніколи не повна: частина знань про продукт з'являється лише під час взаємодії з ним. По-друге, скриптовані набори з часом «вигорають» — парадокс пестицидів: одні й ті самі кейси перестають знаходити нові баги. Свіжий погляд дослідника проходить там, де регресійний набір уже нічого не бачить.

    У силабусі ISTQB CTFL 4.0 дослідницьке тестування — одна з досвідних технік (experience-based techniques), поруч із передбаченням помилок і чеклистами. Це логічно: якість дослідження прямо залежить від багажу тестувальника — його «нюху», знання типових дефектів і вміння ставити продукту незручні питання.

    Exploratory vs ad hoc vs скриптоване

    Найчастіше питання співбесіди з цієї теми — різниця між трьома підходами.

    КритерійСкриптованеДослідницькеAd hoc
    Дизайн тестівЗаздалегідь, до виконанняОдночасно з виконаннямНемає як такого
    СтруктураТест-кейси з крокамиЧартер, таймбокс, нотаткиВідсутня
    ДокументаціяДо виконанняПід час виконанняЗазвичай жодної
    ВідтворюваністьВисокаСередня — за нотаткамиНизька
    Коли доречнеРегресія, приймання, база для автоматизаціїНова функціональність, розслідування ризиківШвидка перевірка гіпотези «на хвилинку»

    Межа між дослідницьким і ad hoc — дисципліна. В exploratory є місія (чартер), обмежений час і слід — нотатки, за якими можна відтворити знайдене і звітувати команді. Ad hoc — це імпровізація без місії й без сліду: сів, поклацав, щось знайшов (або ні), нічого не зафіксував. Ad hoc теж має право на життя — перевірити гіпотезу за п'ять хвилин, глянути білд «на живість», — але будувати на ньому стратегію тестування не можна: він не дає ні покриття, ні звітності.

    Важливо розуміти й те, що чистих полюсів у реальності мало. Скриптоване і дослідницьке — це спектр: навіть виконуючи детальний кейс, хороший тестувальник дивиться навколо кроків («а що як тут натиснути двічі?»), а досвідчений дослідник тримає в голові цілком скриптовану структуру технік.

    Сесійний підхід: чартер, таймбокс, дебриф

    Головний закид менеджера до exploratory: «як я дізнаюся, що ви там натестували?» Відповідь — сесійний підхід (session-based test management, SBTM), який запропонували Джеймс і Джонатан Бахи. Він робить дослідження вимірюваним і підзвітним, не вбиваючи його гнучкості. Складники:

    Чартер (charter) — місія сесії одним-двома реченнями: що досліджуємо, якими ресурсами, яку інформацію шукаємо. Формула з книги «Explore It!» Елізабет Гендріксон: досліди ціль, використовуючи ресурси, щоб знайти інформацію. Приклад: «Дослідити імпорт контактів із CSV, використовуючи файли з нестандартними кодуваннями й розділювачами, щоб знайти проблеми обробки даних». Чартер задає напрям, але не кроки — всередині місії тестувальник вільний.

    Таймбокс — сесія фіксованої довжини, зазвичай 60–120 хвилин, без перемикань на інші задачі. Коротше — не встигаєш заглибитися; довше — падає концентрація, а сесію стає важко обліковувати. Час сесії в SBTM розкладають на три види роботи: налаштування середовища (setup), власне тестування (test) і розслідування та документування багів (bug). Це не бюрократія, а діагностика: якщо 70% сесії з'їв setup — проблема не в тестувальнику, а в середовищі.

    Сесійний звіт (session sheet) — нотатки, які пишуться під час сесії: що покрито, що знайдено, які питання лишилися.

    Дебриф (debrief) — коротка розмова з лідом або командою після сесії. У SBTM для неї є агенда PROOF: Past (що робив), Results (що знайшов), Obstacles (що заважало), Outlook (що далі), Feelings (яке враження від якості). Питання й ризики з дебрифу перетворюються на нові чартери — цикл замикається.

    Так

    Ні

    Чартер: місія сесії

    Сесія 60–120 хв
    без перемикань

    Сесійний звіт:
    покриття, баги, питання

    Дебриф: PROOF

    Нові ризики
    чи питання?

    Нові чартери в беклог

    Область досліджено

    Так

    Ні

    Чартер: місія сесії

    Сесія 60–120 хв
    без перемикань

    Сесійний звіт:
    покриття, баги, питання

    Дебриф: PROOF

    Нові ризики
    чи питання?

    Нові чартери в беклог

    Область досліджено

    Для команди сесія — облікова одиниця: скільки сесій витрачено на область, скільки багів вони принесли, скільки чартерів у черзі. Це і є відповідь менеджеру.

    Тури: готові маршрути дослідження

    Чартер каже, куди йти, але не каже, як дивитися. Джеймс Віттакер у книзі «Exploratory Software Testing» запропонував метафору туриста: продукт — місто, тестувальник — турист, а тур — маршрут із певним фокусом уваги. Кілька найуживаніших:

    ТурФокус
    Тур грошей (money tour)Функції, за які продукт купують: те, що показують у демо клієнтам. Падіння тут — найдорожче
    Тур орієнтирів (landmark tour)Обрати ключові функції-«пам'ятки» і пройтися між ними в різному порядку, перевіряючи кожну
    Інтелектуальний тур (intellectual tour)Ставити продукту найскладніші питання: найзаплутаніші дані, найбільші документи, найдовші ланцюжки дій
    Тур FedExСлідувати за даними: простежити, як введене значення проходить систему — створення, збереження, відображення, експорт
    Тур поганого району (bad neighborhood tour)Області, де вже знаходили баги: дефекти скупчуються, вчорашнє звалище багів варте повторного візиту
    Тур диванного лежня (couch potato tour)Мінімум зусиль: лишати дефолтні значення, пропускати необов'язкові поля, нічого не вводити
    Тур саботажника (saboteur tour)Почати операцію — і завадити їй: обірвати мережу, видалити файл, відкликати права посеред процесу

    Тури не взаємовиключні — це різні окуляри на ту саму фічу. Вибір туру = вибір ризику: для нового продукту природно почати з туру орієнтирів і туру грошей, перед релізом — пройтися поганим районом, для фічі з інтеграціями — тур FedEx.

    Евристики генерації ідей

    «А що перевірити далі?» — головне робоче питання дослідника. Ідеї не беруться з повітря: їх дає досвід плюс евристики — компактні підказки, які розгортаються у десятки перевірок.

    • SFDIPOT — сім кутів погляду на продукт із Heuristic Test Strategy Model Джеймса Баха: Structure (з чого продукт складається), Function (що він робить), Data (що споживає і продукує), Interfaces (через що з ним взаємодіють), Platform (від чого залежить), Operations (як його реально використовують), Time (усе, що пов'язане з часом і послідовністю). Застряг — пройдися списком, і мінімум один кут виявиться непокритим.
    • Евристики даних: нуль / один / багато; порожній рядок, самі пробіли, юнікод, emoji, наддовгий текст; значення на межах і поза ними — все, що ти знаєш із класичних технік, працює і на льоту.
    • Переривання й повтори: закрити вкладку посеред операції, натиснути «Зберегти» двічі поспіль, повернутися кнопкою «Назад» після сабміту, зробити те саме у двох вкладках паралельно.
    • RCRCRC — евристика Карен Джонсон для вибору, що дослідити в регресії: Recent (нове), Core (ядро), Risky (ризикове), Configuration-sensitive (чутливе до оточення), Repaired (щойно полагоджене), Chronic (хронічно проблемне).

    Помітна закономірність: евристики — це конденсат тих самих технік тест-дизайну. Дослідник не відмовляється від класів еквівалентності чи таблиць рішень — він застосовує їх у голові, за секунди, без артефактів. Тому exploratory і вважається технікою для досвідчених: у джуна цей «конденсат» ще не накопичився. Як обирати між підходами системно — окрема розмова в главі про вибір і комбінування технік.

    Нотатки й репортинг

    Нотатки — те, що відрізняє дослідження від блукання. Без сліду exploratory деградує в ad hoc: баг без кроків відтворення нічого не вартий, а команда не знає, що вже покрито, і піде перевіряти те саме вдруге.

    Що фіксувати під час сесії:

    • чартер, білд і середовище — без цього нотатки не мають контексту;
    • маршрут: які області пройдено, з якими даними;
    • баги — і «майже баги»: дивну поведінку, яка поки не відтворюється;
    • питання до аналітика чи розробника;
    • ідеї для наступних чартерів.

    Форма — легка: текстовий файл, session sheet у TMS, замітки з таймстемпами. Головне правило: нотатки пишуться під час сесії, а не після. Через годину після сесії деталі вже втрачено — саме тому «потім задокументую» не працює. Для вебу найцінніший додаток до нотаток — вкладка Network і збережений HAR-файл: мережевий слід часто відповідає на питання «що саме тоді сталося» краще за пам'ять (як ним користуватися — у главі про DevTools і вкладку Network).

    Знайдені баги далі живуть звичайним життям — баг-репорт, пріоритезація, життєвий цикл дефекту (це територія розділу «Основи тестування»). Специфіка exploratory лише в тому, що кроки відтворення доводиться реконструювати з нотаток — ще один аргумент писати їх одразу.

    Місце поруч з автоматизацією

    Поширений страх: «усе автоматизують — мануальне тестування помре». З exploratory рівно навпаки: що більше рутини забирає автоматизація, то більше часу лишається на дослідження. Поділ праці такий:

    • Автоматизація перевіряє відоме. Автотест — це скриптована перевірка очікування, яке хтось уже сформулював. Вона захищає від регресії і робить це швидко, щоразу й однаково.
    • Exploratory шукає невідоме. Те, на що ніхто не написав перевірку, автотест не зловить за побудовою — він не вміє дивуватися.

    Ці дві діяльності живлять одна одну. Найпрактичніший цикл: сесія знаходить баг → баг лагодять → перевірка стає скриптованим регресійним автотестом, щоб знахідка не повернулася:

    // Народжено сесією: після зміни валюти сума в кошику не перераховувалась
    test('сума кошика перераховується після зміни валюти', async ({ page }) => {
      await page.goto('/cart');
      await expect(page.getByTestId('cart-total')).toContainText('₴');
      await page.getByLabel('Валюта').selectOption('EUR');
      await expect(page.getByTestId('cart-total')).toContainText('€');
    });

    Працює і зворотний напрям: інструменти автоматизації підсилюють дослідження. Перехоплення запитів дозволяє на льоту симулювати відповіді сервера — помилку 500, порожній список, повільну мережу — і дослідити стани, які руками не викликати (механіка — у главі про перехоплення й мокання мережі). Скрипт, що генерує тестові дані чи доводить систему до потрібного стану, економить setup-час сесії. Дослідник з інструментами бачить більше, ніж дослідник з самою лише мишкою.

    Типові помилки

    • Виглядає як «exploratory — це просто клацати без плану», а насправді це дисциплінований підхід: місія, обмежений час, слід у нотатках. Прибери будь-який із трьох складників — отримаєш ad hoc.
    • Виглядає як «техніка для новачків — кейси ж писати не треба», а насправді все навпаки: якість дослідження прямо пропорційна досвіду. Новачок без багажу евристик знайде в сесії менше, ніж сеньйор за ті самі 90 хвилин.
    • Виглядає як «нотатки допишу після сесії», а насправді після сесії деталі вже втрачено: кроки відтворення не збираються, і найцінніша знахідка знецінюється до «щось десь падало».
    • Виглядає як «замінимо регресію дослідницькими сесіями», а насправді exploratory погано повторюване за побудовою — воно щоразу йде іншим маршрутом. Регресію тримають скриптовані перевірки й автотести; сесії шукають те, чого в регресії ще немає.
    • Виглядає як «чартер обмежує свободу дослідження», а насправді чартер лише тримає фокус: сесія без місії розповзається на «всього потроху» і не дає глибини ніде.

    Підсумок

    1. Дослідницьке тестування — це одночасні вивчення продукту, дизайн і виконання тестів; результат попереднього тесту — головне джерело наступного.
    2. Від ad hoc його відрізняє дисципліна: чартер (місія), таймбокс, нотатки, дебриф. Без них дослідження перетворюється на блукання.
    3. Сесія — облікова одиниця дослідження: місія + 60–120 хвилин без перемикань + звіт. Так exploratory стає вимірюваним для команди.
    4. Ідеї беруться не з повітря: тури задають маршрут, евристики (SFDIPOT, дані, переривання, RCRCRC) генерують перевірки, а класичні техніки працюють «на льоту».
    5. Автоматизація тримає відоме, дослідження шукає невідоме; знахідки сесій стають новими регресійними автотестами.

    Що питають на співбесіді

    • «Що таке дослідницьке тестування?» — інтерв'юер чекає ключове: одночасність вивчення, дизайну й виконання. Відповідь «тестування без документації» — червоний прапорець.
    • «Чим exploratory відрізняється від ad hoc?» — найпопулярніша пастка теми. Сильна відповідь містить слова «чартер», «таймбокс», «нотатки»: ad hoc — без місії і без сліду.
    • «Розкажіть про сесійний підхід» — перевіряють, чи знаєш будову: чартер → сесія → сесійний звіт → дебриф, і навіщо кожен елемент.
    • «Як ви документуєте результати дослідницького тестування?» — фільтр практики: кандидат, який «ніяк не документує», exploratory насправді не робив.
    • «Коли ви оберете exploratory, а коли тест-кейси?» — дивляться на критерії: новизна функціональності, потреба у відтворюваності, наявність вимог, час.
    • «Як дослідницьке тестування поєднується з автоматизацією?» — чекають розуміння поділу праці: автотести тримають відоме, сесії шукають нове, знахідки конвертуються в автотести.

    На junior-рівні інтерв'юер найперше перевіряє одне: чи не вважаєш ти exploratory хаотичним клацанням. Покажи структуру — чартер, сесію, нотатки — і питання зазвичай закривається на твою користь.

    Джерела

    • ISTQB CTFL 4.0 Syllabus — розділ 4.4 «Experience-based Test Techniques»; ця глава покриває підрозділ про exploratory testing.
    • ISTQB Glossary — канонічні означення exploratory testing, ad hoc testing, test charter.
    • Satisfice: Exploratory Testing — матеріали Джеймса Баха про дослідницьке тестування і session-based test management.
    • James Whittaker, «Exploratory Software Testing» (Addison-Wesley, 2009) — першоджерело метафори турів.
    • Elisabeth Hendrickson, «Explore It!» (Pragmatic Bookshelf, 2013) — чартери, евристики й практика сесій.