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

    14 · AI для QA

    Claude Code: базовий воркфлоу для QA

    Зміст

    Актуально станом на липень 2026. Інструменти цього класу змінюються швидко — деталі звіряй з офіційною документацією.

    Claude Code — це термінальний агент (terminal agent) від Anthropic: ти запускаєш команду claude у теці свого проєкту, описуєш задачу звичайною мовою, а він читає файли, редагує код, запускає команди й тести — і крутить цей цикл, поки не доведе справу до кінця. Для QA це не «чат, який пише тести», а виконавець, що працює прямо у твоєму репозиторії автотестів: бачить реальний код, реальні падіння, реальні локатори. Це принципова відмінність від звичайного чат-бота, і саме з неї випливають усі особливості роботи.

    На співбесідах усе рідше питають «чи чув про AI» і все частіше — «як ти ним користуєшся у щоденній роботі». Сильна відповідь — це не «AI все зробить», а конкретний воркфлоу з точками контролю: як ти ставиш задачу, де рев'юиш результат, чому не довіряєш зеленому прогону наосліп. Ця глава — про такий воркфлоу. Вона спирається на агентний цикл і промптинг для QA; окремі теми (пам'ять проєкту, сабагенти, MCP) винесені в сусідні глави й тут лише згадуються.

    Термінальний агент: не чат, а виконавець

    Звичайний чат повертає текст — ти сам копіюєш його в редактор і запускаєш. Агент замикає цю петлю: у нього є інструменти (tools) — читати й редагувати файли, виконувати команди в оболонці (shell), працювати з git. Він не «радить», а діє й одразу бачить результат своєї дії: вивід тесту, повідомлення компілятора, дифф.

    Чому це важливо саме для QA. Тест живе не в вакуумі — він залежить від структури проєкту, від page object'ів, від того, як налаштований раннер. Агент, що сидить у твоєму репозиторії, читає ці файли й підлаштовується під них, а не генерує абстрактний код «взагалі». Він може згенерувати тест, тут же його запустити, побачити червоне й полагодити — усе в одній сесії, без твого копіювання туди-сюди.

    Сесія і дозволи

    Сесія (session) — це одна безперервна розмова з агентом разом із накопиченим контекстом: історія повідомлень плюс усе, що агент прочитав і змінив. Контекст живе в обмеженому вікні (див. Токени, контекст і вартість), тому довгі сесії варто розбивати; Claude Code вміє їх зберігати й відновлювати (claude --continue, claude --resume), щоб задача перетривала кілька підходів.

    Другий стовп — дозволи (permissions). Агент може виконати будь-яку команду в терміналі, і саме дозволи стоять між тобою і випадковим rm чи push у спільну гілку. Читання (read, grep) безпечне й іде без запиту. А от зміна стану — правка файлу, bash-команда, git push — за замовчуванням потребує підтвердження. Режими дозволів перемикаються клавішею Shift+Tab по колу default → acceptEdits → plan:

    • default — агент питає перед кожною зміною;
    • acceptEdits — авто-приймає правки файлів (але не довільні команди);
    • plan — режим лише для читання: агент нічого не змінює, тільки складає план.

    лише читання

    зміна стану

    plan

    acceptEdits

    default

    так

    ні

    Агент хоче виконати дію

    Тип дії

    Виконати без запиту

    Режим дозволів

    Тільки додати в план

    Авто-прийняти правки файлів

    Людина дозволила?

    Виконати

    Пропустити і переспитати

    лише читання

    зміна стану

    plan

    acceptEdits

    default

    так

    ні

    Агент хоче виконати дію

    Тип дії

    Виконати без запиту

    Режим дозволів

    Тільки додати в план

    Авто-прийняти правки файлів

    Людина дозволила?

    Виконати

    Пропустити і переспитати

    Практичний висновок для QA: не вмикай авто-прийняття на прод- чи спільному стенді — там ціна помилкової команди висока. У CI агент працює неінтерактивно (headless), тож там дозволи задають конфігурацією заздалегідь, а не клацанням. Тема довіри й ізоляції ширша — див. Безпека й приватність при роботі з AI.

    Постановка задачі

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

    Сильна постановка містить три речі: що саме зробити, критерій готовності (acceptance criteria — коли вважати задачу виконаною) і обмеження (який інструмент, чого не чіпати). Плюс вказівка на файли — у Claude Code це роблять через @, наприклад @tests/login.spec.ts, щоб агент одразу підтягнув потрібний контекст. Загальні правила формулювання промптів розібрані окремо в Промптингу для QA.

    Окремо варто зафіксувати конвенції проєкту — house-стиль назв, підхід до локаторів, структуру page object'ів — щоб не повторювати їх у кожному промпті. Для цього є файл CLAUDE.md (див. Пам'ять, скіли та слеш-команди): те, що там записано, агент читає автоматично на старті сесії. Без нього агент вигадує конвенції на льоту — і вони не збігаються з твоїми.

    План перед виконанням

    Перш ніж дати агентові редагувати код, часто розумно попросити план. У режимі plan (той самий Shift+Tab, у статус-рядку видно ⏸ plan mode on) агент читає файли, розбирається в задачі й пропонує план змін — але не чіпає жодного файлу, поки ти не схвалиш.

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

    Ітерація: тести → фейли → фікс

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

    ні

    так

    ні

    так

    Постановка задачі

    Читання файлів і пропозиція плану

    Апрув плану?

    Правки коду і bash-команди

    Прогін тестів

    Тести зелені?

    Аналіз фейлу і фікс

    Перевірка диффу людиною

    Коміт у git

    ні

    так

    ні

    так

    Постановка задачі

    Читання файлів і пропозиція плану

    Апрув плану?

    Правки коду і bash-команди

    Прогін тестів

    Тести зелені?

    Аналіз фейлу і фікс

    Перевірка диффу людиною

    Коміт у git

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

    Робота з git

    Claude Code працює з git як звичайний інженер: дивиться git status і git diff, створює гілки, робить коміти, а через gh — і pull request'и. Коли ти запускаєш gh pr create, сесія автоматично прив'язується до цього PR, тож до неї легко повернутися пізніше.

    Для QA git — це не побічна деталь, а головна точка контролю. Коміт (commit) — це чекпоінт: якщо агент пішов не туди, ти відкочуєшся до попереднього стану замість ручного розгрібання. Дисципліна проста й непорушна:

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

    Дифф — те місце, де «агент згенерував купу коду» перетворюється на «я розумію й приймаю кожен рядок».

    QA-сценарії: тест, фейл, локатори

    Три щоденні сценарії, де воркфлоу дає найбільше.

    Генерація тесту. З ручного тест-кейсу або user story — у робочий Playwright/CodeceptJS-тест. Сила агента тут у тому, що він дивиться на наявні тести й page object'и та підлаштовується під їхній стиль, фреймворк і патерни асертів, а не пише «з нуля». Це продовження теми Генерації тест-артефактів: агент чорнетить, ти доводиш і рев'юиш.

    Аналіз падіння. Згодуй агентові вивід упалого тесту разом із trace/логом — він тріажить: де саме зламалось, чи це зміна селектора, чи гонка (race), чи реальний баг. Але тут критичне застереження: фейл автотесту ≠ баг застосунку. Часто падає сам тест — через нестабільний локатор, брак очікування або застарілі дані, — а не продукт. Агент упевнено назве діагноз, і цей діагноз треба перевірити руками, відтворивши флоу. Глибше — у Підтримці тестів і аналізі падінь.

    Локатори. Після зміни UI половина селекторів «поламалась» — агент їх лагодить. Ризик у тому, що він схильний хапати найпростіший локатор, який зараз працює: позиційний nth, прив'язку до тексту чи згенерованого класу. Такі локатори крихкі — зламаються на наступному білді. Скеровуй агента до стабільних якорів — ролей і data-testid:

    // Крихкий локатор — позиція і згенерований клас
    await page.locator('.btn_a1b2c3 >> nth=2').click();
    
    // Стійкий локатор — роль з доступним іменем або тестовий id
    await page.getByRole('button', { name: 'Зберегти' }).click();
    await page.getByTestId('save-order').click();

    Це саме те місце, де твоя експертиза в тест-дизайні незамінна: агент напише робочий селектор, але «робочий сьогодні» і «стабільний» — різні речі.

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

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

    test('оновлення профілю', async ({ page }) => {
      await page.goto('/profile');
      await page.getByRole('button', { name: 'Зберегти' }).click();
      // асертів немає — тест зелений, але нічого не перевіряє
    });

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

    Виглядає як «auto-accept пришвидшує роботу», а насправді на спільному стенді чи без рев'ю диффу це втрата контролю — швидко отримати неправильне не краще, ніж повільно отримати правильне.

    Виглядає як «він знає наш проєкт», а насправді без CLAUDE.md і належного контексту агент вигадує конвенції та посилається на неіснуючі хелпери й селектори.

    Виглядає як «план — це формальність, пропущу», а насправді план — найдешевша точка виправлення: тут правиться намір, а не готовий дифф.

    Підсумок

    • Claude Code — це агент у циклі, а не чат: дозволи й дифф — твої головні точки контролю.
    • Постановка задачі визначає результат — давай критерій готовності, обмеження й конвенції (через CLAUDE.md).
    • План перед змінами: рев'ю наміру дешевше за рев'ю диффу.
    • Зелені тести ≠ правильні тести — верифікація асертів лишається за тобою.
    • Фейл автотесту ≠ баг застосунку: діагноз агента підтверджуй ручним відтворенням.

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

    • «Чи користуєшся AI-інструментами в роботі? Як саме?» Інтерв'юер перевіряє, чи за словами стоїть конкретний воркфлоу з точками контролю, а не установка «AI все зробить».
    • «Як ти контролюєш якість AI-згенерованого тесту?» Очікувана відповідь називає рев'ю диффу, обов'язковий прогін і перевірку, що асерти справді щось перевіряють, а не просто «зелено».
    • «Що робиш, коли агент зробив не те?» Дивляться на практичні важелі: відкотити коміт, уточнити постановку, ганяти в plan-режимі до апруву напрямку.
    • «Чим агент відрізняється від чат-бота?» Цикл «дія — спостереження — корекція» і наявність інструментів (файли, термінал, тести), а не лише генерація тексту.
    • Червоний прапорець для інтерв'юера — сліпа довіра до зеленого прогону й невміння пояснити, де саме людина перевіряє роботу агента.

    Джерела

    • Claude Code — офіційна документація, огляд: code.claude.com/docs/en/overview
    • Claude Code — Common workflows (плани, сесії, PR, subagents, headless): code.claude.com/docs/en/common-workflows
    • Claude Code — Best practices: code.claude.com/docs/en/best-practices
    • Playwright — Writing tests (локатори й асерції для QA-сценаріїв): playwright.dev/docs/writing-tests
    • Ця глава не відповідає окремому розділу силабусу ISTQB CTFL 4.0 (воркфлоу інструмента — поза силабусом). Для ширшого контексту «AI в тестуванні» — силабус ISTQB Certified Tester AI Testing (CT-AI).