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

    13 · Співбесіда

    Технічна співбесіда AQA

    Зміст

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

    Ця глава — не підручник з автоматизації (зміст відповідей живе у профільних розділах vyvchy: автоматизація, інструменти, JS/TS, API, Git/CI). Це мапа тем і тактика: як говорити про свій фреймворк, як відповідати на сигнатурні питання на кшталт чи «чому Playwright», і як не провалитися на завчених визначеннях, які розсипаються від першого уточнення.

    Як влаштована технічна співбесіда AQA

    Наша практика (не канон). Склад інтервʼюерів, тривалість і поділ розмови на ширину та глибину — наш опис із співбесід, які ми проходили й проводили. Канон автоматизації дає карту тем, а формату розмови не описує жодне джерело.

    Технічну секцію зазвичай веде lead AQA, SDET або сеньйор-автоматизатор, іноді — разом із розробником, який дивиться на твій код очима того, хто його рев’ювитиме. Формат — від 45 до 90 хвилин розмови, часто з (окрема глава — «Лайвкодинг для AQA») або з винесеним («Тестове завдання»).

    Усередині розмова має два виміри, і сильний кандидат відчуває, у якому з них зараз перебуває:

    • Ширина — мапа тем. Інтервʼюер швидко проходиться по блоках (мова, , патерни, піраміда, API, CI), щоб зрозуміти, де в тебе є фундамент, а де діри. Тут цінується чесне «це знаю поверхово» замість блефу.
    • Глибина — твій проєкт. Знайшовши тему, де ти впевнений, інтервʼюер зупиняється й копає вглиб: «а як саме ти це зробив?», «а чому не інакше?», «а що ламалося?». Саме тут вирішується грейд.

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

    Мапа тем: що готувати і звідки

    Технічна база AQA розкладається на шість блоків. Для кожного важливо знати не лише «що це», а й на що дивиться інтервʼюер і в якому розділі vyvchy це повторити.

    AQA
    співбесіда

    Мова: JS/TS

    Локатори

    Патерни й дизайн коду

    Піраміда і стратегія

    API-тестування

    CI/CD і флак

    async/await, замикання,
    this, типи

    стабільність,
    data-testid, ролі

    Page Object, SOLID,
    DRY vs DAMP

    рівні, ROI,
    що автоматизувати

    статус/тіло/схема,
    ланцюжки, авторизація

    прогони, паралель,
    флакі-тести

    AQA
    співбесіда

    Мова: JS/TS

    Локатори

    Патерни й дизайн коду

    Піраміда і стратегія

    API-тестування

    CI/CD і флак

    async/await, замикання,
    this, типи

    стабільність,
    data-testid, ролі

    Page Object, SOLID,
    DRY vs DAMP

    рівні, ROI,
    що автоматизувати

    статус/тіло/схема,
    ланцюжки, авторизація

    прогони, паралель,
    флакі-тести

    • Мова (JavaScript/TypeScript). Основа, бо весь код на ній. Питають асинхронність (async/await, Promise.all, забутий await), , this, типи в TS. Джун має писати чисто, сеньйор — пояснювати, чому забутий await у циклі дає плаваючий . Повторити — у розділі JS/TS.
    • Локатори. Найпрактичніший блок: як ти знаходиш елементи й чому вони не ламаються. Механіку селекторів дає глава «DOM, селектори та події», стратегію стабільних локаторів (data-testid як контракт із розробкою, пріоритет ролей) — розділ автоматизації.
    • Патерни й дизайн коду. , композиція проти успадкування, //YAGNI, коли SOLID у тестах стає overengineering. Тут перевіряють, чи ти інженер, а не лише «пишу тести».
    • Піраміда і стратегія. Рівні тестування, чому e2e дорогі й крихкі, що автоматизувати першим, ROI автоматизації. Це місток до сеньйорних питань.
    • API-тестування. Перевірка статусу/тіла/схеми, ланцюжки запитів, підготовка стану через API замість UI, авторизація. Базу дає глава «REST API та формати даних», поглиблення — розділ API.
    • CI/CD і . Як тести живуть у , паралелізація, і — головне — флакі-тести. Механіку очікувань і синхронізації дає глава «Практичні сценарії AQA: флак і синхронізація».

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

    Розмова про твій фреймворк

    Наша практика (не канон). Далі — те, як цю частину розмови ведуть у командах, з якими ми працювали, включно з чесною формулою «цю частину проєктував не я». Стандарту чи дослідження під це немає.

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

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

    Найнебезпечніша пастка цього блоку — видавати чужий фреймворк за свій. Якщо архітектуру заклав тимлід, а ти лише дописував тести, чесна формула звучить так: «цю частину проєктував не я, ось як я розумію, чому вона така; а особисто я робив ось це». Інтервʼюер це поважає незрівнянно більше, ніж впевнену розповідь, яка розсипається на другому уточненні. Спроба привласнити рішення провалюється завжди однаково: наступне «а чому ви не зробили Х?» — і кандидат замовкає, бо це рішення приймав не він.

    Пастка завчених визначень

    Наша практика (не канон). поглиблення «навіщо → приклад із проєкту → межа застосування» — наш прийом підготовки, а не описана кимось процедура інтервʼю: джерела під неї немає.

    Найтиповіший провал на AQA-співбесіді — відповідати завченими формулюваннями. Джерело істини співбесіди не в тому, чи ти знаєш означення Page Object, а в тому, чи ти ним користувався й розумієш його межі. Тому визначення тут — лише вхід у воронку поглиблення:

    Так

    Ні на 2-3 кроці

    Що таке X?
    (визначення)

    А навіщо це?
    яку проблему розв'язує

    Приклад з твого проєкту?

    А коли X — зайвий
    або шкодить?

    Відповіді тримаються?

    Реальне розуміння

    Завчене визначення

    Так

    Ні на 2-3 кроці

    Що таке X?
    (визначення)

    А навіщо це?
    яку проблему розв'язує

    Приклад з твого проєкту?

    А коли X — зайвий
    або шкодить?

    Відповіді тримаються?

    Реальне розуміння

    Завчене визначення

    Завчене визначення проходить перший крок і валиться на другому-третьому: людина, яка прочитала означення, але не працювала з поняттям, не може навести приклад зі свого проєкту й не знає, коли поняття шкодить. Показовий приклад — Page Object: кандидат бездоганно переказує визначення, але не може сказати, чому — це погано, або де перевірки: у page object чи в тесті.

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

    Флакі-тести: сигнатурне питання AQA

    Тема флакі-тестів (flaky tests) ідеально розділяє тих, хто запускав тести, і тих, хто володів набором. Хто гасив реальний флак у CI — відповідає структуровано; хто ні — зводить усе до «додати очікування».

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

    Показова деталь, за якою одразу видно рівень, — фікс . Слабка відповідь: «поставив би sleep побільше». Сильна: пояснити, чому фіксована пауза — антипатерн, і показати очікування конкретної умови.

    // Антипатерн: фіксована пауза — або флак, або марна затримка
    await page.waitForTimeout(3000);
    await expect(page.getByRole('alert')).toBeVisible();
    
    // Правильно: web-first assertion сама чекає появи умови
    await expect(page.getByRole('alert')).toBeVisible();

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

    «Чому Playwright, а не Selenium чи Cypress»

    Це питання майже ніколи не про те, який інструмент «кращий». Інтервʼюер перевіряє, чи ти розумієш архітектурні моделі за інструментами, а не завчив порівняльну табличку з блогу. Три моделі принципово різні: W3C WebDriver-протокол (Selenium), власний протокол драйвера поверх постійного зʼєднання — для Chromium на базі CDP, для Firefox/WebKit через патчені збірки (Playwright), виконання коду всередині браузера (Cypress) — і кожна модель має наслідки: ізоляція, кросбраузерність, робота з кількома вкладками, . Огляд цих моделей — у розділі інструментів.

    Слабка відповідь перелічує фічі («Playwright швидший і має автоочікування»). Сильна — називає компроміс і привʼязує його до контексту: «Playwright дає дешеву ізоляцію через контексти й автоочікування з коробки, що зменшує флак; Selenium виграє там, де потрібна зріла екосистема й підтримка рідкісних браузерів; Cypress зручний для фронтенд-команд, але його модель виконання в браузері ускладнює багатовкладкові й cross-origin сценарії». І, знову ж, чесність про власний контекст: якщо інструмент обрали до тебе — так і скажи: «обрали до мене, ось як я розумію чому, і ось де я відчув межі цього вибору на практиці». Це сильніше за вдавану роль архітектора.

    Стратегія і співпраця: сеньйорний рівень

    На мідл-плюс і сеньйор питання зміщуються від «як написати тест» до «як побудувати й утримати процес». Тут перевіряють інженерне судження, а не знання API інструмента.

    • Стратегія автоматизації. Що автоматизувати першим (критичний шлях, , найдорожчі баги), а що лишити мануальним; чому не варто гнатися за «100% автоматизації»; як не перевернути піраміду в «ріжок морозива» з купою крихких e2e. Чесна оцінка важливіша за красиву цифру.
    • Співпраця з розробниками. Автоматизація — командний спорт: data-testid як контракт із розробкою, рев’ю тестопридатності фічі до її написання (shift-left), спільне володіння сюїтою. Питання «хто пише автотести — AQA чи розробники?» не має єдиної правильної відповіді; сильний кандидат говорить про ownership і про те, що один флакі-тест підриває довіру до всього gate.
    • Метрики й рішення. Час прогону, стабільність набору, ; коли зупинити автоматизацію, бо вона вже не окуповується. Сеньйор мислить вартістю володіння, а не кількістю тестів.

    На цьому рівні цінується вміння сказати «залежить від контексту» — і одразу назвати, від чого саме залежить. Абстрактне «залежить» без продовження звучить як ухиляння; конкретне «залежить від зрілості команди, ризику фічі й частоти релізів» — як досвід.

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

    • Виглядає як впевнена розповідь про фреймворк, а насправді — опис чужих рішень: валиться на першому «а чому ви не зробили інакше?», бо рішення приймав не кандидат.
    • Виглядає як знання теми (бездоганне визначення), а насправді — завчений абзац: немає прикладу з проєкту й розуміння, коли поняття шкодить.
    • Виглядає як відповідь про флак, а насправді — маскування: «додати sleep / увімкнути ретраї» без таксономії причин і без різниці між легітимним ретраєм і приховуванням бага.
    • Виглядає як аргумент «чому Playwright», а насправді — переказ фіч із маркетингу: немає компромісу й привʼязки до контексту проєкту.
    • Виглядає як ерудиція (сипле патернами й SOLID), а насправді — overengineering: кандидат не бачить, де абстракція в тестах зайва й шкодить читабельності.
    • Виглядає як чесне «я цього не робив», але сказане з панікою — а насправді сильний хід, якщо додати «міркував би так…»: інтервʼюери цінують чесну вище за блеф.

    Підсумок

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

    Можливі питання

    • «Розкажи про свій фреймворк / як він влаштований?» — питання, з якого росте половина секції. Дивляться: чи можеш пояснити структуру по шарах і «чому» до кожного рішення, чи це твій досвід, а не переказ.
    • «У вас тест іноді падає, іноді ні. Твої дії?» — питання про флак. Дивляться: чи є системний підхід (таксономія → діагностика), чи ти відразу відрізняєш баг тесту від бага продукту, чи не маскуєш проблему ретраями.
    • «Чому Playwright/Selenium/Cypress? Що обереш і чому?» — дивляться на розуміння архітектурних моделей і компромісів, а не на завчене порівняння; чи привʼязуєш вибір до контексту.
    • «Що б ти автоматизував на новому проєкті першим?» — сеньйорне питання про стратегію. Дивляться: чи мислиш і ROI, чи розумієш піраміду як орієнтир, чи не обіцяєш «автоматизувати все».
    • «Хто у вас пише автотести і як ви ділите відповідальність із розробниками?» — про співпрацю й ownership. Дивляться: чи розумієш shift-left і data-testid як контракт, чи бачиш вплив флаку на довіру до gate.
    • «Поясни, що таке Page Object / піраміда / фікстура» — визначення лише як вхід у воронку. Дивляться не на формулювання, а на приклад із практики й розуміння меж застосування.

    Джерела

    Мапа тем: що готувати і звідки

    • ISTQB — CTAL-TAE v2.0 (оглядова сторінка сертифікації) — канонічна карта тем автоматизації, з якою звіряють цю мапу: мета автоматизації, вибір інструментів і стратегій, архітектура, підтримуваність, інтеграція в CI/CD, звітність і метрики, верифікація самої інфраструктури; там же межа — силабус не вчить програмної інженерії, але очікує її від інженера.
    • ISTQB — Certified Tester Foundation Level (CTFL) v4.0 Overview — базовий рівень під цією мапою: CTFL — до інших сертифікацій ISTQB, а силабус і чотири зразкові іспити на сторінці безкоштовні.

    Флакі-тести: сигнатурне питання AQA

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

    «Чому Playwright, а не Selenium чи Cypress»

    • Selenium — Documentation (оглядова сторінка) — що таке Selenium за власним самоописом: із трьох частин, у ядрі якого інтерфейс WebDriver, а взаємозамінність коду між браузерами тримається на специфікації W3C, а не на власному протоколі.
    • Playwright — головна сторінка — дзеркальна модель: один API поверх Chromium, Firefox і WebKit, свіжий контекст на тест, автоочікування й локатори, що «дзеркалять те, як користувач бачить сторінку».

    Стратегія і співпраця: сеньйорний рівень

    • The Practical Test Pyramid (Ham Vocke, martinfowler.com) — два правила, які варто винести з піраміди: писати тести різної гранулярності й мати тим менше тестів, чим вищий рівень — сама піраміда названа надто спрощеною й потенційно оманливою.
    • Software Engineering at Google — Chapter 11: Testing Overview — звідки береться «ріжок морозива»: це названий антипатерн з означенням і причиною, поруч із hourglass; пропорція 80/15/5 подана як дуже груба настанова, а не норма.
    • ISTQB — CTAL-TAE v2.0 (оглядова сторінка сертифікації) — канонічний перелік тем саме цього рівня розмови: стратегія автоматизації, архітектура, підтримуваність, інтеграція в CI/CD, звітність і метрики.

    Пояснення

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

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

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