SprintCode.pro

Подготовка к алгоритмическим задачам

Super

Собеседование на QA-инженера: 40 популярных вопросов с ответами

26 мин чтения
qa
testing
interview
automation
selenium

Почему профессия QA востребована?

QA-инженер (Quality Assurance) — ключевая роль в разработке ПО:

  • 🛡️ Гарантия качества продукта перед релизом
  • 💰 Экономия на исправлении багов в продакшене
  • 🚀 Востребованность в любой IT-компании
  • 📈 Хороший старт для входа в IT
  • 🔧 Развитие в автоматизацию, DevOps, разработку

Структура собеседования на QA-инженера

  1. Теория тестирования — виды, уровни, методологии
  2. Тест-дизайн — техники создания тест-кейсов
  3. Практические задачи — тестирование формы, API, UI
  4. Инструменты — баг-трекеры, системы управления тестами
  5. Автоматизация — Selenium, Postman, основы программирования
  6. Soft skills — коммуникация, работа с командой

Часть 1: Теория тестирования

Вопрос 1: Что такое тестирование ПО и зачем оно нужно?

Ответ:

Тестирование ПО — процесс проверки соответствия программного продукта заявленным требованиям и ожиданиям пользователей.

Цели тестирования:

  • Обнаружение дефектов до релиза
  • Проверка соответствия требованиям
  • Оценка качества продукта
  • Предотвращение попадания багов в продакшен
  • Повышение доверия к продукту

Важно: Тестирование не может доказать отсутствие ошибок — только их наличие.

Вопрос 2: Назовите уровни тестирования

Ответ:

┌─────────────────────────────────────────┐
│         Приемочное тестирование         │  ← Пользователь
├─────────────────────────────────────────┤
│         Системное тестирование          │  ← Вся система
├─────────────────────────────────────────┤
│      Интеграционное тестирование        │  ← Взаимодействие модулей
├─────────────────────────────────────────┤
│        Модульное тестирование           │  ← Отдельные компоненты
└─────────────────────────────────────────┘
УровеньОписаниеКто выполняет
Модульное (Unit)Тестирование отдельных функций/методовРазработчики
ИнтеграционноеПроверка взаимодействия модулейQA/Разработчики
СистемноеТестирование всей системы целикомQA
Приемочное (UAT)Проверка заказчиком/пользователемЗаказчик/QA

Вопрос 3: Какие виды тестирования вы знаете?

Ответ:

По степени автоматизации:

  • Ручное тестирование
  • Автоматизированное тестирование

По знанию кода:

  • Белый ящик — есть доступ к коду
  • Черный ящик — без знания внутренней реализации
  • Серый ящик — частичное знание архитектуры

По цели:

  • Функциональное — проверка функций системы
  • Нефункциональное:
    • Нагрузочное (Load testing)
    • Стресс-тестирование
    • Тестирование производительности
    • Тестирование безопасности
    • Тестирование удобства использования (Usability)
    • Тестирование совместимости

По времени проведения:

  • Smoke-тестирование (дымовое)
  • Регрессионное тестирование
  • Sanity-тестирование
  • Приемочное тестирование

По подходу:

  • Позитивное тестирование
  • Негативное тестирование
Пройди собеседование в топ-компанию
Платформа для подготовки

Решай алгоритмические задачи как профи

✓ Популярные алгоритмы✓ Разбор решений✓ AI помощь
Начать сейчас
Программист за работой

Вопрос 4: Чем отличается Smoke от Sanity тестирования?

Ответ:

КритерийSmokeSanity
ЦельПроверка базовой работоспособностиПроверка конкретной функциональности
КогдаПосле каждой сборкиПосле исправления бага
ГлубинаПоверхностное, широкоеУзкое, но глубокое
ДокументацияОбычно задокументированоМожет быть без документации
Аналогия"Включается ли устройство?""Работает ли исправленная кнопка?"

Smoke-тестирование:

✓ Приложение запускается
✓ Главная страница загружается
✓ Авторизация работает
✓ Основные разделы доступны

Sanity-тестирование:

Исправлен баг: "Кнопка 'Купить' не работает"
→ Проверяем кнопку 'Купить' во всех сценариях
→ Проверяем связанный функционал корзины

Вопрос 5: Что такое регрессионное тестирование?

Ответ:

Регрессионное тестирование — проверка того, что новые изменения не сломали существующую функциональность.

Когда проводится:

  • После исправления багов
  • После добавления новых функций
  • После рефакторинга кода
  • После обновления зависимостей

Стратегии:

  1. Полная регрессия — прогон всех тестов
  2. Частичная регрессия — тесты затронутых областей
  3. Приоритизация — сначала критичные тесты

Пример:

Изменение: Добавлена новая форма оплаты

Регрессия:
✓ Старые формы оплаты работают
✓ Корзина функционирует
✓ История заказов отображается
✓ Уведомления отправляются

Вопрос 6: Объясните разницу между верификацией и валидацией

Ответ:

ВерификацияВалидация
Вопрос"Правильно ли мы делаем продукт?""Правильный ли продукт мы делаем?"
ФокусСоответствие спецификациямСоответствие потребностям пользователя
КогдаВ процессе разработкиПосле разработки
МетодыРевью, инспекции, статический анализТестирование, демо, UAT

Пример:

Требование: "Кнопка должна быть синей"

Верификация: Кнопка синяя? → Да ✓
Валидация: Пользователю удобно её найти? → Нужно проверить

Вопрос 7: Что такое тестовая документация?

Ответ:

Основные документы:

1. Тест-план (Test Plan)

  • Цели и объем тестирования
  • Ресурсы и сроки
  • Критерии входа/выхода
  • Риски и митигация

2. Тест-кейс (Test Case)

ID: TC-001
Название: Успешная авторизация
Предусловия: Пользователь зарегистрирован
Шаги:
  1. Открыть страницу логина
  2. Ввести email: test@mail.com
  3. Ввести пароль: password123
  4. Нажать "Войти"
Ожидаемый результат: Переход на главную страницу
Приоритет: Высокий

3. Чек-лист (Checklist)

Форма регистрации:
[ ] Валидация email
[ ] Валидация пароля (мин. 8 символов)
[ ] Подтверждение пароля
[ ] Согласие с условиями
[ ] Кнопка отправки

4. Баг-репорт (Bug Report)

ID: BUG-123
Название: Кнопка "Купить" не реагирует на клик
Серьезность: Critical
Приоритет: High
Окружение: Chrome 120, Windows 11
Шаги воспроизведения:
  1. Открыть карточку товара
  2. Нажать "Купить"
Фактический результат: Ничего не происходит
Ожидаемый результат: Товар добавлен в корзину
Скриншот: [прикреплен]

Часть 2: Тест-дизайн

Вопрос 8: Что такое техники тест-дизайна?

Ответ:

Техники тест-дизайна — методы создания эффективных тестов с минимальным количеством тест-кейсов и максимальным покрытием.

Вопрос 9: Объясните технику "Эквивалентное разбиение"

Ответ:

Эквивалентное разбиение (Equivalence Partitioning) — разделение входных данных на группы (классы), где все значения обрабатываются одинаково.

Пример: Поле "Возраст" (допустимо 18-65)

Классы эквивалентности:
┌─────────────┬─────────────┬─────────────┐
│   < 18      │   18-65     │    > 65     │
│  (invalid)  │  (valid)    │  (invalid)  │
└─────────────┴─────────────┴─────────────┘

Тесты:
- Возраст = 15 (невалидный класс)
- Возраст = 30 (валидный класс)
- Возраст = 70 (невалидный класс)

Вместо тестирования всех значений 1-100, достаточно по одному из каждого класса.

Вопрос 10: Объясните технику "Граничные значения"

Ответ:

Анализ граничных значений (Boundary Value Analysis) — тестирование на границах диапазонов, где чаще всего возникают ошибки.

Пример: Поле "Возраст" (допустимо 18-65)

Границы:
      17  │  18  │  19  ...  64  │  65  │  66
      ────┼──────┼───────────────┼──────┼────
  invalid │ min  │    valid      │ max  │ invalid

Тесты:
- 17 (перед нижней границей) → невалидно
- 18 (нижняя граница) → валидно
- 19 (после нижней границы) → валидно
- 64 (перед верхней границей) → валидно
- 65 (верхняя граница) → валидно
- 66 (после верхней границы) → невалидно

Вопрос 11: Что такое попарное тестирование (Pairwise)?

Ответ:

Pairwise Testing — техника комбинаторного тестирования, где проверяются все возможные пары параметров.

Пример: Форма с 3 полями

Браузер: Chrome, Firefox, Safari
ОС: Windows, macOS, Linux
Язык: RU, EN

Полный перебор: 3 × 3 × 2 = 18 комбинаций
Pairwise: ~9 комбинаций (покрывает все пары)

| # | Браузер | ОС      | Язык |
|---|---------|---------|------|
| 1 | Chrome  | Windows | RU   |
| 2 | Chrome  | macOS   | EN   |
| 3 | Chrome  | Linux   | RU   |
| 4 | Firefox | Windows | EN   |
| 5 | Firefox | macOS   | RU   |
| 6 | Firefox | Linux   | EN   |
| 7 | Safari  | Windows | RU   |
| 8 | Safari  | macOS   | EN   |
| 9 | Safari  | Linux   | RU   |

Инструменты: PICT (Microsoft), AllPairs

Вопрос 12: Что такое Decision Table (Таблица решений)?

Ответ:

Таблица решений — техника для тестирования бизнес-логики с множеством условий.

Пример: Скидка на заказ

Условия:
- Сумма > 5000
- Промокод введен
- Первый заказ

| Условие          | R1 | R2 | R3 | R4 | R5 | R6 | R7 | R8 |
|------------------|----|----|----|----|----|----|----|----|
| Сумма > 5000     | Да | Да | Да | Да | Нет| Нет| Нет| Нет|
| Промокод         | Да | Да | Нет| Нет| Да | Да | Нет| Нет|
| Первый заказ     | Да | Нет| Да | Нет| Да | Нет| Да | Нет|
|------------------|----|----|----|----|----|----|----|----|
| Скидка 20%       | X  |    |    |    |    |    |    |    |
| Скидка 15%       |    | X  | X  |    | X  |    |    |    |
| Скидка 10%       |    |    |    | X  |    | X  | X  |    |
| Нет скидки       |    |    |    |    |    |    |    | X  |

Вопрос 13: Что такое State Transition (Диаграмма состояний)?

Ответ:

State Transition Testing — тестирование переходов между состояниями системы.

Пример: Статусы заказа

                    ┌─────────────┐
        Создать     │             │    Оплатить
      ───────────►  │   Новый     │ ──────────────┐
                    │             │               │
                    └──────┬──────┘               ▼
                           │              ┌───────────────┐
                  Отменить │              │   Оплачен     │
                           │              └───────┬───────┘
                           ▼                      │ Отправить
                    ┌─────────────┐               ▼
                    │  Отменен    │        ┌───────────────┐
                    └─────────────┘        │  Отправлен    │
                                           └───────┬───────┘
                                                   │ Доставить
                                                   ▼
                                           ┌───────────────┐
                                           │  Доставлен    │
                                           └───────────────┘

Тест-кейсы:
1. Новый → Оплачен → Отправлен → Доставлен (позитивный)
2. Новый → Отменен (отмена до оплаты)
3. Новый → Оплачен → Отменен (отмена после оплаты - возврат)
4. Доставлен → Новый (невозможный переход - негативный)

Часть 3: Практические задачи

Вопрос 14: Протестируйте форму авторизации

Ответ:

ФОРМА АВТОРИЗАЦИИ
┌─────────────────────────────────┐
│  Email: [________________]      │
│  Пароль: [________________]     │
│  [ ] Запомнить меня             │
│  [      Войти      ]            │
│  Забыли пароль?                 │
└─────────────────────────────────┘

Позитивные тесты:

✓ Валидный email + валидный пароль → успешный вход
✓ Email в разном регистре (Test@Mail.com)
✓ Вход с "Запомнить меня"
✓ Вход без "Запомнить меня"

Негативные тесты — Email:

✗ Пустое поле
✗ Без @ (testmail.com)
✗ Без домена (test@)
✗ Без имени (@mail.com)
✗ Два @ (test@@mail.com)
✗ Спецсимволы (test!#$@mail.com)
✗ Пробелы (test @mail.com)
✗ Кириллица (тест@мейл.ру)
✗ Несуществующий пользователь

Негативные тесты — Пароль:

✗ Пустое поле
✗ Неверный пароль
✗ Только пробелы
✗ SQL-инъекция (' OR '1'='1)
✗ XSS (<script>alert('xss')</script>)
✗ Очень длинный пароль (10000 символов)

Тесты безопасности:

✗ Брутфорс (блокировка после N попыток)
✗ Пароль виден в URL
✗ Пароль виден в логах
✗ Автозаполнение пароля

UI/UX тесты:

✓ Маска пароля (****)
✓ Кнопка показать/скрыть пароль
✓ Tab между полями
✓ Enter отправляет форму
✓ Сообщения об ошибках понятны
✓ Ссылка "Забыли пароль" работает

Вопрос 15: Протестируйте поле ввода номера телефона

Ответ:

Поле: Номер телефона
Формат: +7 (XXX) XXX-XX-XX

Позитивные тесты:

✓ +7 (999) 123-45-67
✓ +79991234567 (без форматирования)
✓ 89991234567 (с 8)
✓ 9991234567 (без кода страны)

Граничные значения:

✓ Минимум цифр: 10 (без +7)
✓ Максимум цифр: 11 (с 8) или 12 (с +7)

Негативные тесты:

✗ Пустое поле
✗ Буквы: +7 (ABC) 123-45-67
✗ Спецсимволы: +7 (999) 123-45-67!
✗ Меньше цифр: +7 (999) 123-45
✗ Больше цифр: +7 (999) 123-45-678
✗ Начинается не с +7/8/9
✗ Пробелы в середине
✗ SQL/XSS инъекции

UI/UX тесты:

✓ Автоформатирование при вводе
✓ Маска ввода
✓ Placeholder с примером
✓ Валидация в реальном времени
✓ Копирование/вставка номера

Вопрос 16: Протестируйте корзину интернет-магазина

Ответ:

Функциональные тесты:

Добавление товаров:
✓ Добавить 1 товар
✓ Добавить несколько разных товаров
✓ Добавить тот же товар повторно (увеличение количества)
✓ Добавить товар с вариациями (размер, цвет)

Изменение количества:
✓ Увеличить количество (+)
✓ Уменьшить количество (-)
✓ Ввести количество вручную
✓ Установить 0 → товар удаляется
✓ Максимальное количество (ограничение склада)

Удаление:
✓ Удалить один товар
✓ Удалить все товары
✓ Очистить корзину

Расчеты:
✓ Сумма = цена × количество
✓ Общая сумма корзины
✓ Применение скидки/промокода
✓ Расчет доставки
✓ Итоговая сумма с учетом всего

Негативные тесты:

✗ Добавить товар которого нет в наличии
✗ Количество больше чем на складе
✗ Отрицательное количество
✗ Дробное количество (1.5 шт)
✗ Невалидный промокод
✗ Истекший промокод

Тесты состояния:

✓ Корзина сохраняется после логаута
✓ Корзина сохраняется после закрытия браузера
✓ Синхронизация корзины между устройствами
✓ Товар стал недоступен пока был в корзине
✓ Цена изменилась пока товар был в корзине

Вопрос 17: Как тестировать API?

Ответ:

Пример: API получения пользователя

GET /api/users/{id}
Response: { "id": 1, "name": "John", "email": "john@mail.com" }

Позитивные тесты:

✓ GET /api/users/1 → 200 OK + корректный JSON
✓ Проверка всех полей в ответе
✓ Проверка типов данных (id: number, name: string)
✓ Проверка headers (Content-Type: application/json)

Негативные тесты:

✗ GET /api/users/999999 → 404 Not Found
✗ GET /api/users/abc → 400 Bad Request
✗ GET /api/users/-1 → 400 Bad Request
✗ GET /api/users/ → 400/404
✗ POST /api/users/1 → 405 Method Not Allowed

Тесты авторизации:

✗ Без токена → 401 Unauthorized
✗ Невалидный токен → 401 Unauthorized
✗ Истекший токен → 401 Unauthorized
✗ Чужой пользователь → 403 Forbidden

Тесты производительности:

✓ Время ответа < 200ms
✓ Нагрузка: 100 запросов/сек

Инструменты: Postman, Insomnia, curl, REST Assured


Часть 4: Инструменты

Вопрос 18: Какие инструменты для тестирования вы знаете?

Ответ:

Баг-трекеры:

  • Jira
  • YouTrack
  • Bugzilla
  • Redmine
  • Trello

Управление тестами:

  • TestRail
  • Zephyr
  • TestLink
  • qTest
  • Allure TestOps

API-тестирование:

  • Postman
  • Insomnia
  • SoapUI
  • curl

Автоматизация UI:

  • Selenium WebDriver
  • Cypress
  • Playwright
  • Puppeteer
  • Appium (мобильные)

Нагрузочное тестирование:

  • JMeter
  • Gatling
  • Locust
  • k6

Браузерные инструменты:

  • Chrome DevTools
  • Firefox Developer Tools
  • BrowserStack
  • LambdaTest

Вопрос 19: Как работать с Chrome DevTools для тестирования?

Ответ:

Открыть: F12 или Ctrl+Shift+I

Вкладки:
├── Elements — HTML/CSS, изменение на лету
├── Console — JavaScript ошибки, логи
├── Network — HTTP запросы, время загрузки
├── Performance — профилирование производительности
├── Application — cookies, localStorage, кэш
└── Lighthouse — аудит качества страницы

Полезные действия:

Network:
- Фильтрация запросов (XHR, JS, CSS)
- Throttling (Slow 3G, Offline)
- Preserve log — сохранять при переходах
- Копирование запроса как cURL

Console:
- console.log() для отладки
- Поиск JavaScript ошибок
- Выполнение JS команд

Application:
- Просмотр/редактирование cookies
- Очистка кэша
- Просмотр localStorage/sessionStorage

Device Mode (Ctrl+Shift+M):
- Эмуляция мобильных устройств
- Тестирование адаптивности

Вопрос 20: Как составить хороший баг-репорт?

Ответ:

┌─────────────────────────────────────────────────────────┐
│ BUG-456: Кнопка "Оформить заказ" не работает на iOS    │
├─────────────────────────────────────────────────────────┤
│ Серьезность: Critical                                   │
│ Приоритет: High                                         │
│ Компонент: Checkout                                     │
│ Версия: 2.1.0                                          │
├─────────────────────────────────────────────────────────┤
│ Окружение:                                              │
│ - Устройство: iPhone 14 Pro                            │
│ - ОС: iOS 17.1                                         │
│ - Браузер: Safari 17.1                                 │
│ - Сеть: WiFi                                           │
├─────────────────────────────────────────────────────────┤
│ Предусловия:                                            │
│ - Пользователь авторизован                             │
│ - В корзине есть товар                                 │
├─────────────────────────────────────────────────────────┤
│ Шаги воспроизведения:                                   │
│ 1. Открыть корзину                                     │
│ 2. Нажать "Оформить заказ"                             │
│ 3. Заполнить адрес доставки                            │
│ 4. Нажать "Подтвердить заказ"                          │
├─────────────────────────────────────────────────────────┤
│ Фактический результат:                                  │
│ Кнопка визуально нажимается, но ничего не происходит.  │
│ В консоли ошибка: "TypeError: undefined is not..."     │
├─────────────────────────────────────────────────────────┤
│ Ожидаемый результат:                                    │
│ Заказ создается, переход на страницу "Спасибо"         │
├─────────────────────────────────────────────────────────┤
│ Вложения:                                               │
│ - screenshot.png                                        │
│ - console-log.txt                                       │
│ - video.mp4                                            │
├─────────────────────────────────────────────────────────┤
│ Дополнительно:                                          │
│ - На Android работает корректно                        │
│ - Воспроизводится в 100% случаев                       │
└─────────────────────────────────────────────────────────┘

Приоритет vs Серьезность:

СерьезностьОписание
CriticalБлокирует работу, нет workaround
MajorСерьезная проблема, есть workaround
MinorНезначительная проблема
TrivialКосметический дефект
ПриоритетКогда исправлять
HighНемедленно
MediumВ текущем спринте
LowКогда будет время

Часть 5: Автоматизация

Вопрос 21: Что такое Selenium и как он работает?

Ответ:

Selenium WebDriver — инструмент для автоматизации браузера.

# Пример на Python from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC # Инициализация драйвера driver = webdriver.Chrome() # Открыть страницу driver.get("https://example.com/login") # Найти элементы и взаимодействовать email_input = driver.find_element(By.ID, "email") email_input.send_keys("test@mail.com") password_input = driver.find_element(By.ID, "password") password_input.send_keys("password123") login_button = driver.find_element(By.CSS_SELECTOR, "button[type='submit']") login_button.click() # Ожидание элемента wait = WebDriverWait(driver, 10) welcome = wait.until( EC.presence_of_element_located((By.CLASS_NAME, "welcome-message")) ) # Проверка assert "Добро пожаловать" in welcome.text # Закрыть браузер driver.quit()

Локаторы (способы поиска элементов):

By.ID # driver.find_element(By.ID, "email") By.NAME # driver.find_element(By.NAME, "username") By.CLASS_NAME # driver.find_element(By.CLASS_NAME, "btn") By.TAG_NAME # driver.find_element(By.TAG_NAME, "input") By.LINK_TEXT # driver.find_element(By.LINK_TEXT, "Войти") By.CSS_SELECTOR # driver.find_element(By.CSS_SELECTOR, "#form .btn") By.XPATH # driver.find_element(By.XPATH, "//button[@type='submit']")

Вопрос 22: Что такое Page Object Pattern?

Ответ:

Page Object — паттерн проектирования для автотестов, где каждая страница представлена классом.

# page_objects/login_page.py class LoginPage: def __init__(self, driver): self.driver = driver self.url = "https://example.com/login" # Локаторы EMAIL_INPUT = (By.ID, "email") PASSWORD_INPUT = (By.ID, "password") LOGIN_BUTTON = (By.CSS_SELECTOR, "button[type='submit']") ERROR_MESSAGE = (By.CLASS_NAME, "error") # Действия def open(self): self.driver.get(self.url) return self def enter_email(self, email): self.driver.find_element(*self.EMAIL_INPUT).send_keys(email) return self def enter_password(self, password): self.driver.find_element(*self.PASSWORD_INPUT).send_keys(password) return self def click_login(self): self.driver.find_element(*self.LOGIN_BUTTON).click() return self def login(self, email, password): self.enter_email(email) self.enter_password(password) self.click_login() return self def get_error_message(self): return self.driver.find_element(*self.ERROR_MESSAGE).text # tests/test_login.py def test_successful_login(): driver = webdriver.Chrome() login_page = LoginPage(driver) login_page.open().login("test@mail.com", "password123") assert "Добро пожаловать" in driver.page_source def test_invalid_password(): driver = webdriver.Chrome() login_page = LoginPage(driver) login_page.open().login("test@mail.com", "wrong") assert login_page.get_error_message() == "Неверный пароль"

Преимущества:

  • Разделение логики тестов и взаимодействия с UI
  • Переиспользование кода
  • Легкое обновление при изменении UI
  • Читаемые тесты

Вопрос 23: Какие есть альтернативы Selenium?

Ответ:

ИнструментЯзыкОсобенности
SeleniumPython, Java, JS, C#Классика, все браузеры
CypressJavaScriptБыстрый, встроенные ожидания
PlaywrightJS, Python, Java, .NETMicrosoft, все браузеры, быстрый
PuppeteerJavaScriptChrome/Firefox, от Google
AppiumВсеМобильное тестирование

Cypress пример:

describe('Login', () => { it('should login successfully', () => { cy.visit('/login') cy.get('#email').type('test@mail.com') cy.get('#password').type('password123') cy.get('button[type="submit"]').click() cy.contains('Добро пожаловать').should('be.visible') }) })

Playwright пример:

from playwright.sync_api import sync_playwright with sync_playwright() as p: browser = p.chromium.launch() page = browser.new_page() page.goto('https://example.com/login') page.fill('#email', 'test@mail.com') page.fill('#password', 'password123') page.click('button[type="submit"]') assert page.locator('.welcome-message').is_visible() browser.close()

Часть 6: Soft Skills и процессы

Вопрос 24: Как работать с разработчиками при обнаружении бага?

Ответ:

Правильный подход:

  1. Убедитесь, что это баг

    • Проверьте требования
    • Воспроизведите несколько раз
    • Проверьте на разных окружениях
  2. Создайте качественный баг-репорт

    • Четкие шаги воспроизведения
    • Скриншоты/видео
    • Логи, если есть доступ
  3. Коммуникация

    • Объективно описывайте проблему
    • Не обвиняйте ("код сломан"), а констатируйте ("не работает")
    • Будьте готовы помочь с воспроизведением
  4. При разногласиях

    • "Это не баг, а фича" → проверьте требования
    • Привлеките аналитика/PM при необходимости
    • Документируйте решение

Вопрос 25: Что делать, если времени на полное тестирование нет?

Ответ:

Стратегия приоритизации:

  1. Risk-based testing

    • Что самое критичное для бизнеса?
    • Где чаще всего ломается?
    • Что изменилось в этом релизе?
  2. Приоритеты:

High:
✓ Основной бизнес-флоу (регистрация, покупка, оплата)
✓ Новая функциональность
✓ Исправленные баги (проверить фикс)

Medium:
○ Интеграции
○ Edge cases основных функций

Low (если останется время):
○ UI/UX мелочи
○ Редко используемый функционал
  1. Smoke test обязателен

    • Приложение запускается
    • Основные функции работают
  2. Документируйте

    • Что протестировано
    • Что не протестировано и почему
    • Известные риски

Вопрос 26: Расскажите про Agile/Scrum с точки зрения QA

Ответ:

Роль QA в Scrum:

Sprint (2 недели)
┌──────────────────────────────────────────────────────┐
│ Planning → Development → Testing → Review → Retro   │
└──────────────────────────────────────────────────────┘

QA участвует:
├── Planning: оценка задач, выявление рисков
├── Grooming: уточнение требований, критерии приемки
├── Daily: статус тестирования, блокеры
├── Development: написание тест-кейсов параллельно
├── Testing: тестирование готовых задач
├── Review: демо функциональности
└── Retro: улучшение процессов

Definition of Done (DoD) для QA:

✓ Код прошел code review
✓ Unit-тесты написаны и проходят
✓ Функциональное тестирование пройдено
✓ Регрессия не сломана
✓ Документация обновлена
✓ Баги критичности Critical/Major отсутствуют

Типичные ошибки на собеседовании

Ошибка 1: Не уточнять требования

❌ "Протестирую все возможные комбинации"
✓ "Какой формат телефона ожидается? Есть ли ограничения?"

Ошибка 2: Только позитивные тесты

❌ "Ввожу корректные данные — работает"
✓ "Проверю валидные данные, невалидные, граничные значения, безопасность"

Ошибка 3: Не знать инструменты

❌ "Я только руками тестирую"
✓ "Использую Postman для API, знаком с Selenium, изучаю Playwright"

Ошибка 4: Плохой баг-репорт

❌ "Не работает кнопка"
✓ "Кнопка 'Отправить' не реагирует на клик в Chrome на странице /checkout
   после заполнения формы. Шаги: 1... 2... 3..."

Заключение

Успешное собеседование на QA-инженера требует:

  • Знания теории тестирования и техник тест-дизайна
  • Умения составлять тест-кейсы и баг-репорты
  • Практического опыта тестирования (формы, API, UI)
  • Знакомства с инструментами (Postman, DevTools, баг-трекеры)
  • Базового понимания автоматизации
  • Soft skills: коммуникация, внимательность к деталям

Главное качество QA — критическое мышление и желание найти проблему до того, как её найдет пользователь.