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

Собеседование на QA-инженера: 40 популярных вопросов с ответами
Почему профессия QA востребована?
QA-инженер (Quality Assurance) — ключевая роль в разработке ПО:
- 🛡️ Гарантия качества продукта перед релизом
- 💰 Экономия на исправлении багов в продакшене
- 🚀 Востребованность в любой IT-компании
- 📈 Хороший старт для входа в IT
- 🔧 Развитие в автоматизацию, DevOps, разработку
Структура собеседования на QA-инженера
- Теория тестирования — виды, уровни, методологии
- Тест-дизайн — техники создания тест-кейсов
- Практические задачи — тестирование формы, API, UI
- Инструменты — баг-трекеры, системы управления тестами
- Автоматизация — Selenium, Postman, основы программирования
- Soft skills — коммуникация, работа с командой
Часть 1: Теория тестирования
Вопрос 1: Что такое тестирование ПО и зачем оно нужно?
Ответ:
Тестирование ПО — процесс проверки соответствия программного продукта заявленным требованиям и ожиданиям пользователей.
Цели тестирования:
- Обнаружение дефектов до релиза
- Проверка соответствия требованиям
- Оценка качества продукта
- Предотвращение попадания багов в продакшен
- Повышение доверия к продукту
Важно: Тестирование не может доказать отсутствие ошибок — только их наличие.
Вопрос 2: Назовите уровни тестирования
Ответ:
┌─────────────────────────────────────────┐
│ Приемочное тестирование │ ← Пользователь
├─────────────────────────────────────────┤
│ Системное тестирование │ ← Вся система
├─────────────────────────────────────────┤
│ Интеграционное тестирование │ ← Взаимодействие модулей
├─────────────────────────────────────────┤
│ Модульное тестирование │ ← Отдельные компоненты
└─────────────────────────────────────────┘
| Уровень | Описание | Кто выполняет |
|---|---|---|
| Модульное (Unit) | Тестирование отдельных функций/методов | Разработчики |
| Интеграционное | Проверка взаимодействия модулей | QA/Разработчики |
| Системное | Тестирование всей системы целиком | QA |
| Приемочное (UAT) | Проверка заказчиком/пользователем | Заказчик/QA |
Вопрос 3: Какие виды тестирования вы знаете?
Ответ:
По степени автоматизации:
- Ручное тестирование
- Автоматизированное тестирование
По знанию кода:
- Белый ящик — есть доступ к коду
- Черный ящик — без знания внутренней реализации
- Серый ящик — частичное знание архитектуры
По цели:
- Функциональное — проверка функций системы
- Нефункциональное:
- Нагрузочное (Load testing)
- Стресс-тестирование
- Тестирование производительности
- Тестирование безопасности
- Тестирование удобства использования (Usability)
- Тестирование совместимости
По времени проведения:
- Smoke-тестирование (дымовое)
- Регрессионное тестирование
- Sanity-тестирование
- Приемочное тестирование
По подходу:
- Позитивное тестирование
- Негативное тестирование
Решай алгоритмические задачи как профи

Вопрос 4: Чем отличается Smoke от Sanity тестирования?
Ответ:
| Критерий | Smoke | Sanity |
|---|---|---|
| Цель | Проверка базовой работоспособности | Проверка конкретной функциональности |
| Когда | После каждой сборки | После исправления бага |
| Глубина | Поверхностное, широкое | Узкое, но глубокое |
| Документация | Обычно задокументировано | Может быть без документации |
| Аналогия | "Включается ли устройство?" | "Работает ли исправленная кнопка?" |
Smoke-тестирование:
✓ Приложение запускается
✓ Главная страница загружается
✓ Авторизация работает
✓ Основные разделы доступны
Sanity-тестирование:
Исправлен баг: "Кнопка 'Купить' не работает"
→ Проверяем кнопку 'Купить' во всех сценариях
→ Проверяем связанный функционал корзины
Вопрос 5: Что такое регрессионное тестирование?
Ответ:
Регрессионное тестирование — проверка того, что новые изменения не сломали существующую функциональность.
Когда проводится:
- После исправления багов
- После добавления новых функций
- После рефакторинга кода
- После обновления зависимостей
Стратегии:
- Полная регрессия — прогон всех тестов
- Частичная регрессия — тесты затронутых областей
- Приоритизация — сначала критичные тесты
Пример:
Изменение: Добавлена новая форма оплаты
Регрессия:
✓ Старые формы оплаты работают
✓ Корзина функционирует
✓ История заказов отображается
✓ Уведомления отправляются
Вопрос 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?
Ответ:
| Инструмент | Язык | Особенности |
|---|---|---|
| Selenium | Python, Java, JS, C# | Классика, все браузеры |
| Cypress | JavaScript | Быстрый, встроенные ожидания |
| Playwright | JS, Python, Java, .NET | Microsoft, все браузеры, быстрый |
| Puppeteer | JavaScript | Chrome/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: Как работать с разработчиками при обнаружении бага?
Ответ:
Правильный подход:
-
Убедитесь, что это баг
- Проверьте требования
- Воспроизведите несколько раз
- Проверьте на разных окружениях
-
Создайте качественный баг-репорт
- Четкие шаги воспроизведения
- Скриншоты/видео
- Логи, если есть доступ
-
Коммуникация
- Объективно описывайте проблему
- Не обвиняйте ("код сломан"), а констатируйте ("не работает")
- Будьте готовы помочь с воспроизведением
-
При разногласиях
- "Это не баг, а фича" → проверьте требования
- Привлеките аналитика/PM при необходимости
- Документируйте решение
Вопрос 25: Что делать, если времени на полное тестирование нет?
Ответ:
Стратегия приоритизации:
-
Risk-based testing
- Что самое критичное для бизнеса?
- Где чаще всего ломается?
- Что изменилось в этом релизе?
-
Приоритеты:
High:
✓ Основной бизнес-флоу (регистрация, покупка, оплата)
✓ Новая функциональность
✓ Исправленные баги (проверить фикс)
Medium:
○ Интеграции
○ Edge cases основных функций
Low (если останется время):
○ UI/UX мелочи
○ Редко используемый функционал
-
Smoke test обязателен
- Приложение запускается
- Основные функции работают
-
Документируйте
- Что протестировано
- Что не протестировано и почему
- Известные риски
Вопрос 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 — критическое мышление и желание найти проблему до того, как её найдет пользователь.
