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

    14 · AI для QA

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

    Зміст

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

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

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

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

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

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

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

    Сесія (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 це ще й спосіб навчання: ти рев'юїш підхід («він збирається мокати весь бекенд — а треба лише платіжку») до того, як з'явився код. Апрув плану = апрув напрямку.

    Але це не безумовна норма, і офіційна дока тут м'якша за звичку. Вона каже прямо: Plan mode is useful, but also adds overhead — і для задач із ясним обсягом і малим фіксом (виправити одруківку, додати рядок логу, перейменувати змінну) радить просити зробити напряму. Критерій пропуску сформульовано одним реченням: If you could describe the diff in one sentence, skip the plan. Планування окупається, коли ви не впевнені в підході, коли зміна зачіпає кілька файлів або коли код вам незнайомий, — тобто рівно там, де ціна неправильного напрямку висока.

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

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

    ні

    так

    ні

    так

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

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

    Апрув плану?

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

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

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

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

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

    Коміт у git

    ні

    так

    ні

    так

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

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

    Апрув плану?

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

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

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

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

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

    Коміт у git

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

    Робота з git

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

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

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

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

    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 Docs — Overview — означення інструмента: читає кодову базу, редагує файли, виконує команди й інтегрується з інструментами розробки.
    • Claude Code Docs — Best practices for Claude Code — та сама межа практично: чат-бот відповідає й чекає, агент читає, виконує й автономно працює над проблемою.
    • ISTQB CT-GenAI Syllabus v1.1 — вендор-нейтральний поділ способів роботи з LLM: розмовний чат-бот проти застосунку з LLM під конкретні тестові задачі.

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

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

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

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

    Робота з git

    • Claude Code Docs — Overview — робота з git як штатна: індексує зміни, пише повідомлення комітів, створює гілки й відкриває pull request'и.
    • Claude Code Docs — Common workflows — сесії зберігаються локально (claude --continue, claude --resume), а паралельну роботу ізолюють окремими git-worktree.

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

    • ISTQB CT-GenAI Syllabus v1.1 — генерація автоматизованих тест-скриптів зі структурованих тест-кейсів як канонічна активність, разом із гейтом на перевірку виводу.
    • Playwright — Trace viewer — що саме згодовують агентові при аналізі падіння: дії, DOM-снапшоти, мережа й одного прогону.
    • ISTQB CT-AI Syllabus v2.0 — чому діагноз агента перевіряють руками: впевнений вивід не є правильним виводом.
    • Playwright — Locators — пріоритет user-facing атрибутів і ролей, і чому CSS та XPath не рекомендовані: DOM часто змінюється.
    • Playwright — Best Practices — той самий орієнтир стійкості з боку рекомендацій фреймворку, до якого скеровують агента.

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

    • Playwright — Writing tests — тест виконує дії й стверджує стан проти очікувань; звідси й те, що прогін ловить вигадані API, але не порожні перевірки.
    • Claude Code Docs — Best practices for Claude Code — без зовнішньої перевірки єдиний сигнал зупинки — «схоже на готове», і петлею верифікації стаєте ви.

    Пояснення

    «Поясни» працює з власним API-ключем Anthropic: запит іде з вашого браузера прямо до Anthropic.

    Свій API-ключ (BYOK)

    Вставте власний ключ Anthropic — пояснення працюватиме на реальній моделі. Ключ зберігається лише у вашому браузері (localStorage), нікуди не надсилається, крім api.anthropic.com, і не логується.