Співбесіда з QA: запитання для Junior, Middle, Senior

Підготовка до співбесіди — важливий етап для будь-якого спеціаліста з тестування, незалежно від рівня досвіду. Ми зібрали типові (і не дуже) запитання, які ставлять кандидатам на позиції QA-фахівців різних рівнів: від Junior до Senior. Цей перелік створено спільнотою практиків і слугує корисним орієнтиром як для кандидатів, так і для інтерв’юерів.

Кандидатам він допоможе оцінити свої знання, виявити прогалини, розширити словник і впевненіше почуватися на співбесіді. Інтерв’юерам — знайти нові ідеї для запитань, щоб краще оцінити навички претендентів. І пам’ятайте: співбесіда — це не тільки перевірка знань, а й можливість подивитися, як мислить людина.

Junior

Теорія тестування

Що таке тестування?
Тестування — це процес перевірки програмного забезпечення на наявність помилок і відповідність вимогам.

Навіщо тестувати ПЗ?
Тестування необхідне для виявлення помилок, забезпечення якості і функціональності програмного забезпечення, а також для підтвердження відповідності вимогам.

Які є етапи тестування?
Основні етапи: планування тестування, аналіз вимог, тест-дизайн, виконання тестів, звітування про результати, завершення тестування.

Які типи тестування можете назвати?
Функціональне, нефункціональне, інтеграційне, регресійне, юзабіліті, безпеки, продуктивності, тощо.

Які рівні тестування знаєте?
Unit testing, Integration testing, System testing, Acceptance testing.

Які техніки тест-дизайну знаєте?
Техніки містять: аналіз класів еквівалентності, граничні значення, рішення таблиці, тощо.

Що таке техніка аналізу класів еквівалентності?
Це техніка тест-дизайну, яка дозволяє розділяти всі можливі вхідні значення на класи, які поводяться однаково.

Що таке техніка аналізу граничних значень? У чому цінність цієї техніки?
Техніка, що фокусується на тестуванні крайніх значень вхідних даних для виявлення помилок, які можуть виникнути на межах діапазонів.

Що таке Regression і Confirmation тестування, яка між ними різниця?
Regression тестування перевіряє, чи не порушили нові зміни існуючі функції, тоді як Confirmation тестування перевіряє, чи були виправлені конкретні помилки.

Як часто варто проводити регресійне тестування продукту?
Регресійне тестування проводиться після кожної зміни або оновлення, щоб перевірити, чи не було порушено існуючу функціональність.

Які бувають види інтеграційного тестування?
Інтеграційне тестування може бути верхнім (для тестування взаємодії між компонентами) або нижнім (для тестування окремих модулів або компонентів).

Що таке Configuration testing?
Це тестування, яке перевіряє, як програмне забезпечення працює на різних конфігураціях апаратного та програмного забезпечення.

Що таке Exploratory testing?
Тестування, яке проводиться без попередньо визначених тестів, на основі інтуїції та досвіду тестувальника.

Які існують UI-стандарти?
UI-стандарти визначають вимоги до зовнішнього вигляду, взаємодії користувача з інтерфейсом, зручності та доступності.

Що таке Black/Grey/White Box Testing?
Black Box Testing — тестування без знання внутрішньої реалізації; Grey Box Testing — тестування з обмеженими знаннями про внутрішню структуру; White Box Testing — тестування з повним знанням внутрішньої реалізації.

Що таке Performance Testing?
Тестування, яке перевіряє продуктивність ПЗ під різними умовами навантаження.

Що таке Smoke та Sanity тестування і яка між ними різниця?
Smoke тестування перевіряє основну функціональність ПЗ, а Sanity — базову функціональність після внесення змін.

Що таке Traceability Matrix?
Це документ, що показує зв’язок між вимогами та відповідними тестами для підтвердження їх покриття.

Що таке Sanity Testing?
Це тестування, яке перевіряє, чи працюють основні функціональні можливості ПЗ після внесення змін.

Що таке End-to-End тест?
Це тестування, яке перевіряє весь процес чи систему від початку до кінця, імітуючи реальні умови використання.

Що таке тестування безпеки?
Тестування, яке перевіряє програмне забезпечення на вразливості та можливі загрози безпеці даних.

Що таке випробування на основі ризиків?
Це тестування, яке фокусується на тестуванні найкритичніших і найризикованіших частин програмного забезпечення.

Що таке динамічне тестування?
Це тестування, яке проводиться під час виконання програми для перевірки її роботи в реальному часі.

Що таке «парадокс пестициду»?
Це ситуація, коли однакові тести використовуються занадто часто і перестають знаходити нові дефекти.

Опишіть основні фази STLC? Дайте визначення Entry та Exit Criteria.
STLC (Software Testing Life Cycle) містить планування, аналіз, тест-дизайн, виконання, звітування, завершення. Entry Criteria — умови, при яких можна розпочати тестування. Exit Criteria — умови, при яких тестування вважається завершеним.

Що таке Bug, Error, Failure, Fault?
Bug — дефект у програмному забезпеченні; Error — помилка розробника; Failure — збій у роботі ПЗ; Fault — причина помилки в коді.

Які є атрибути звіту про помилку? Які основні поля для заповнення?
Звіт про помилку (баг репорт) містить поля: опис дефекту, кроки відтворення, очікуваний та фактичний результат, пріоритет, серйозність.

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

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

У чому різниця між валідацією та верифікацією?
Валідація перевіряє, чи відповідає продукт вимогам користувача, а верифікація — чи правильно реалізовані вимоги.

Навіщо потрібна тестова документація? Які її види?
Тестова документація допомагає організувати процес тестування, відстежувати прогрес та результати. Види: тест-плани, тест-кейси, звіти про помилку.

Що таке тест-план? Які елементи він має?
Тест-план описує стратегію тестування, охоплюючи цілі, ресурси, графік, умови для початку і завершення тестування.

Яку обов’язкову інформацію має містити тест-план? Як правильно його використовувати, підтримувати та чи взагалі він потрібний для більшості проєктів?
Тест-план має містити цілі тестування, критерії, обов’язки, ресурси, графік, умови завершення. Він необхідний для організації та ефективного проведення тестування.

Яка різниця між чеклистом і тест-кейсами?
Чеклист — це короткий перелік перевірок, без детальних кроків, тоді як тест-кейс містить детальний опис перевірки з умовами і очікуваними результатами.

Наведіть приклад хорошого тест-кейсу.
Тест-кейс має описувати умови, кроки, очікувані результати, на яких умовах він буде виконаний, і які критерії для успіху.

AQA

Програмування

Що таке DRY, KISS, YAGNI?

  • DRY — не повторювати код.
  • KISS — робити код простим.
  • YAGNI — не додавати непотрібного функціоналу.

Що таке ООП? Назвіть його принципи з прикладами?
ООП — програмування через об’єкти. Принципи:

  • Інкапсуляція — приховування деталей (клас Car з методом drive()).
  • Наслідування — створення нових класів на основі існуючих.
  • Поліморфізм — одна операція для різних об’єктів.
  • Абстракція — приховування складності (клас Shape).

Що таке інтерфейс? Що таке абстрактний клас? Чим вони відрізняються?

  • Інтерфейс: без реалізації, тільки контракт.
  • Абстрактний клас: може мати часткову реалізацію.
  • Відмінність: інтерфейс не має стану, клас може реалізувати кілька інтерфейсів, але лише один абстрактний клас.

Яка різниця між String, StringBuffer та StringBuilder?

  • String — незмінний.
  • StringBuffer і StringBuilder — змінні, для ефективного маніпулювання рядками.
  • Відмінність: StringBuffer — синхронізований, StringBuilder — ні.

Яка ієрархія Collections?

  • CollectionList, Set, Queue, Map.

Яка різниця між Thread class та Runnable interface?

  • Thread — клас для створення потоку.
  • Runnable — інтерфейс для визначення завдання потоку.

Що таке PageObject і PageFactory?

  • PageObject — патерн для абстракції сторінок в тестах.
  • PageFactory — автоматичне ініціалізування елементів на сторінці.

Що таке SOLID? Наведіть приклади.
SOLID — принципи об’єктно-орієнтованого дизайну:

  • S (Single Responsibility Principle) — один клас, одна відповідальність.
  • O (Open/Closed Principle) — класи мають бути відкритими для розширення, але закритими для змін.
  • L (Liskov Substitution Principle) — об’єкти підкласів повинні бути замінними на об’єкти базового класу.
  • I (Interface Segregation Principle) — не змушуйте клас реалізовувати інтерфейси, які йому не потрібні.
  • D (Dependency Inversion Principle) — залежності мають бути від абстракцій, а не від конкретних класів.

Які патерни GOF вам відомі? Наведіть приклади їхнього використання.
Патерни GOF:

  • Singleton — один об’єкт на все застосування (наприклад, логер).
  • Factory — створення об’єктів через фабричні методи.
  • Observer — патерн для підписки на зміни об’єкта.

Різниця між final, finally і finalize?

  • final — оголошення незмінних змінних або класів.
  • finally — блок коду, що виконується після завершення try-catch.
  • finalize — метод, який викликається перед знищенням об’єкта.

Selenium

Що таке Selenium і для чого його використовують?
Selenium — це набір інструментів для автоматизації браузерів, який використовується для тестування вебзастосунків.

Що таке драйвер браузера?
Драйвер браузера — це компонент, який дозволяє Selenium взаємодіяти з конкретним браузером для виконання тестів.

Які види локаторів сторінки існують? Які їхні переваги й недоліки?
Локатори:

  • ID — швидкий, але має бути унікальним.
  • Name — простий, але не завжди унікальний.
  • XPath — потужний, але може бути повільним.
  • CSS Selector — швидкий, але може бути складним для складних структур.

Що таке Selenium Waits? Які є і чим відрізняються?
Selenium Waits дозволяє чекати елементи на сторінці.

  • Implicit Wait — чекає заданий час перед кожною взаємодією.
  • Explicit Wait — чекає певну умову для елемента.
  • Fluent Wait — чекає з можливістю налаштування інтервалів.

Які exceptions може кинути Selenium? Що вони означають і як їх обробляти?

  • NoSuchElementException — елемент не знайдений.
  • TimeoutException — час очікування завершився.
  • ElementNotVisibleException — елемент не видимий.
    Обробляти через try-catch блоки.

Для чого використовують JavaScriptExecutor? Наведіть приклади.
JavaScriptExecutor дозволяє виконувати JavaScript-код на сторінці. Приклад: ((JavascriptExecutor) driver).executeScript("alert('Hello');");

Що таке Selenium Grid?
Selenium Grid дозволяє запускати тести паралельно на кількох машинах та браузерах для зменшення часу виконання.

Які існують способи click та send keys Selenium?

  • click: через WebElement.click() або через Actions.
  • send keys: через WebElement.sendKeys() або Actions.

Як ви запускаєте паралельне виконання тестів? Що таке ThreadLocal?
Паралельне виконання тестів можна налаштувати через TestNG або JUnit. ThreadLocal використовується для забезпечення незалежності даних між потоками.

Яка різниця між Action та Actions?
Action — інтерфейс для виконання однієї дії.
Actions — клас для виконання серії дій, наприклад, рух миші, натискання клавіші.

TestNG/JUnit

Для чого потрібні TestNG/JUnit?
Для організації і виконання автоматичних тестів у Java-проєктах.

Які анотації використовують у TestNG/JUnit?

  • TestNG: @Test, @BeforeMethod, @AfterMethod, @BeforeClass, @AfterClass.
  • JUnit: @Test, @Before, @After, @BeforeClass, @AfterClass.

Які assertions є в TestNG/JUnit?

  • TestNG: assertEquals(), assertTrue(), assertFalse(), assertNotNull(), assertNull().
  • JUnit: assertEquals(), assertTrue(), assertFalse(), assertNotNull(), assertNull().

Як виконувати тести паралельно в TestNG/JUnit?

  • TestNG: Встановити параметр <suite parallel="tests"> в XML файлі.
  • JUnit: Використовувати @RunWith(Parameterized.class) для паралельного запуску або інші бібліотеки.

    Git

    Для чого використовують системи контролю версій?
    Для збереження історії змін у коді, спільної роботи над проєктами та відновлення попередніх версій.

    Що таке Git? Який принцип його роботи?
    Git — це система контролю версій, що зберігає версії файлів локально і дозволяє легко об’єднувати зміни від кількох учасників.

    Що таке commits, branches у Git?

    • Commit — збереження змін у локальному репозиторії.
    • Branch — гілка для паралельної роботи над новими функціями чи виправленнями.

    Для чого потрібні GitHub, GitLab та інші, що базуються на Git, вебхостинги проєктів?
    Для зберігання кодів в хмарі, спільної роботи над проєктами, відстеження помилок і управління версіями.

      CI

      Що таке CI?
      CI (Continuous Integration) — процес автоматичної інтеграції коду в основну гілку при кожній зміні.

      Як автоматичне тестування інтегрується в CI?
      Тести запускаються автоматично при кожній зміні коду або на етапі коміту через CI сервер.

      Як налаштувати Job чи Pipeline на знайомому вам CI-інструменті?
      Створити job/pipeline в CI інструменті (наприклад, Jenkins, GitLab CI), налаштувати кроки для побудови, тестування та деплою.

      Які інструменти для генерації репорту після виконання автоматичних тестів ви знаєте?

        • Allure
        • TestNG Reports
        • Jenkins HTML Report
        • ExtentReports

        Яку інформацію має містити звіт про виконання автоматичних тестів?
        Інформацію про пройдені/непройдені тести, час виконання, помилки, повідомлення про збій.

          Web

          Що таке клієнт-серверна архітектура?
          Це модель, де клієнт запитує ресурси або послуги у сервера.

          Що може бути клієнтом?
          Клієнтом може бути браузер, мобільний застосунок чи інша програма, яка відправляє запити на сервер.

          Що таке REST API і SOAP? У чому різниця?
          REST API — легкий архітектурний стиль, SOAP — протокол для обміну інформацією. REST зазвичай використовує HTTP, SOAP — більш складний і підтримує різні протоколи.

          Які протоколи передачі даних знаєте?
          HTTP, FTP, TCP/IP, WebSocket.

          Які методи взаємодії з API існують? У чому різниця?
          GET, POST, PUT, DELETE. GET — отримання даних, POST — створення, PUT — оновлення, DELETE — видалення.

          Як тестувати API? Що перевіряти?
          Перевіряйте правильність запитів/відповідей, статус коди, обробку помилок, швидкість відповіді.

          Що таке CRUD?
          CRUD — Create, Read, Update, Delete — базові операції для роботи з базами даних.

          Чим відрізняється GET від POST?
          GET отримує дані, POST відправляє дані на сервер.

          Які відмінності між XML та JSON?
          XML — складніший для обробки, JSON — більш легкий і читабельний для людини.

          Які формати передачі даних знаєте?
          JSON, XML, CSV, YAML.

          Як відбувається шифрування?
          Шифрування використовує алгоритми для перетворення даних у незрозумілий формат, який можна розшифрувати за допомогою ключа.

          Які бувають види баз даних?
          Реляційні, нереляційні, графові, документні.

          Охарактеризуйте класи статус кодів HTTP.

          • 1xx — інформативні.
          • 2xx — успіх.
          • 3xx — редиректи.
          • 4xx — помилки клієнта.
          • 5xx — помилки сервера.

          Які є HTTP-методи?
          GET, POST, PUT, DELETE, PATCH, OPTIONS, HEAD.

          Які знаєте Web elements?
          Input, button, link, text, checkbox, radio, select.

          Які браузери знаєте? У чому їх відмінність?
          Chrome, Firefox, Safari, Edge. Відрізняються швидкістю, функціями, підтримкою стандартів.

          Для чого потрібні інструменти розробника в браузері (Chrome DevTools)?
          Для налагодження, тестування та профілювання вебсторінок.

          Що таке кеш?
          Кеш — це тимчасове зберігання даних для швидкого доступу.

          Що таке сесія?
          Сесія — це період взаємодії між користувачем і вебсайтом, що може зберігати інформацію про користувача.

          Навіщо потрібні cookies?
          Cookies зберігають інформацію про користувача для персоналізації та автентифікації.

          Що таке фрейм?
          Фрейм — це окреме вікно на вебсторінці для завантаження інших документів.

          Що таке HTML/CSS/JavaScript?

          • HTML — структура вебсторінки.
          • CSS — стилізація.
          • JavaScript — функціональність і взаємодія.

          Яка структура вебсторінки?
          Вебсторінка складається з HTML (структура), CSS (стилі), JavaScript (функціональність).

          Навіщо чистити кеш?
          Для усунення проблем з застарілими даними і швидшого завантаження нових.

          Які види тестування можна застосувати лише до Web?
          Тестування на крос-браузерність, тестування на мобільних браузерах, тестування для доступності.

          Для чого використовують JavaScript у вебсторінках?
          Для динамічної взаємодії, анімацій та обробки подій.

          Що таке REST?
          REST — архітектурний стиль для створення вебсервісів, заснований на HTTP.

          Що таке AJAX?
          AJAX — технологія для асинхронного завантаження даних без перезавантаження сторінки.

          Mobile

          Які існують мобільні платформи?
          Android, iOS, Windows Phone, HarmonyOS.

          Які версії Android та iOS зараз використовуються на ринку?

          • Android: від 5.0 до останньої версії.
          • iOS: від 12 до останньої версії.

          Які версії Android треба тестувати, якщо підтримується з 5.0?
          Тестувати мінімум Android 5.0, а також останні стабільні версії (наприклад, 10-14).

          Назвіть типи мобільних програм.
          Нативні, гібридні, вебзастосунки.

          Який формат файлів збірок програм для Android та iOS?

          • Android: APK, AAB.
          • iOS: IPA.

          Що таке ADB?
          Android Debug Bridge — інструмент для взаємодії з пристроєм Android через командний рядок.

          Як зняти логи з пристрою AOS/IOS?

          • Android: через adb logcat.
          • iOS: через Xcode або консоль.

          Що потрібно перевіряти під час використання сканера відбитка/Face ID?
          Перевірити коректність роботи сканера (правильно розпізнає, не помилково блокує доступ).

          Як запускати тести Android без Appium?
          За допомогою Android Emulator або UI Automator.

          Поясніть концепцію дизайну Appium.
          Appium використовує один API для тестування на різних мобільних платформах, підтримує Android та iOS.

            Практичні завдання

            Написати чеклист для функціонала кошика в інтернет-магазині.
            Перевірити додавання товарів, зміну кількості, видалення товарів, правильність суми, функціональність кнопок.

            Написати тестові набори даних для поля введення дати для користувачів від 18 років.
            Введення дат для осіб старше 18 років, перевірка коректності відсічення користувачів до 18 років.

            Написати чеклист тестування форми введення даних платіжної картки.
            Перевірка введення валідних і невалідних номерів карток, терміну дії, CVV, правильність обробки помилок.

            Протестувати «предмет» щодо різних видів тестування.
            Протестувати ліфт на безпеку, функціональність, зручність, навантаження.

            Тестування поля введення для значень від 18 до 99 за допомогою Boundary Values Analysis і Equivalence Partitioning.
            Перевірка значень на межах (18, 99) і всередині (наприклад, 30, 50).

            Негативні тест-кейси для форми з e-mail, password та кнопкою submit.
            Введення неправильних форматів e-mail, порожній password, неправильна комбінація e-mail/пароль.

            Тест-кейси для функціонала пошуку на кількох сторінках.
            Перевірка пошуку за різними критеріями на різних сторінках, відображення результатів.

            Як протестувати процес оплати в інтернет-магазині?
            Перевірити різні методи оплати, валідні/невалідні картки, успішні та неуспішні транзакції.

            Пояснити базу даних для 7-річної дитини.
            База даних — це велика коробка, де зберігаються різні дані, щоб потім їх можна було легко знайти.

            Необхідна кількість тест-кейсів для Log in форми?
            Мінімум 5-6 тест-кейсів для перевірки різних комбінацій введених даних (правильний/неправильний логін, пароль).

            Перевірки для реєстраційної форми з полями first name, last name, username, password.
            Перевірити обов’язковість полів, коректність введення, відповідність пароля політикам безпеки.

            Приклад баг-репорту для відсутності обов’язкового поля username.
            Title: Поле username не є обов’язковим.
            Description: Поле має бути обов’язковим для заповнення.

            Як провести smoke-testing для Telegram?
            Перевірити основні функції: реєстрація, відправка повідомлень, прийом повідомлень, робота чату.

              Middle

              Теорія

              Обов’язки QA?
              QA відповідає за перевірку якості продукту, планування, тестування, відслідковування багів та покращення процесів розробки.

              Що таке тестування навантаження?
              Тестування навантаження перевіряє, як система витримує велику кількість користувачів. Потрібно проводити на етапі тестування стабільності перед релізом.

              Що таке таблиця рішень?
              Таблиця рішень використовується для тестування різних комбінацій вхідних даних і умов, допомагаючи покрити більше сценаріїв.

              Як організувати наскрізне тестування (e2e)?
              E2E тестування перевіряє всю систему від початку до кінця, перевіряючи взаємодію між компонентами програми.

              Що таке A/B тестування?
              A/B тестування порівнює дві версії продукту для визначення найкращого варіанту для користувача.

              Що таке mock/stub?
              Mocks і stubs — це інструменти для заміни реальних компонентів під час тестування, щоб ізолювати тести від сторонніх залежностей.

              Коли використовувати Pairwise?
              Pairwise використовується для мінімізації тестових випадків шляхом тестування всіх можливих комбінацій пар параметрів.

              Що таке fuzz-тестування?
              Fuzz-тестування шукає вразливості, генеруючи випадкові або некоректні вхідні дані для програми.

              Як змінюється вартість дефекту під час тестування?
              Вартість дефекту зростає, якщо він знаходиться пізно, особливо на етапах після розробки або після релізу.

              Що таке тестування API?
              Тестування API охоплює перевірку функціональності, надійності та безпеки API. Інструменти: Postman, SoapUI.

              Який вид тестування доцільно проводити до релізу?
              Перед релізом важливо проводити тестування регресії та Smoke-тестування для перевірки основної функціональності.

              Яка різниця між bug leakage та bug release?
              Bug leakage — це коли баг не був знайдений до релізу, а bug release — це баг, який не був помічений після релізу.

              Що таке performance testing?
              Performance testing оцінює швидкість, стабільність і ефективність програми під різними навантаженнями.

              Що таке contract testing?
              Contract testing перевіряє взаємодію між різними системами чи компонентами, щоб переконатися, що вони правильно обробляють обмін даними.

              Як вибір методології впливає на якість розробки?
              Методологія (Scrum, Kanban) визначає структуру процесу розробки, що може вплинути на швидкість, гнучкість і стабільність результатів.

              Яка різниця між Scrum і Kanban?
              Scrum — це фреймворк для управління проєктами з чіткими спринтами, Kanban — система управління роботою без обмежень по часу.

              Як провести CI/CD процес?
              CI/CD процес містить автоматичне тестування, збірку та деплой коду. Спочатку код тестується, потім автоматично деплоїться на сервери.

              Що таке cyclomatic complexity?
              Cyclomatic complexity вимірює складність коду за допомогою кількості незалежних шляхів в програмі.

              Які інструменти використовуються для load та stress testing?
              JMeter, LoadRunner використовуються для навантажувального та стрес-тестування.

              Нульовий спринт у Scrum. Для тестування є завдання під назвою «Налаштування середовища». Що тут треба виконувати?
              Нульовий спринт охоплює налаштування середовища, конфігурацію інструментів та підготовку команди до роботи над проєктом.

              AQA

              Selenium

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

              Як взаємодіють клієнтська бібліотека Selenium, драйвер браузера і сам браузер?
              Сelenium бібліотека відправляє команди драйверу, який передає їх браузеру для виконання.

              Для чого використовують browser capabilities, arguments та options?
              Вони налаштовують параметри браузера, такі як безголовий режим, вимкнення доповнень або зміни версії браузера для тестів.

              Що таке iframe і як з ним працювати в Selenium?
              iframe — це елемент, який містить окрему HTML сторінку. Для роботи з ним у Selenium використовують команду switchTo().frame().

              Як обробляти браузерні повідомлення (alerts)?
              Alerts обробляються через switchTo().alert(), де можна приймати або відхиляти повідомлення.

              Що таке Appium?
              Appium — це інструмент для автоматизації тестування мобільних застосунків на Android і iOS.

              Що таке Electron-based applications? Як використовувати Selenium i Appium для їхнього тестування?
              Electron — це фреймворк для створення десктоп-застосунків. Selenium і Appium використовуються для автоматизації тестування цих застосунків.

              Як взаємодіяти із запитами, що відправляються з браузера?
              Для взаємодії з мережевими запитами використовують інструменти на кшталт BrowserMob Proxy або перехоплюють запити через відповідні API.

              Як взаємодіяти з cookies, LocalStorage і SessionStorage?
              Сelenium надає методи для взаємодії з cookies через getCookies(), addCookie() та для роботи з LocalStorage/SessionStorage через JavaScript.

              Тестова інфраструктура

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

              Що таке контейнер і чим він відрізняється від віртуальної машини?
              Контейнер — це ізольоване середовище для застосунків, що працює без віртуалізації апаратного забезпечення, на відміну від віртуальної машини.

              Як використовують віртуальні машини та контейнери в автоматизації?
              Віртуальні машини та контейнери використовуються для створення тестових середовищ, що точно відображають продукційні умови.

              Що таке IaaS і PaaS? Наведіть приклади.
              IaaS (Infrastructure as a Service) — надання віртуальних серверів (наприклад, AWS EC2). PaaS (Platform as a Service) — платформи для розробки застосунків (наприклад, Heroku).

              Що таке Configuration management?
              Це автоматизація управління налаштуваннями та конфігураціями серверів і застосунків.

              Що таке Provisioning?
              Provisioning — це процес налаштування і надання серверів або ресурсів для застосунків.

              Які команди Linux Shell вам відомі? Як за допомогою команд Linux Shell знайти лог-файл і рядок з помилкою у файлі?
              Команди: ls, grep, cat, find. Для пошуку помилок у логах: grep 'error' /path/to/log.

              Які команди Windows CMD вам відомі? Як за допомогою команд Windows CMD знайти IP-адресу машини?
              Команди: ipconfig, ping, dir. Для IP-адреси: ipconfig.

              Що таке SSH і як ним користуватися?
              SSH — це протокол для безпечного підключення до віддалених серверів через командний рядок.

              Що таке bash і batch скрипти? Для чого їх використовують?
              Bash та batch скрипти автоматизують виконання команд у Linux/Unix або Windows середовищах для виконання регулярних завдань.

              Web

              Яка різниця між авторизацією та автентифікацією?
              Авторизація — надання доступу користувачу, автентифікація — перевірка його особи.

              Як відбувається авторизація на сервері?
              На сервері перевіряються логін та пароль, після чого видається токен або сесія для доступу до ресурсів.

              Які статус-коди помилок бувають? Чи може сервер надіслати код 400, якщо проблема на його стороні?
              Коди помилок: 4xx — клієнтські помилки, 5xx — серверні. Сервер може надіслати 400, якщо проблема в неправильному запиті.

              Як виконати Debug сторінки у браузері?
              Для цього використовуються інструменти браузера (F12) для перегляду помилок, мережевих запитів, HTML та CSS.

              Як потестувати адаптивну верстку?
              Тестується через зміну розмірів вікна або використання інструментів браузера для перевірки верстки на різних екранах.

              Що таке WebSocket і як перевірити обрив з’єднання?
              WebSocket — це протокол для двостороннього зв’язку. Перевіряється обрив через з’єднання або тайм-аут.

              Які є основні види вразливості вебзастосунків?
              Вразливості: SQL ін’єкції, XSS, CSRF, недостатня авторизація та інші.

              Які інструменти для тестування Web performance client-side знаєте?
              Інструменти: Lighthouse, WebPageTest, Chrome DevTools.

              Яка різниця між методами GET та POST?
              GET — запит для отримання даних, POST — для відправки даних на сервер.

              Яка різниця між методами PUT та PATCH?
              PUT замінює повністю ресурс, PATCH — частково оновлює ресурс.

              Які знаєте сніфери?
              Сніфери: Wireshark, Burp Suite, Fiddler.

              Яка різниця між DROP та TRUNCATE?
              DROP — видаляє таблицю, TRUNCATE — очищає таблицю, зберігаючи її структуру.

              Що таке case function?
              Case function у SQL використовується для умовного оброблення даних, аналогічно до оператора if.

              Що таке collation?
              Collation — набір правил для порівняння та сортування даних.

              Що таке схема GraphQL?
              Схема GraphQL описує типи даних, запити та їх взаємодію для отримання даних.

              Поясніть різницю між OLTP та OLAP.
              OLTP — обробка транзакцій, OLAP — аналітичні запити для великих обсягів даних.

              Згадайте різні типи реплікації в SQL Server.
              Типи реплікації: Snapshot, Transactional, Merge.

              Що ви розумієте під Self Join? Наведіть приклади.
              Self Join — це об’єднання таблиці з самою собою для порівняння її записів. Наприклад, співробітники з їхніми керівниками.

              Mobile

              Що основне треба перевірити під час тестування мобільного застосунку?
              Основні аспекти: функціональність, продуктивність, сумісність з різними пристроями та операційними системами, UI/UX, безпека, перехід між екранами, правильність зберігання даних.

              Що таке Manifest.xml в .apk файлі та які дані там вказують?
              Manifest.xml містить основну інформацію про застосунок, таку як назва, версія, права доступу, компоненти застосунку (активіті, сервіси, провайдери контенту) і налаштування.

              Що таке режим розробника Do not keep activities?
              Цей режим у Android дозволяє змусити систему знищувати активності після того, як вони перестають бути видимими, що допомагає тестувати правильне відновлення стану програми.

              Як відбувається перехоплення трафіку http/https для мобільних пристроїв?
              Для цього використовують проксі-сервери (наприклад, Charles Proxy, Fiddler) або налаштовують мобільний пристрій для роботи з проксі для моніторингу та перехоплення запитів.

              В якому вигляді зберігаються дані в мобільних застосунках локально?
              Дані можуть зберігатися у форматах SQLite бази даних, файли JSON, SharedPreferences, кешування або віртуальні файли.

              Як тестувати міграцію локальних даних?
              Тестування полягає у перевірці, чи зберігаються дані коректно після оновлення застосунку або зміни схеми бази даних.

              Які основні компоненти Android-застосунків (активіті/фрагмент/сервіс/інтент-фільтр)?
              Активіті відповідає за UI, фрагменти — за частини інтерфейсу, сервіси виконують фонові завдання, інтент-фільтри обробляють інтенти (запити на виконання дій).

              Опишіть життєвий цикл активіті.
              Активіті проходить через стани: onCreate(), onStart(), onResume(), onPause(), onStop(), onRestart(), onDestroy(). Це дозволяє керувати ресурсами та відновленням стану.

              Що таке витоки пам’яті? Як знайти?
              Витоки пам’яті виникають, коли об’єкти не звільняються від пам’яті. Для їх пошуку використовують інструменти, як LeakCanary або профайлери пам’яті Android Studio.

              Як протестувати білд на Android?
              Перевіряється правильність встановлення APK, тестуються функції застосунку на реальному пристрої або емуляторі.

              Що таке Testflight? Як тестувати за його допомогою?
              Testflight — це платформа для бета-тестування iOS-застосунків. Тести проводяться через надання доступу до застосунку та зворотного зв’язку від тестувальників.

              Як працює Android? Яка у нього архітектура?
              Android побудований на архітектурі, що містить ядро Linux, бібліотеки, Android Runtime (ART), фреймворк застосунків та аплікаційний рівень.

              Як відбувається деплой програм IOS/AOS?
              Деплой для iOS відбувається через App Store, а для Android через Google Play. Для iOS також може використовуватися TestFlight для тестування бета-версій.

              Практичні завдання

              Що робити, якщо розробник не погоджується, що заведений баг є справді багом? А якщо у вимогах використано неоднозначне формулювання? А якщо бізнес-аналітик, PM та представник клієнта зараз недоступні, щоб підказати? Як можна запобігти такій ситуації?
              Потрібно створити чіткі і точні тест-кейси, використовувати документи про вимоги, а також розробляти систему для ефективної комунікації в команді. У разі неоднозначності, необхідно зібрати всю можливу інформацію, залучити відповідальних осіб або почекати їх повернення для прийняття рішення.

              Склалася ситуація, коли команда тестування не встигає закінчити свою роботу до дедлайну. Як правильно діяти у цьому випадку? А якщо реліз пересунути не можна? А якщо ніякі фічі з релізу забрати не можна?
              У цьому випадку потрібно пріоритизувати тестування найбільш критичних функцій і знайти можливість для прискорення роботи тестувальників. Можна провести випробування тільки основних функцій, уникаючи менш важливих деталей.

              Що робити, якщо проєкт вже розпочався, а QA-інженер там почав працювати лише коли почали розроблятися бізнес-фічі? Які етапи тестування тепер треба надолужити і чи потрібно це? Як це зробити максимально грамотно без шкоди для завантаження з тестування нових фіч? Які ризики має пізнє залучення QA-інженера в розробку?
              QA-інженер має надолужити етапи тестування, такі як юніт-тестування та інтеграційне тестування, для забезпечення якості ранніх етапів. Ризики пізнього залучення містять недооцінку проблем, пропущені баги, і затримки в релізі.

              Вебсторінка з полями e-mail, password та кнопкою submit. Назвіть негативні тест-кейси, якими можна перевірити цю сторінку.
              Тестування може охоплювати: порожні поля, введення невалідного e-mail, дуже короткий або довгий пароль, неправильний формат e-mail, спроби submit з незаповненими полями.

              Припустимо, що після натискання кнопки submit сторінка перезавантажується та введені раніше дані зникають. Як перевірити, що інформацію відправлено до бази даних?
              Для цього можна використовувати інструменти для моніторингу запитів (наприклад, проксі-сервери або Network таб в DevTools), щоб перевірити, чи були відправлені правильні дані на сервер.

              Як перевірити, що дані відправились на сервер, якщо у нас немає доступу до бекенду?
              Можна перевірити мережеві запити через інструменти DevTools, використовуючи проксі-сервери або HTTP-інспектори, щоб переконатись, що запити були відправлені.

              Наведіть приклади покращень для наведеної вебсторінки (будь-яка на вибір).
              Покращення: додати валідацію форм для перевірки правильності введених даних, адаптивний дизайн для різних пристроїв, покращити UX за допомогою підказок для користувачів, додати повідомлення про помилки після натискання кнопки submit.

              Скласти Smoke Test Suite для DOU.ua.
              Тестування базових функцій: перевірка доступності сайту, реєстрація та авторизація, перевірка основних функцій пошуку та перегляду вакансій, відправка резюме.

              Протестувати функціонал банкомату за допомогою техніки State Transition Diagram.
              Створити діаграму переходів між станами банкомату (наприклад, “готовий до роботи”, “введення PIN”, “вибір суми”, “видача грошей”, “завершення операції”) та перевірити коректність переходів.

              Написати граничні значення для вводу у форму оплати товару на сайті.
              Граничні значення: мінімальна та максимальна довжина поля для номеру картки, максимальна кількість символів для адреси, допустимі значення для суми платежу.

              Є метод POST, який реєструє нового користувача на сайті, є тіло запиту, яке містить дані про пошту, телефон, ім’я користувача та адресу проживання. Які кейси для перевірки можете навести?
              Тестування на правильність формату даних, перевірка на порожні або неправильні значення, перевірка уникнення дублікатів, перевірка на мінімальні та максимальні значення.

              На що варто акцентувати при автоматизації методів API? Що варто перевіряти?
              Необхідно перевіряти правильність формату запитів і відповідей, стійкість до помилок, обробку статус-кодів, продуктивність, а також безпеку і аутентифікацію.

              Senior

              Теорія

              Як подолати труднощі через відсутність документації для тестування?
              Збирати інформацію через аналіз коду, спілкування з розробниками та бізнес-стейкхолдерами. Створювати тестову документацію самостійно або зібрати вимоги з наявних джерел.

              Який найкращий підхід для старту QA в проєкті?
              Почати з вивчення вимог, архітектури продукту та визначення основних тестових сценаріїв. Важливо налаштувати комунікацію з командою і зрозуміти очікування.

              Які перешкоди можуть виникнути у забезпеченні якості для Agile Tester?
              Часті зміни вимог, несвоєчасне надання тестових даних, недосконала комунікація між членами команди, недостатній час для тестування через швидкі цикли розробки.

              Що таке Definition of Done?
              Критерії, які визначають, що завдання вважається завершеним, охоплюючи перевірку, що функціональність працює, пройшла тести та була задокументована.

              Коли вважати тестування завершеним?
              Тестування можна вважати завершеним, коли всі критичні тести виконано, баги виправлені, покриття тестами задовільне, і жодних нових проблем не виявлено.

              Що таке RCA в тестуванні? Чи потрібно його проводити?
              RCA (Root Cause Analysis) — аналіз корінної причини багів або проблем. Це важливо для розуміння основних причин та запобігання повторенню проблем у майбутньому.

              Як підходите до перевірки тестових кейсів?
              Тест-кейси мають бути чіткими, логічними та покривати всі можливі сценарії. Я проводжу рев’ю, щоб знайти помилки, непокриті кейси або занадто загальні описи.

              Які види ризиків існують? Що таке Mitigation plan?
              Існують технічні, організаційні, ризики пов’язані з вимогами та тестуванням. Mitigation plan — це план для мінімізації впливу цих ризиків через коригувальні заходи.

              Як складати стратегію для навантажувального тестування?
              Стратегію потрібно будувати на основі аналізу очікуваного навантаження, типів користувачів, ключових функцій і бізнес-процесів, що потребують тестування.

              Як часто рев’ювати тестову документацію?
              Тестову документацію варто рев’ювати регулярно, зазвичай після кожного значного релізу або при внесенні змін у вимоги.

              Як вибрати перевірки для смоук-тестування?
              Вибірка перевірок для смоук-тестування охоплює основні функціональні сценарії, які критичні для запуску продукту, наприклад, авторизація, основні потоки користувача.

              Як запланувати завантаженість команди тестувальників?
              Необхідно оцінити обсяг роботи, пріоритети задач і ресурси, щоб правильно розподілити завдання між тестувальниками.

              Яку цінність несе аналіз результатів тестування?
              Аналіз результатів допомагає виявити потенційні проблеми в продукті, визначити, де потрібно покращити якість, та надати команді рекомендації для подальших покращень.

              Як можна покращити флоу розробки для зменшення багів на проді?
              Налаштувати CI/CD процеси, використовувати більш ефективні стратегії тестування, додати автоматизацію для повторюваних тестів та поліпшити комунікацію між командами.

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

              Як проводити естімейт завдання? Які техніки оцінки обсягу тестування?
              Оцінка обсягу тестування може містити техніки, такі як Planning Poker, T-Shirt sizing, аналіз складності тестів або їх обсягу на основі досвіду.

              Як порахувати покриття тестами функціоналу?
              Покриття тестами можна виміряти за допомогою різних метрик, таких як покриття коду, покриття функціональності або покриття вимог.

              Яка оптимальна кількість кроків у тестовому сценарії?
              Кроки повинні бути зрозумілими і лаконічними, зазвичай 5-15 кроків достатньо для забезпечення повного тестування сценарію.

              Що таке Shift Left testing?
              Shift Left означає перенесення тестування на ранні етапи розробки, що дозволяє раніше виявляти дефекти та знижувати вартість їх виправлення.

              Для чого потрібен протокол RTP?
              RTP (Real-time Transport Protocol) використовується для передачі аудіо- і відеоданих у реальному часі, зокрема в IP-мережах.

              Що таке NIC?
              NIC (Network Interface Controller) — це апаратне забезпечення, що забезпечує підключення комп’ютера або пристрою до мережі.

              Мінуси повної автоматизації тестування?
              Повна автоматизація може бути дорогою та часозатратною на початку, а також не покриває всі аспекти, такі як UI-інтеракція, чи креативні користувацькі сценарії.

              Як тестувати без документації?
              Тестування можна почати через аналіз коду, спілкування з розробниками і стейкхолдерами, а також вивчення вимог, що змінилися.

              Що таке ROI і як його рахувати?
              ROI (Return on Investment) — це співвідношення вигоди від автоматизації тестів до витрат на їх впровадження. Вираховується як відношення вигоди до витрат.

              Розкажіть про алгоритми шифрування трафіку.
              Алгоритми шифрування трафіку, такі як AES, RSA, TLS, використовуються для захисту даних під час передачі. Вони забезпечують конфіденційність і цілісність даних.

              Що ви думаєте про BDD?
              BDD (Behavior Driven Development) є корисним для тісної інтеграції тестування з розробкою. Використовувати його варто при автоматизації тестів UI або API, особливо коли є вимога до тестів бути зрозумілими для бізнесу.

              Що таке сокети і як їх тестувати?
              Сокети — це канали для двостороннього зв’язку між застосунками. Тестуються через перевірку з’єднання, обміну повідомленнями, обробки помилок.

              Як уникнути регресивних дефектів?
              Використовувати автоматизоване регресивне тестування, ретельно перевіряти всі інтеграційні точки, а також застосовувати стратегії відмовостійкості.

              Що краще — SIP чи PRI?
              SIP (Session Initiation Protocol) використовується для організації VoIP-зв’язку. PRI (Primary Rate Interface) — це старіший протокол для традиційних телефонних ліній. SIP є більш гнучким і масштабованим для сучасних комунікацій.

              Коли варто робити стрес-тестування і що врахувати?
              Стрес-тестування потрібно робити, коли треба перевірити, як система справляється з максимальним навантаженням. Враховуються сценарії навантаження та вибір інструментів для симуляції трафіку.

              Що таке CI/CD? Плюси та мінуси цього підходу?
              CI/CD — це процес безперервної інтеграції та доставки. Плюси: швидка доставка, автоматизація тестування. Мінуси: складність налаштування та підтримки, потребує значних ресурсів.

              TOP OWASP: які знаєте уразливості та методи захисту?
              Вразливості OWASP: SQL injection, XSS, CSRF, insecure deserialization. Захист: валідація введених даних, використання HTTPS, уникнення ін’єкцій, регулярні перевірки безпеки.

              Що таке NAT?
              NAT (Network Address Translation) — це технологія, що дозволяє змінювати адреси IP пакетів для забезпечення зв’язку між пристроями в різних мережах.

              Практичні завдання

              Сформулюйте негативні сценарії для POST-запиту, що створює нового користувача.

              • Введення невалідної електронної пошти.
              • Відправка порожніх полів для обов’язкових даних (наприклад, логін чи пароль).
              • Використання існуючого логіну чи електронної пошти.
              • Введення пароля, який не відповідає вимогам (наприклад, занадто короткий).
              • Відправка запиту без авторизації або з неправильними правами доступу.
              • Введення недопустимих символів у ім’я користувача чи інших полях.

              Як ви врегульовуєте конфліктні ситуації між QA та розробниками?
              Залучаю обидві сторони до відкритого діалогу, намагаюся зрозуміти точку зору кожної, щоб знайти компроміс. Використовую факти, щоб підтримати свої твердження, наприклад, результати тестування чи помилки в коді. Важливо підтримувати співпрацю і не перетворювати конфлікти в особистісні.

              Є проєкт, на якому немає тестової документації, але проєкту вже рік. Мануальним QA бракує часу на тестування, вони дуже втомлені, є бажання звільнитися. Яке рішення щодо команди можна ухвалити?
              Пропоную провести аналіз тестових пріоритетів і розподілити завдання. Частина тестів може бути автоматизована для полегшення навантаження на команду. Можна також впровадити стислішу документацію, щоб не витрачати забагато часу на її створення. Важливо перерозподілити ресурси, щоб команди не перевантажувались.

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

              1. Планування тестування: На основі аналізу вимог формуємо тестову стратегію та визначаємо покриття тестами.
              2. Розробка тестів: Створюємо функціональні, негативні та інші типи тестових випадків для кожної бізнес-логіки.
              3. Виконання тестів: Запускаємо тестування на різних етапах розробки (unit, інтеграційне, системне тестування).
              4. Виявлення дефектів: Збираємо й класифікуємо помилки для розробників, надаємо докладну інформацію для виправлення.
              5. Регресія: Проводимо повторне тестування після виправлення багів, щоб упевнитися, що зміни не впливають на інші частини системи.
              6. Звітність: Надаємо команди результати тестування для прийняття рішень.

              У вас є онлайн-калькулятор. Ви вводите 1+1, а в результаті отримуєте 3. Розкажіть, як ви будете шукати причину проблеми.
              Перевірю, чи правильний алгоритм обчислення реалізований у коді, а також перевірю, чи не впливають на результат можливі збої в обробці введених даних або помилки при обчисленні. Аналізую вхідні дані, перевіряю використовувані функції або змінні, а також перевіряю логи для знаходження можливих помилок у коді.

              Є вебсторінка з полями e-mail, password та кнопкою submit. Припустимо, що після натискання кнопки submit сторінка перезавантажується та введені раніше дані зникають. Як перевірити, що дані відправлені до бази даних?
              Можна перевірити це через інструменти розробника, такі як консоль браузера, щоб переконатися, що POST-запит був успішно відправлений на сервер. Також можна перевірити серверні логи або базу даних, щоб переконатися, що дані були записані після запиту.

              Яка мінімальна кількість тест-кейсів необхідна, щоб переконатись у коректній роботі цієї вебсторінки?
              Мінімум:

              • Тест-кейс для перевірки валідації електронної пошти.
              • Тест-кейс для перевірки мінімальних та максимальних вимог до пароля.
              • Тест-кейс для успішної реєстрації з правильними даними.
              • Тест-кейс для перевірки поведінки при невірних даних (наприклад, порожні поля).
              • Тест-кейс для перевірки реакції сторінки при натисканні на кнопку “submit”.

              Як перевірити безпеку на вебсторінці (на вибір)?

              • Перевірка вразливості до SQL Injection: вводити SQL команди в поля вводу і перевіряти на помилки.
              • Перевірка на XSS (міжсайтовий скриптинг): вставляти скрипти в поля вводу і перевіряти, чи не виконуються вони на вебсторінці.
              • Перевірка на CSRF: перевіряти, чи захищені форми від міжсайтових підробок запитів.

              Цей список питань охоплює ключові аспекти роботи QA-фахівця на різних рівнях — від технічних знань до софт скілів і підходів до вирішення проблем. Він стане в пригоді як тим, хто готується до співбесіди, так і рекрутерам, які шукають сильних кандидатів. Пам’ятайте: успішна співбесіда — це не лише демонстрація знань, а й вміння логічно мислити, працювати в команді та знаходити ефективні рішення в нестандартних ситуаціях.