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

    14 · AI для QA

    AI у дослідницькому тестуванні й аналізі вимог

    Зміст

    Дослідницьке тестування (exploratory testing) і аналіз вимог — це фази, де цінність тестувальника найменше про «прогнати кроки за списком» і найбільше про «поставити правильне питання». Саме тут виникає спокуса: якщо LLM (large language model) генерує правдоподібний текст тоннами, чи не може вона накидати тест-ідеї, вичитати вимогу на діри, поводити мишкою по застосунку замість мене? Може — частину. Але саме тут проходить найтонша межа між AI-помічником і AI-милицею, і саме її люблять перевіряти на співбесіді middle-рівня.

    Ця глава — про те, як підключити модель до розвідувальної, а не рутинної роботи: генерація ідей і крайових випадків, вичитування вимог, дослідження UI агентом, роль AI як другого пілота в сесії, покращення баг-репортів і аналіз логів. І про головне застереження, яке варто винести наперед: дослідницьке тестування тримається на людській інтуїції та відчутті ризику, а їх модель не має. Вона розширює лійку ідей і структурує спостереження, але не замінює того, хто вирішує, куди копати. Це відрізняє главу від сусідньої «Генерація тест-артефактів»: там AI перетворює відомий тест-базис на оформлені кейси й дані, тут — допомагає на фазі відкриття, коли ще незрозуміло, що взагалі перевіряти.

    Генерація ідей та крайових випадків

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

    Щоб вивід був предметним, годуй її фічею разом із контекстом і прямо називай евристики чи тури (tours) — «пройдись за туром помилок», «застосуй евристику меж до кожного поля». Порівняй: «дай тести на поле промокоду» дає банальщину; «ось поле промокоду з такими правилами (далі текст) — перелічи крайові випадки за категоріями: порожнє, регістр, пробіли, unicode, гранична довжина, вже використаний код, стекування знижок» дає структурований перелік ідей, який лишається пріоритизувати.

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

    Фіча + контекст + евристики

    AI: дивергенція
    широкий список типових ідей

    Людина: конвергенція
    фільтр за ризиком, дедуп

    + доменні й нові ідеї,
    яких модель не бачила

    Чартер сесії / чек-лист ідей

    Фіча + контекст + евристики

    AI: дивергенція
    широкий список типових ідей

    Людина: конвергенція
    фільтр за ризиком, дедуп

    + доменні й нові ідеї,
    яких модель не бачила

    Чартер сесії / чек-лист ідей

    Аналіз вимог: суперечності й прогалини

    Вичитати вимогу на діри — робота, у якій LLM несподівано корисна, бо суперечності й прогалини мають форму в тексті. Модель бачила безліч специфікацій і їхніх типових провалів: незазначений стан помилки, відсутня межа діапазону, дефолт, про який ніхто не написав, два речення, що суперечать одне одному. Це патерни — а патерни в тексті якраз її стихія.

    Практичний прийом: даєш вимогу, user story чи критерії приймання (acceptance criteria) і просиш конкретно — «знайди суперечності, неоднозначні формулювання й незазначені випадки: порожній стан, обробка помилок, межі, конкурентний доступ, припущення без підтвердження». На виході — не вирок, а список питань до аналітика чи власника продукту. Це рівно те, що робить сильний тестувальник на рефайнменті, тільки чернетку питань модель накидає за секунди.

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

    AI як другий пілот дослідницької сесії

    Канон дослідницького тестування — сесійний підхід (session-based test management): чартер, таймбокс, дебриф — детально розібраний в окремій главі розділу про тест-дизайн. AI вбудовується в цей формат як другий пілот під час таймбоксу, не як пілот:

    • Нотатник. Ти диктуєш потік спостережень, модель структурує їх у нотатки сесії — що перевірено, що дивно, які питання лишились. Звільняє увагу на саме дослідження.
    • Освіжувач ідей. У тупику питаєш «що на цій формі я ще не пробував?» — і отримуєш список, який розганяє застряглу сесію.
    • Опонент-оракул. «Для від'ємного балансу очікувана поведінка — блокування чи попередження?» — модель ставить питання, які підсвічують відсутній оракул (test oracle).

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

    Агентне дослідження UI

    Агент (agent) — це LLM у циклі з інструментами (agentic loop — у главі «Агенти й agentic loop»), яка керує браузером через, наприклад, Playwright MCP (протокол і сервери — у главі «MCP: протокол, сервери, інструменти»). Технічно вона вміє навігувати, клікати, читати дерево доступності (accessibility tree), картувати досяжні стани й накидати перший «обхід» незнайомого застосунку.

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

    Ціль: дослідити розділ X

    Агент: дія через тул
    клік / навігація

    Спостереження:
    a11y-дерево, стан сторінки

    Нотатка про стан,
    наступна дія

    Людина-оракул:
    це правильно?

    Ціль: дослідити розділ X

    Агент: дія через тул
    клік / навігація

    Спостереження:
    a11y-дерево, стан сторінки

    Нотатка про стан,
    наступна дія

    Людина-оракул:
    це правильно?

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

    Покращення баг-репортів

    Тут AI грає роль редактора, і роль вдячна. З купи сирих нотаток і шматка логу модель складає структурований репорт: кроки відтворення, очікуваний і фактичний результат, тайтл, що описує саму перевірку, а не «щось зламалось», аргументацію severity vs priority. Ще один трюк — пошук дублікатів: даєш свій опис і перелік відкритих багів, питаєш «схоже на дубль чогось із цього?».

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

    Аналіз логів на аномалії

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

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

    Межі: AI не замінює інтуїцію

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

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

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

    Виглядає як нові тест-ідеї, а насправді переказ типового. Модель віддала двадцять пунктів — і всі двадцять ти й так знав. Справжнє відкриття (нетиповий сценарій, зав'язаний на домен) лишилось за нею; сприймати її список як «повне покриття ідей» — самообман.

    Виглядає як знайдена прогалина у вимозі, а насправді вигадана. Модель «знайшла» незазначений випадок, якого в реальному продукті не існує, — і навпаки, проґавила справжню діру, бо та трималась на невисловленому правилі. Її вивід — питання-кандидати, не вирок.

    Виглядає як кореляція в логах, а насправді правдоподібна вигадка. Два рядки поруч у часі модель зв'язала причинно, хоча зв'язку немає. Не перевіриш проти самого логу — поженешся за примарою.

    Виглядає як «агент дослідив застосунок», а насправді проклікав happy path. Обхід без оракула: усі сторінки «відкрились», жодна перевірка правильності не зроблена. Охоплення є, судження немає.

    Виглядає як готовий баг-репорт, а насправді вигадані кроки. Не даси реальних спостережень — модель допише переконливі, але фальшиві кроки відтворення й оточення, і репорт поведе розробника не туди.

    Підсумок

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

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

    • «Як ти застосовуєш AI у дослідницькому тестуванні?» — інтерв'юер перевіряє, чи розумієш ти межу «помічник проти милиці». Сильна відповідь: AI розширює ідеї й веде нотатки сесії, а чартер, ризик і рішення поглибитись — за мною. Червоний прапорець — «AI досліджує сам».
    • «Можна дати LLM вимогу, щоб вона знайшла проблеми?» — чекають на «так, як генератор питань до аналітика», з обов'язковим застереженням, що модель і вигадує прогалини, і пропускає доменні; вивід треба верифікувати.
    • «Агент проклікав застосунок і сказав, що все працює. Довіряєш?» — перевірка на розуміння оракула: агент бачить «сторінка відкрилась», а не «результат правильний»; охоплення ≠ перевірка.
    • «Навіщо взагалі людина, якщо AI генерує тест-ідеї?» — хочуть почути про типове проти нового: модель дає середнє по корпусу, а цінний баг зазвичай нетиповий і доменний.
    • «Як безпечно аналізувати логи через AI?» — фільтрувати вікно під контекст, перевіряти кореляції проти самого логу, не вставляти сирі прод-логи з PII та секретами.

    Джерела

    • ISTQB Certified Tester Foundation Level (CTFL 4.0) — розділ 4.4 про досвідні техніки, зокрема дослідницьке тестування; база, з якою звіряєш згенеровані ідеї.
    • ISTQB Certified Tester — AI Testing (CT-AI) — силабус про тестування AI-систем і застосування AI в тестуванні.
    • Playwright MCP — офіційний MCP-сервер для керування браузером агентом; матеріальна база «агентного дослідження UI».
    • Playwright — Best Practices — орієнтир, як має виглядати справжня перевірка, коли доопрацьовуєш чернетки з AI.