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-секція майже завжди зривається в глибину, бо код неможливо обговорювати абстрактно. Через це завчені формулювання, які рятують у мануальному скринінгу, тут працюють гірше — про це нижче окремо.

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

    Технічна база 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 як контракт із розробкою, пріоритет ролей) — розділ автоматизації.
    • Патерни й дизайн коду. Page Object, композиція проти успадкування, DRY/KISS/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: кандидат бездоганно переказує визначення, але не може сказати, чому god object — це погано, або де перевірки: у page object чи в тесті.

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

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

    Питання про флакі-тести (flaky tests) звучить майже на кожній AQA-співбесіді, бо воно ідеально розділяє тих, хто запускав тести, і тих, хто володів набором. Хто гасив реальні флаки в 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.
    • Метрики й рішення. Час прогону, стабільність набору, escape rate; коли зупинити автоматизацію, бо вона вже не окуповується. Сеньйор мислить вартістю володіння, а не кількістю тестів.

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

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

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

    Підсумок

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

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

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

    Джерела