QA Interview Hub · База знань · Тести
System Design
Як відповідати на System Design співбесіді
Що саме перевіряють у QA System Design
System Design для Senior QA Automation складається з двох різних частин. Перша частина: дизайн тест-системи. Вас просять спроектувати фреймворк, CI-пайплайн, стратегію тестових даних або стратегію тестування для мікросервісів. Друга частина: розуміння бекенду. Вам показують схему "клієнт, load balancer, сервіси, кеш, БД, черга" і питають, що тут може зламатися і як ви це протестуєте.
Інтерв'юер не чекає ідеальної архітектури. Він дивиться на чотири речі:
- чи ставите ви уточнювальні питання замість того, щоб одразу малювати;
- чи думаєте ви про масштаб: кількість тестів, команд, середовищ, час прогону;
- чи бачите ви компроміси і можете пояснити, чому обрали одне, а не інше;
- чи вмієте ви виміряти результат: метрики, SLA пайплайна, рівень flaky.
Типова помилка Middle-кандидата: почати з інструменту. "Візьмемо Playwright і Allure" - це не дизайн, це вибір бібліотеки. Senior починає з проблеми: хто користувачі фреймворку, скільки тестів, які обмеження за часом, які ризики бізнесу.
Для фінтеху додайте ризики, які інтерв'юер точно оцінить: гроші не можна списати двічі, баланс не може піти в мінус без дозволу, кожна операція має бути відстежуваною. Якщо ви природно згадуєте ідемпотентність і аудит, це сильний сигнал.
На співбесіді: Я розумію System Design для QA як дві речі: як побудувати масштабовану тест-систему і як тестувати розподілену систему, розуміючи її архітектуру. Я завжди починаю з вимог і обмежень, а не з інструментів, і закінчую метриками, за якими ми зрозуміємо, що рішення працює.
Структура відповіді: вимоги, шари, рішення, trade-offs, метрики
Щоб не загубитися за 40-60 хвилин, тримайтеся однієї схеми. Вона працює і для тест-фреймворку, і для бекенд-задачі.
- Вимоги. Функціональні: що система має робити. Нефункціональні: скільки тестів, за який час, скільки команд, які середовища, які інтеграції. Уточніть цифри вголос.
- Шари. Розкладіть систему на блоки: для фреймворку це тести, бізнес-кроки, page objects і API-клієнти, фікстури, конфіг, звітність. Для бекенду це клієнт, LB, сервіси, сховища, черги.
- Рішення. Для кожного шару скажіть, що конкретно ви робите і чому.
- Trade-offs. Чим ви платите за рішення: швидкість проти ізоляції, вартість інфраструктури проти часу фідбеку, реалістичність даних проти стабільності.
- Метрики. Як ви зрозумієте, що рішення спрацювало: час пайплайна, flaky rate, час до фідбеку на PR, кількість багів, що пройшли в прод.
Вимоги -> Шари -> Рішення -> Trade-offs -> Метрики
| | | | |
цифри блоки чому так чим платимо як міряємо
Корисна звичка: після кожного блоку коротко підсумовувати і питати інтерв'юера, чи йти глибше. Так ви керуєте часом і показуєте, що вмієте працювати зі стейкхолдерами.
На співбесіді: Я відповідаю за схемою: спочатку уточнюю вимоги і цифри, потім розкладаю систему на шари, для кожного пропоную рішення, проговорюю компроміси і закінчую метриками успіху. Це не дає мені стрибнути в деталі інструменту, поки не зрозуміла проблема.
Які питання уточнити на старті
Перші 5 хвилин - найважливіші. Хороші уточнювальні питання одразу показують рівень. Ось набір, який варто мати в голові.
Для тест-системи:
- Скільки тестів зараз і скільки буде через рік? Які типи: unit, API, e2e?
- Яка ціль за часом: фідбек на PR за 10 хвилин чи нічний прогін?
- Скільки команд пишуть тести? Один репозиторій чи кілька?
- Які середовища є: локальне, ephemeral на PR, staging?
- Які зовнішні залежності: платіжний провайдер, KYC, банківські API?
- Який бюджет на CI-інфраструктуру?
Для бекенд-задачі:
- Яке навантаження: RPS, пікові години, ріст?
- Що важливіше: консистентність чи доступність? Для балансу рахунку відповідь зазвичай консистентність.
- Які гарантії доставки в черзі: at-least-once чи інше?
- Чи є вимоги регулятора: аудит, зберігання даних, PCI DSS?
Не треба ставити всі питання. Оберіть 4-6 найважливіших, запишіть відповіді і далі посилайтеся на них. Якщо інтерв'юер каже "вирішіть самі", назвіть припущення вголос: "Припустимо 2000 e2e тестів, середній тест 20 секунд, ціль 15 хвилин".
На співбесіді: Я починаю з питань про масштаб, ціль за часом, середовища і зовнішні залежності. Якщо цифр немає, я сам фіксую припущення вголос, щоб далі всі розрахунки були прозорими.