Подготовка к собеседованию — Java-автоматизатор тестирования (AQA)
Колода из 349+ карточек с вопросами для собеседования по направлению «Java-автоматизатор тестирования (AQA)» — по темам и уровню сложности, с повторениями по вашим оценкам. Посмотрите несколько карточек ниже, затем выберите доступ, чтобы учить всё направление по расписанию в стиле Anki (SM-2).
Новым подписчикам месяца или года может быть доступен бесплатный пробный период 7 дней. Условия и сумму подтвердит страница оплаты.
С чего начать
Нужны основы ручного тестирования и умение читать Java. Перед автоматизацией идёт короткий модуль Java Core: это повторение, а не курс. Часть общих карточек по автоматизации использует pytest, а в общих алгоритмах примеры на Python; отрабатывайте эти идеи на Java.
Первый проход: Теория тестирования → Техники тест-дизайна. Начните с базовых вопросов в этих модулях, затем продолжайте по плану. К сложным и senior-вопросам возвращайтесь по требованиям вакансии; все карточки доступны с самого начала.
Общие темы могут входить в несколько направлений и сохраняют одну историю повторений. План ниже отмечает общие основы и профильные модули; выбирайте глубину под свою вакансию.
Что внутри
Все темы направления, сгруппированные так, как вы будете их учить.
Теория тестирования
15 карточекПрофильный модуль
Техники тест-дизайна
12 карточекПрофильный модуль
Баг-репорты и процессы
19 карточекПрофильный модуль
HTTP, API и клиент-сервер
20 карточекПрофильный модуль
Веб, мобильное и безопасность
14 карточекПрофильный модуль
Java Core для автоматизатора
15 карточекПрофильный модуль
Базы данных
44 карточкиОбщие основы
Основы CS
53 карточкиОбщие основы
Selenium и Playwright
28 карточекПрофильный модуль
Паттерны и фреймворки автоматизации
30 карточекПрофильный модуль
DevOps и инфраструктура
47 карточекОбщие основы
Практические кейсы и задачи
14 карточекПрофильный модуль
Поведенческое интервью
38 карточекОбщие основы
Примеры вопросов
Несколько карточек из колоды — откройте ответ, затем выберите доступ, чтобы учить весь набор по расписанию.
В чём разница между верификацией и валидацией?
В чём разница между верификацией и валидацией?
Короткий ответ: Верификация отвечает на вопрос «делаем ли мы продукт правильно» — соответствует ли он спецификации и требованиям. Валидация отвечает «делаем ли мы правильный продукт» — решает ли он реальную задачу пользователя. Verification — про соответствие документам, validation — про соответствие ожиданиям.
Подробно:
- Верификация — проверка соответствия артефакта его спецификации. Часто статическая: ревью требований, инспекция кода, сверка с ТЗ. Отвечает: «построили ли по чертежу?».
- Валидация — проверка, что готовая система закрывает потребность пользователя. Обычно динамическая: реальное выполнение, приёмочное тестирование, демо заказчику. Отвечает: «а нужен ли был этот чертёж?».
- Порядок — верификация раньше и дешевле, валидация ближе к релизу.
| Критерий | Верификация | Валидация |
|---|---|---|
| Вопрос | делаем правильно? | делаем правильное? |
| Эталон | спецификация | нужды пользователя |
| Тип | чаще статическая | чаще динамическая |
| Пример | ревью, инспекция | приёмочный тест, демо |
⚠️ Частая ошибка: сыпать примерами («ревью — это верификация») без двух чеканных формулировок «делаем ли правильно» / «делаем ли правильное». Именно их слушает интервьюер.
Когда достаточно лёгкого списка проверок вместо полноценных тест-кейсов?
Когда достаточно лёгкого списка проверок вместо полноценных тест-кейсов?
Короткий ответ: Полноценный тест-кейс с предусловиями, шагами и ожидаемым результатом нужен там, где важна воспроизводимость и трассируемость: аудит, комплаенс, сложные многошаговые флоу. Лёгкий чек-лист достаточен для регрессии по стабильным фичам и exploratory-сессий, где важнее скорость.
Подробно:
- Тест-кейс — формальный документ, любой может повторить шаг в шаг; дорого писать и поддерживать.
- Чек-лист — список того, что проверить, без детальных шагов; быстро составить, гибко использовать.
- Критерий выбора — цена поддержки против требований к строгости и аудируемости.
| Тест-кейс | Лёгкий список проверок | |
|---|---|---|
| Детализация | шаги + ожидаемый результат | пункты «что проверить» |
| Когда | аудит, комплаенс, сложные флоу | регрессия по стабильному, exploratory |
| Цена | высокая | низкая |
| Повторяемость | точная | зависит от инженера |
⚠️ Частая ошибка: тянуть тяжёлые формальные тест-кейсы туда, где хватает списка проверок, и утонуть в поддержке документации вместо реального тестирования. Интервьюер хочет услышать обоснование выбора при нехватке времени.
Опишите жизненный цикл бага: какие статусы проходит дефект?
Опишите жизненный цикл бага: какие статусы проходит дефект?
Короткий ответ: New → Assigned → In Progress → Fixed → Retest → Closed. Это основной поток, но у него есть важные ветвления: Reopened (баг вернулся после фикса), Rejected (не баг), Duplicate (уже заведён), Deferred (отложен). Ключ в ответе — назвать не только линию, но и ветки, и кто выполняет каждый переход.
Подробно:
- New — тестировщик завёл баг.
- Assigned → In Progress — лид назначил разработчика, тот взял в работу.
- Fixed — разработчик починил и передал на проверку.
- Retest → Closed — тестировщик перепроверил на новом билде и закрыл.
- Ветки — Reopened (тестировщик), Rejected/Duplicate (разработчик или лид), Deferred (PM отложил на потом).
New ──► Assigned ──► In Progress ──► Fixed ──► Retest ──► Closed
(QA) (лид) (dev) (dev) (QA) (QA)
│ │ не прошёл
▼ ▼
Rejected / Duplicate (dev, лид) Reopened ──► снова в работу
Deferred (PM отложил)
⚠️ Частая ошибка: назвать только прямую линию New→Closed и забыть про ветки Reopened/Rejected/Duplicate/Deferred — именно они показывают, что вы работали с реальным трекером.
Опишите клиент-серверную архитектуру. Почему нельзя полагаться на валидацию только на клиенте?
Опишите клиент-серверную архитектуру. Почему нельзя полагаться на валидацию только на клиенте?
Короткий ответ: Клиент (браузер, мобильное приложение) отправляет запрос, сервер обрабатывает его и возвращает ответ — модель request/response поверх HTTP. Полагаться на клиентскую валидацию нельзя, потому что клиент полностью под контролем пользователя: форму можно обойти через curl, Postman или DevTools и отправить на сервер любые данные. Поэтому сервер обязан валидировать сам, а QA проверяет оба слоя независимо.
Подробно:
- Клиент — рисует UI, делает первичную валидацию для удобства (быстрый фидбек, без лишнего трафика), хранит токен.
- Сервер — источник правды: проверяет права, валидирует тело, пишет в БД. Это единственный слой, которому можно доверять.
- Что делает QA — не только кликает по UI, но и бьёт прямо в API в обход клиента: отправляет пустые/невалидные поля, чужой
id, инъекции — и смотрит, что сервер их отбил (400/403), а не сохранил.
КЛИЕНТ СЕРВЕР
┌────────┐ request (HTTP) ┌─────────┐
│ UI │ ─────────────────► │ API │
│ ✔ UX- │ │ ✔ обяза-│
│ валид. │ ◄───────────────── │ тельная │──► БД
└────────┘ response │ валид. │
▲ можно обойти: └─────────┘
└── curl / Postman / DevTools
⚠️ Частая ошибка: считать, что раз кнопка «Отправить» блокируется на форме, невалидные данные до сервера не дойдут. UI обходится за секунду — надёжная система проверяет всё на сервере.
Какие команды adb и xcrun simctl нужны мобильному тестировщику и как собрать логи для баг-репорта?
Какие команды adb и xcrun simctl нужны мобильному тестировщику и как собрать логи для баг-репорта?
Короткий ответ: adb управляет Android-устройством или эмулятором: установка сборки, сброс данных, deep links, скриншоты и logcat — системный лог, который фильтруют по процессу приложения. xcrun simctl делает то же для iOS-симулятора (macOS с Xcode): установка, запуск, openurl, симулированный push, скриншот и log stream. В баг-репорт идёт лог вокруг момента сбоя, а не весь поток за час.
Подробно:
- Чистый старт —
pm clearсбрасывает данные приложения,logcat -cочищает буфер перед воспроизведением. - Лог только приложения — фильтр
--pidпо процессу; краши Android лежат в буфереcrash, для ANR и системных проблем естьadb bugreport(zip-архив). - Сценарии — deep link через
am start -a VIEW -d, гибель процесса в фоне черезam kill, разрешения черезinstall -gилиpm grant. - iOS —
simctl pushпроверяет обработку push без APNs,simctl privacyвыдаёт и сбрасывает разрешения; логи и отчёты о крашах реального iPhone берут в Xcode (Devices and Simulators) или в Console.app.
# Android: устройство или эмулятор
adb devices # подключено?
adb install -r -g app-debug.apk # переустановить, выдать права
adb shell pm clear com.example.shop # сбросить данные
adb logcat -c # очистить лог перед шагами
adb logcat --pid=$(adb shell pidof -s com.example.shop) > app.log
adb logcat -b crash -d # стеки последних крашей
adb shell am start -a android.intent.action.VIEW -d "shop://orders/42"
adb exec-out screencap -p > screen.png
# iOS Simulator (macOS + Xcode)
xcrun simctl install booted Shop.app
xcrun simctl launch booted com.example.shop
xcrun simctl openurl booted "shop://orders/42"
xcrun simctl push booted com.example.shop push.json
xcrun simctl io booted screenshot screen.png
xcrun simctl spawn booted log stream --predicate 'process == "Shop"'
⚠️ Частая ошибка: прикладывать к баг-репорту весь logcat без фильтра или скриншот без лога. Разработчику нужны точное время, PID и стек исключения — очистите буфер, воспроизведите и сохраните лог процесса.
Чем примитивные типы Java отличаются от ссылочных, где они хранятся и является ли Java pass-by-value?
Чем примитивные типы Java отличаются от ссылочных, где они хранятся и является ли Java pass-by-value?
Короткий ответ: Примитив хранит само значение, а переменная ссылочного типа хранит ссылку на объект. Локальные переменные лежат в стеке потока, объекты в куче. Аргументы в Java всегда передаются по значению: для объекта копируется ссылка, а не сам объект.
Подробно:
- Примитивы —
byte,short,int,long,float,double,char,boolean. Не бываютnull,==сравнивает значения. - Ссылочные типы — классы, интерфейсы, массивы. Переменная может быть
null,==сравнивает ссылки. - Где лежат — зависит от места объявления: локальный
intнаходится в кадре стека, полеintвнутри объекта в куче. JIT может убрать аллокацию объекта, но поведение программы от этого не меняется. - Передача в метод — метод получает копию. Через копию ссылки можно изменить общий объект: хелпер с
users.add(...)меняет тестовые данные и у вызывающего теста. А вот перенаправить его переменную на другой объект нельзя.
static void change(int count, List<String> users) {
count++; // копия числа
users.add("bob"); // копия ссылки, объект тот же
users = new ArrayList<>(); // меняется только локальная копия
}
int count = 1;
List<String> users = new ArrayList<>(List.of("ann"));
change(count, users);
System.out.println(count); // 1
System.out.println(users); // [ann, bob]
⚠️ Частая ошибка: говорить, что объекты передаются по ссылке. Тогда users = new ArrayList<>() заменил бы список и у вызывающего кода, а этого не происходит.
Готовы лучше запоминать?
Посмотрите пример, выберите направление и настройте регулярную практику под свою подготовку.
Вопросы об этом направлении
Как готовиться к собеседованию на «Java-автоматизатор тестирования (AQA)»?
Учите концепции, которые придётся объяснять, а не только те, что умеете кодить. Направление «Java-автоматизатор тестирования (AQA)» в RecallDeck даёт 349+ отобранных вопросов и возвращает каждый по расписанию в стиле Anki (SM-2), основанному на ваших оценках — чтобы тренировать вспоминание и объяснение. Дополняйте повторения кодингом и пробными собеседованиями.
Какие темы охватывает направление «Java-автоматизатор тестирования (AQA)»?
Направление «Java-автоматизатор тестирования (AQA)» разбито на ключевые области, которые реально проверяют на таких собеседованиях, — по темам и уровню сложности (Concept, Junior, Middle, Senior). Полный план и примеры вопросов можно посмотреть выше до входа.
Помогает ли интервальное повторение в подготовке к «Java-автоматизатор тестирования (AQA)»?
Да. Активное вспоминание и честная самооценка помогают закреплять знания. RecallDeck назначает повторения карт по направлению «Java-автоматизатор тестирования (AQA)» на основе ваших оценок: знакомые карты возвращаются реже, а сложные получают больше практики.
Можно попробовать направление «Java-автоматизатор тестирования (AQA)» до оплаты?
Новым подписчикам месячного или годового тарифа может быть доступен пробный период 7 дней со всем направлением «Java-автоматизатор тестирования (AQA)» и всеми функциями. Право на него и сумму подтвердит страница оплаты; при повторной подписке списание может быть сразу. Отмените подписку онлайн до конца пробного периода, чтобы избежать первого списания. У вечного доступа пробного периода нет.