Топ-100 вопросов для собеседования QA

Ключевые вопросы со всех тем, которые чаще всего встречаются на технических собеседованиях QA-инженера. С развёрнутыми ответами, примерами и типичными ошибками.

Что такое Page Object?

Junior Автоматизация: подходы

Page Object — это слой, где хранятся локаторы и действия со страницей, а не бизнес-логика теста.

Так тесты остаются читаемыми: сценарий описывает поведение пользователя, а технические детали скрыты в page-классе.

Из практики: при изменении интерфейса обычно правим один Page Object, а не десятки тестов.

Частые ошибки

  • Складывают всю бизнес-логику прямо в page-классы.

Дополнительные вопросы

  • Какой слой держит assert-ы: page или test?

Что такое горизонтальное и вертикальное масштабирование?

Junior Архитектура систем

Вертикальное (scale up) — увеличить ресурсы одного сервера (CPU, RAM, диск). Просто, но ограничено железом и обычно сопровождается даунтаймом.

Горизонтальное (scale out) — добавить новые инстансы и распределить нагрузку. Практически без ограничений, отказоустойчиво, но требует stateless-приложения, балансера и репликации данных.

Из практики: для cloud-native приложений по умолчанию выбирают horizontal. БД часто масштабируют вертикально + read-replica горизонтально, потому что распределённая запись сложна.

Частые ошибки

  • Пытаются масштабировать stateful-приложение горизонтально без репликации.
  • Полагаются только на вертикальное и упираются в потолок железа.

Дополнительные вопросы

  • Что такое auto-scaling?
  • Какие БД легко масштабируются горизонтально?

Что такое балансировщик нагрузки? Какие алгоритмы знаешь?

Junior Архитектура систем

Load Balancer — компонент, распределяющий входящие запросы между несколькими инстансами приложения. Может работать на L4 (TCP/UDP) или L7 (HTTP).

Алгоритмы: round-robin (по очереди), least connections (на наименее загруженный), least response time, hash (по IP/токену для sticky), weighted (с учётом мощности). Примеры: NGINX, HAProxy, AWS ELB.

Из практики: round-robin прост, но не учитывает реальную нагрузку. Least connections лучше для разнородных запросов.

Частые ошибки

  • Используют sticky sessions без необходимости — теряют гибкость балансировки.
  • Делают LB единой точкой отказа.

Дополнительные вопросы

  • Что такое L4 и L7 балансировка?
  • Чем sticky sessions опасны?

Какие SQL-проверки QA использует в первую очередь?

Junior Базы данных и SQL

Основные SQL-проверки: SELECT для сверки данных из API/UI с тем, что реально сохранилось в БД; COUNT(*) для проверки количества записей; сравнение NULL-полей и граничных значений.

Дополнительно использую JOIN для проверки связей между таблицами, GROUP BY для агрегатов, и прямые UPDATE/DELETE для подготовки тестовых данных.

Из практики: первым делом иду в базу после любого POST/PUT-запроса — это быстрее всего показывает, что реально сохранилось и нет ли расхождения с ответом API.

Частые ошибки

  • Тесты на боевой БД.
  • Нет фиксации схем/окружения.

Дополнительные вопросы

  • Как валидируете миграции?
  • Чем опасны SELECT *?

Что такое СУБД?

Junior Базы данных и SQL

СУБД — программное обеспечение, которое управляет данными: создание структур, хранение, выборка, обновление, удаление, контроль доступа и обеспечение целостности.

Основные функции: выполнение SQL-запросов, транзакционность (ACID), контроль целостности через ограничения, управление параллельным доступом, резервное копирование.

Из практики: для QA важно понимать СУБД не только как хранилище, но и как слой валидации — ограничения на уровне схемы ловят дефекты, которые прошли через приложение.

Частые ошибки

  • Путают СУБД и саму базу данных.
  • Имеют в виду под СУБД только реляционные системы, забывая о NoSQL и других типах.

Дополнительные вопросы

  • Примеры популярных СУБД и их типы (реляционные, NoSQL)?
  • Какие задачи решает СУБД помимо хранения данных?

В чём разница между SQL и NoSQL?

Junior Базы данных и SQL

SQL-БД — реляционные, хранят данные в таблицах с фиксированной схемой, поддерживают ACID-транзакции, используют SQL. Примеры: PostgreSQL, MySQL, Oracle.

NoSQL — нереляционные хранилища без жёсткой схемы, масштабируются горизонтально, но часто жертвуют частью ACID. Типы: документные (MongoDB), ключ-значение (Redis), колоночные (Cassandra), графовые.

Из практики: выбор между SQL и NoSQL зависит от структуры данных и требований к консистентности. В тестировании важно знать, какой тип БД используется, — это определяет, как и где проверять данные.

Частые ошибки

  • Сводят разницу к «SQL – это язык, NoSQL – нет SQL», хотя речь про типы хранилищ.
  • Считают, что NoSQL всегда лучше для больших данных, не учитывая сложности согласованности и моделирования данных.

Дополнительные вопросы

  • Примеры NoSQL баз (MongoDB, Redis, Neo4j) и их модели данных?
  • Когда реляционная БД предпочтительнее NoSQL, несмотря на масштабируемость?

Что такое CRUD в SQL?

Junior Базы данных и SQL

CRUD — четыре базовые операции с данными: Create, Read, Update, Delete.

В SQL им соответствуют операторы INSERT (создать), SELECT (прочитать), UPDATE (обновить) и DELETE (удалить).

Для тестирования важно понимать, какая операция выполняется на каждом шаге сценария и как проверить результат запросом к базе.

Из практики: такие проверки быстро показывают, где данные теряются или записываются не туда.

Частые ошибки

  • Ограничивают SQL только этими операциями, забывая про другие возможности (DDL, DCL и т.д.).
  • Путают SELECT с DML операцией изменения – SELECT только чтение, не изменяет данные.

Дополнительные вопросы

  • Что такое DML и как связан с CRUD?
  • Как обеспечивается атомарность CRUD-операций (роль транзакций)?

Что такое DDL?

Junior Базы данных и SQL

DDL — это команды для структуры базы: создать таблицу, изменить схему, удалить объект.

Типичные команды: CREATE, ALTER, DROP, TRUNCATE.

Из практики: перед релизом всегда проверяю DDL-изменения на копии боевых данных, чтобы не словить неожиданные блокировки.

Частые ошибки

  • Смешивают DDL и DML: например, считают CREATE TABLE частью манипулирования данными (на самом деле это определение структуры).
  • Не учитывают, что DDL-операции зачастую auto-commit (сразу фиксируются вне транзакции).

Дополнительные вопросы

  • Что такое DML и DCL в сравнении с DDL?
  • Может ли DDL команда быть откатана транзакцией в разных СУБД?

Что такое DML?

Junior Базы данных и SQL

DML — это команды для работы с данными внутри таблиц: добавить, обновить, удалить и выбрать записи.

Обычно сюда относят INSERT, UPDATE, DELETE и SELECT.

Из практики: при проверке DML-сценариев я всегда сверяю итоговое состояние данных в базе, а не только ответ интерфейса.

Частые ошибки

  • Забывают про SELECT, говоря о DML только как о модификации: хотя SELECT не изменяет, он тоже оперирует данными (DQL – подкатегория DML).
  • Не соблюдают транзакционность DML: например, выполняют UPDATE/DELETE без WHERE, затрагивая лишние записи.

Дополнительные вопросы

  • В чём разница между DELETE и TRUNCATE (DDL или DML)?
  • Что такое транзакция и как DML с ней взаимодействует?

Что такое агрегирующие функции, группировка, сортировка, джоины?

Junior Базы данных и SQL

Агрегирующие функции вычисляют сводное значение по набору строк. Часто применяются с группировкой (GROUP BY) для получения агрегатов по категориям.

Сортировка осуществляется через ORDER BY. Джоины (JOIN) позволяют объединять строки из нескольких таблиц по связанным полям.

Из практики: ошибки чаще всего возникают в неверной группировке и условиях JOIN, поэтому их проверяю в первую очередь.

Частые ошибки

  • Забывают про условие HAVING при агрегатах.
  • Путают виды JOIN.

Дополнительные вопросы

  • Что делает LEFT JOIN в отличие от INNER JOIN?
  • Как использовать индекс при JOIN для ускорения запроса?

В чём разница между UNION и JOIN?

Junior Базы данных и SQL

UNION объединяет результаты двух запросов вертикально — складывает строки из двух выборок друг за другом. Столбцы должны совпадать по количеству и типам. UNION ALL сохраняет дубликаты, UNION — удаляет.

JOIN соединяет таблицы горизонтально, объединяя столбцы на основе связанных ключей: результат — одна широкая таблица с полями из обеих.

Из практики: UNION использую чтобы объединить продажи двух регионов в один отчёт (одинаковая структура данных); JOIN — чтобы добавить к заказу имя клиента из другой таблицы (связь через ключ).

Частые ошибки

  • Путают понятия: пытаются заменить JOIN на UNION или наоборот, не понимая разницы в структуре результата.
  • Забывают про требование соответствия столбцов при UNION (ошибка при разном количестве/типах столбцов).

Дополнительные вопросы

  • В каких случаях удобнее использовать UNION, а в каких JOIN?
  • Чем отличается UNION от подзапроса с SELECT.. FROM X UNION SELECT..?

Что проверять в ограничениях целостности базы данных?

Junior Базы данных и SQL

Проверяю первичные и внешние ключи, уникальные индексы, NOT NULL ограничения, CHECK-ограничения на диапазоны и enum-значения.

Смотрю, что некорректные записи не попадают в таблицы даже при прямой записи в БД в обход приложения — ограничения должны работать на уровне БД, а не только в коде.

Из практики: ограничения на уровне БД — последний рубеж обороны против грязных данных. Проверяю их через прямые INSERT/UPDATE с нарушением ограничений — каждое нарушение должно давать ошибку БД.

Частые ошибки

  • Считают, что проверки интерфейса полностью заменяют ограничения базы.

Дополнительные вопросы

  • Какие ограничения особенно важны для таблицы заказов?

Какие виды JOIN есть в SQL и чем они отличаются?

Junior Базы данных и SQL

INNER JOIN возвращает только строки, у которых есть совпадение в обеих таблицах. LEFT JOIN — все строки левой таблицы плюс совпадения справа (или NULL, если справа нет). RIGHT JOIN — симметрично, все справа. FULL JOIN — объединение LEFT и RIGHT: все строки с обеих сторон, NULL там, где нет пары.

CROSS JOIN — декартово произведение, каждая строка слева с каждой справа. Часто нужен для генерации комбинаций.

Из практики: 80% задач решается INNER и LEFT. RIGHT почти не встречается (тот же LEFT с переставленными таблицами). FULL — для сверок и поиска расхождений между двумя списками.

Частые ошибки

  • Считать, что LEFT JOIN не выкидывает строки — выкинет, если потом в WHERE отфильтровать по столбцу из правой таблицы без IS NULL.
  • Забыть условие в ON и получить декартово произведение.

Дополнительные вопросы

  • Как найти строки из A, которых нет в B?
  • Чем USING отличается от ON?

В чём разница между WHERE и HAVING?

Junior Базы данных и SQL

WHERE фильтрует строки до группировки — работает с отдельными строками. HAVING фильтрует результаты после GROUP BY — работает с агрегатами.

Например, WHERE status = 'paid' уберёт неоплаченные заказы. HAVING SUM(amount) > 1000 оставит только тех клиентов, у кого сумма заказов больше 1000.

Из практики: если условию не нужен агрегат — пишите его в WHERE, оптимизатор быстрее обработает. HAVING — только для условий по агрегатам.

Частые ошибки

  • Писать HAVING там, где можно WHERE — теряется производительность.
  • Ссылаться на алиас столбца в WHERE — в большинстве СУБД нельзя (он ещё не вычислен).

Дополнительные вопросы

  • Можно ли использовать оба в одном запросе?
  • Можно ли в HAVING писать условие без агрегата?

Как работает GROUP BY и когда его применять?

Junior Базы данных и SQL

GROUP BY объединяет строки с одинаковыми значениями в указанных столбцах в одну группу. К каждой группе можно применить агрегатные функции: COUNT, SUM, AVG, MIN, MAX.

В SELECT можно класть только либо столбцы из GROUP BY, либо агрегаты. Иначе СУБД не знает, какое из значений показать.

Из практики: применяют для отчётов «сколько заказов на пользователя», «сумма по дням», «среднее по категории». GROUP BY несколькими столбцами создаёт группы по их комбинации.

Частые ошибки

  • Положить в SELECT столбец, которого нет в GROUP BY и не агрегированного — ошибка (в Postgres) или непредсказуемое значение (в MySQL в режиме ONLY_FULL_GROUP_BY=OFF).
  • Считать, что GROUP BY сортирует — порядок не гарантирован, нужен ORDER BY.

Дополнительные вопросы

  • Чем отличается GROUP BY от DISTINCT?
  • Что такое GROUP BY ROLLUP?

Что такое индекс и как он ускоряет запрос?

Junior Базы данных и SQL

Индекс — это отдельная структура данных (чаще всего B-tree), которая хранит значения столбца и ссылки на строки таблицы. По нему СУБД находит нужные строки за логарифмическое время вместо полного сканирования.

Самые частые сценарии, где помогает: WHERE col = X, JOIN по столбцу, ORDER BY, поиск диапазона, проверка UNIQUE.

Из практики: индекс ускоряет чтение, но замедляет вставку и обновление, потому что его нужно поддерживать. На большие таблицы индексы строят осторожно и только под конкретные запросы.

Частые ошибки

  • Индекс на каждое поле «на всякий случай» — деградация INSERT/UPDATE.
  • Запрос с WHERE по функции от столбца (LOWER(name) = ...) не использует обычный индекс — нужен функциональный.

Дополнительные вопросы

  • Что такое составной индекс?
  • Почему индекс на boolean-столбец обычно бесполезен?

Что такое внешний ключ и какие у него действия ON DELETE?

Junior Базы данных и SQL

Внешний ключ (FOREIGN KEY) — это ссылка одного столбца (или нескольких) на первичный ключ другой таблицы. Он гарантирует, что в зависимой таблице не появится значение, которого нет в родительской.

Действия при удалении/обновлении родителя: CASCADE (удалить/обновить и потомков), SET NULL (выставить NULL у потомков), SET DEFAULT (значение по умолчанию), RESTRICT/NO ACTION (запретить операцию, если есть потомки).

Из практики: CASCADE удобен для тесно связанных данных (комментарии при удалении поста). Для важных бизнес-сущностей чаще выбирают RESTRICT — заставить разработчика подумать.

Частые ошибки

  • CASCADE на родительской таблице с миллионами потомков — длинная блокировка.
  • Забыть индекс на столбце внешнего ключа — DELETE родителя проверяет потомков полным сканом.

Дополнительные вопросы

  • Почему нужен индекс на FOREIGN KEY столбец?
  • Что такое отложенная проверка constraint?

Что такое HAVING с COUNT и типовой пример?

Junior Базы данных и SQL

HAVING фильтрует группы после GROUP BY по агрегатам. Например, SELECT user_id, COUNT(*) FROM orders GROUP BY user_id HAVING COUNT(*) > 10 — пользователи с более 10 заказами.

В отличие от WHERE, HAVING работает с агрегатами, которые видны только после группировки.

Из практики: незаменим для отчётов «у кого больше N» или «у кого сумма выше X». Если можно отфильтровать строкой — WHERE.

Частые ошибки

  • Использовать алиас агрегата в HAVING — в большинстве СУБД нельзя, нужно повторить выражение.
  • Писать неагрегатное условие в HAVING — медленнее и не семантично.

Дополнительные вопросы

  • Можно ли в HAVING ссылаться на WHERE-фильтр?
  • Чем HAVING отличается от WHERE?

Что такое CASE WHEN и где его использовать?

Junior Базы данных и SQL

CASE WHEN condition THEN value [WHEN ...] ELSE other END — выражение if/else в SQL. Можно использовать в SELECT, WHERE, ORDER BY, GROUP BY.

Простая форма: CASE column WHEN val1 THEN ... WHEN val2 THEN ... END. Поисковая — с произвольными условиями.

Из практики: типовой инструмент для условной агрегации (SUM(CASE WHEN status='paid' THEN amount END)), категоризации, сортировки по приоритету.

Частые ошибки

  • Забыть ELSE и получить NULL.
  • Сложить несовместимые типы в одном CASE — будет ошибка.

Дополнительные вопросы

  • Что такое условная агрегация?
  • Чем COALESCE отличается от CASE?

Что такое constraint NOT NULL и зачем он?

Junior Базы данных и SQL

NOT NULL запрещает значение NULL в столбце. При попытке вставки/обновления с NULL — ошибка.

Это самый базовый способ обеспечить наличие данных. Часто комбинируют с DEFAULT.

Из практики: ставьте NOT NULL по умолчанию там, где можно. Это убирает целый класс багов «забыли заполнить поле».

Частые ошибки

  • Создавать таблицу без NOT NULL и получить мусорные NULL в проде.
  • Добавлять NOT NULL на большую таблицу без DEFAULT — долгая блокировка.

Дополнительные вопросы

  • Что такое DEFAULT?
  • Как добавить NOT NULL без даунтайма?

Что такое функция COUNT(*) vs COUNT(column)?

Junior Базы данных и SQL

COUNT(*) считает все строки. COUNT(column) — только строки, где column не NULL.

COUNT(DISTINCT column) — уникальные не-NULL значения.

Из практики: помнить, что COUNT(column) пропускает NULL — типовая ошибка. Если столбец NOT NULL — оба варианта дадут одно число.

Частые ошибки

  • Считать, что COUNT(column) = COUNT(*) — не равно, если есть NULL.
  • Использовать COUNT(*) с GROUP BY и удивляться, что NULL-группы тоже считаются.

Дополнительные вопросы

  • Что вернёт COUNT(*) на пустой таблице?
  • Чем COUNT(*) быстрее COUNT(column)?

Какие виды связей существуют (1:1, 1:N, N:M)?

Junior Базы данных и SQL

1:1 — одна строка слева соответствует не более чем одной справа (пользователь и его профиль). 1:N — одной строке слева соответствует много справа (клиент и его заказы). N:M — обе стороны имеют много (студенты и курсы).

1:1 редко самостоятельна — обычно следствие разделения таблицы по причинам производительности или безопасности. N:M реализуется через промежуточную таблицу-связку.

Из практики: при описании предметной области сначала рисую сущности и связи на бумаге. Потом превращаю в физическую схему — это снимает половину будущих изменений.

Частые ошибки

  • Путают «нет связи» и «опциональная связь» (необязательная).
  • Делают 1:1 там, где достаточно одной таблицы.

Дополнительные вопросы

  • Чем кардинальность отличается от мощности связи?
  • Как обозначают опциональность в нотации Крофт-Чена?

Что такое первичный ключ? Какими свойствами обладает?

Junior Базы данных и SQL

Первичный ключ (PK) — атрибут или набор атрибутов, однозначно идентифицирующий каждую строку таблицы. Свойства: уникальность, NOT NULL, неизменяемость (по согласию команды).

Бывает естественный (значение из домена — ИНН, email) и суррогатный (искусственный UUID/serial). На практике чаще используют суррогатный — он стабильнее и не зависит от изменений бизнеса.

Из практики: естественный ключ кажется «честным», но почти всегда подводит — ИНН меняется, email перевыпускается. Суррогатный безопаснее по умолчанию.

Частые ошибки

  • Делают PK на основании email/телефона — потом обнаруживают, что они меняются.
  • Меняют значения PK для «причёсывания» — ломают внешние ключи.

Дополнительные вопросы

  • Что такое candidate key и alternate key?
  • Когда composite PK оправдан?

Что такое внешний ключ?

Junior Базы данных и SQL

Внешний ключ (FK) — атрибут или набор атрибутов в одной таблице, ссылающийся на PK другой (или той же) таблицы. Гарантирует ссылочную целостность: нельзя вставить orders.client_id, которого нет в clients.id.

Поведение при удалении/обновлении родителя задаётся ON DELETE / ON UPDATE: CASCADE (удалить детей), SET NULL, SET DEFAULT, RESTRICT, NO ACTION.

Из практики: отказ от FK на уровне БД «ради производительности» — частая ошибка. Сэкономленные миллисекунды оборачиваются битыми данными, которые потом чинят руками.

Частые ошибки

  • Не индексируют FK — JOIN и удаление становятся медленными.
  • Используют ON DELETE CASCADE без понимания цепочки — теряют данные.

Дополнительные вопросы

  • Что такое deferred constraint?
  • Когда FK хранят как «логический», без db-constraint?

Что такое транзакция?

Junior Базы данных и SQL

Транзакция — логически целостная последовательность операций, которая выполняется как единое целое: либо вся целиком (commit), либо никак (rollback).

Гарантии транзакции описывают свойства ACID. Типичный пример: списать со счёта A и зачислить на B — оба действия должны произойти вместе.

Из практики: не любая «логическая операция» — это БД-транзакция. Распределённые операции через очереди и микросервисы требуют отдельных подходов (Saga, outbox), а не одной транзакции на всё.

Частые ошибки

  • Делают транзакцию на час и блокируют половину системы.
  • Полагают, что HTTP-запрос автоматически = транзакция.

Дополнительные вопросы

  • Что такое savepoint?
  • Какие альтернативы транзакциям в распределённых системах?

Что такое ACID? Расшифруй каждую букву.

Junior Базы данных и SQL

Atomicity — атомарность: всё или ничего. Consistency — согласованность: после commit БД остаётся в валидном состоянии (соблюдены constraints). Isolation — изолированность: параллельные транзакции не видят промежуточных состояний друг друга. Durability — устойчивость: после commit изменения переживают сбой.

ACID обычно полностью реализуют реляционные БД (PostgreSQL, Oracle, MS SQL). В NoSQL и распределённых системах часто жертвуют Consistency ради Availability/Performance.

Из практики: чаще всего «теряется» Isolation — её уровень в коде явно не указывают, и в продакшене ловят странные баги.

Частые ошибки

  • Путают Consistency из ACID и Consistency из CAP — это разные понятия.
  • Считают, что NoSQL «вообще без транзакций» — у современных есть, но с ограничениями.

Дополнительные вопросы

  • Чем Consistency в ACID отличается от Consistency в CAP?
  • Как реализуется Durability на уровне WAL?

Какие группы SQL-команд знаешь (DDL, DML, DCL, TCL)?

Junior Базы данных и SQL

DDL (Data Definition) — структура: CREATE, ALTER, DROP, TRUNCATE. DML (Data Manipulation) — данные: SELECT, INSERT, UPDATE, DELETE, MERGE. DCL (Data Control) — права: GRANT, REVOKE. TCL (Transaction Control) — транзакции: BEGIN/COMMIT/ROLLBACK/SAVEPOINT.

Иногда выделяют отдельно DQL (Data Query) для SELECT. Это условное деление — в разных учебниках границы немного разные.

Из практики: понимание групп помогает в коде и в код-ревью. DDL внутри миграции — отдельно; DML — в приложении; DCL — у админов.

Частые ошибки

  • Путают TRUNCATE (DDL) и DELETE (DML) — у них разная семантика по транзакциям и триггерам.
  • Кладут DDL внутрь транзакции с DML — в некоторых СУБД auto-commit меняет поведение.

Дополнительные вопросы

  • К какой группе относится MERGE/UPSERT?
  • Чем INFORMATION_SCHEMA удобна?

Что такое JOIN? Какие виды JOIN существуют?

Junior Базы данных и SQL

JOIN — операция соединения строк двух таблиц по условию. INNER JOIN — только совпадающие пары. LEFT JOIN — все строки слева, совпадения справа (несовпавшие — NULL). RIGHT JOIN — зеркально. FULL OUTER JOIN — все строки с обеих сторон. CROSS JOIN — декартово произведение.

Дополнительно: SELF JOIN (таблица сама с собой), NATURAL JOIN (по одноимённым колонкам — лучше избегать), USING (короткая запись ON).

Из практики: LEFT JOIN с проверкой `WHERE right.id IS NULL` — типовой способ найти «строки в одной таблице, которых нет в другой».

Частые ошибки

  • Используют CROSS JOIN неосознанно — получают взрыв строк.
  • Думают, что FULL JOIN есть везде — в MySQL до 8.x его не было.

Дополнительные вопросы

  • Чем JOIN отличается от UNION?
  • Когда оправдан hash join vs nested loop?

Чем отличается WHERE от HAVING?

Junior Базы данных и SQL

WHERE фильтрует строки ДО группировки, HAVING — группы ПОСЛЕ агрегации. В WHERE нельзя использовать агрегатные функции (SUM, COUNT), в HAVING — можно.

Пример: `SELECT region, SUM(amount) FROM orders WHERE status='paid' GROUP BY region HAVING SUM(amount) > 1000`. WHERE отсекает строки с другим статусом, HAVING — регионы с маленькой суммой.

Из практики: ставить условие в HAVING вместо WHERE — типовой косяк по производительности. Если можно в WHERE — кладите туда: меньше строк дойдёт до агрегации.

Частые ошибки

  • Пишут `HAVING status='paid'` вместо WHERE — теряют производительность.
  • Пытаются использовать алиас агрегата в WHERE — не получится.

Дополнительные вопросы

  • Можно ли в HAVING ссылаться на колонку, не указанную в GROUP BY?
  • Что такое QUALIFY (в некоторых СУБД)?

Чем отличается TRUNCATE от DELETE и DROP?

Junior Базы данных и SQL

DELETE — DML, удаляет строки по условию (можно с WHERE), пишет в журнал, срабатывают триггеры, обратимо в транзакции. TRUNCATE — DDL, удаляет все строки одной операцией без построчного журнала, обычно сбрасывает счётчики, может быть необратим. DROP — DDL, удаляет саму таблицу со схемой и данными.

По скорости: TRUNCATE > DELETE для больших таблиц. По безопасности: DELETE контролируем условием, DROP/TRUNCATE — массовые операции.

Из практики: в проде команды TRUNCATE и DROP — это всегда чек-лист и резервная копия. DELETE без WHERE опасен не меньше.

Частые ошибки

  • Запускают DELETE без WHERE.
  • Не учитывают, что TRUNCATE в некоторых СУБД не вызывает триггеры — нарушается аудит.

Дополнительные вопросы

  • Можно ли откатить TRUNCATE?
  • Чем DELETE отличается от soft-delete?

Чем отличается UNION от UNION ALL?

Junior Базы данных и SQL

UNION объединяет результаты двух SELECT и убирает дубликаты строк (внутренне делает SORT/HASH). UNION ALL объединяет без проверки на дубли — поэтому быстрее.

Используйте UNION ALL, если знаете, что дубликатов не будет или они не мешают. UNION — только когда явно нужна дедупликация.

Из практики: UNION без необходимости — частая причина медленных отчётов. На больших объёмах разница может быть в разы.

Частые ошибки

  • Ставят UNION «на всякий случай» и теряют скорость.
  • Забывают, что у обоих SELECT должно совпадать число колонок и совместимые типы.

Дополнительные вопросы

  • Чем INTERSECT и EXCEPT отличаются от UNION?
  • Что произойдёт, если типы колонок не совпадут?

Как найти дубликаты в таблице?

Junior Базы данных и SQL

Классика: `SELECT col1, col2, COUNT(*) FROM t GROUP BY col1, col2 HAVING COUNT(*) > 1`. Покажет, какие комбинации полей повторяются.

Для просмотра самих дублирующихся строк удобнее ROW_NUMBER: `SELECT * FROM (SELECT *, ROW_NUMBER() OVER (PARTITION BY col1, col2 ORDER BY id) AS rn FROM t) WHERE rn > 1`.

Из практики: перед DELETE дублей обязательно нужен SELECT с теми же условиями — иначе можно случайно снести лишнее.

Частые ошибки

  • Сносят дубли DELETE без предварительного SELECT с точным условием.
  • Учитывают только часть колонок и считают «дублями» то, что ими не является.

Дополнительные вопросы

  • Как удалить дубли, сохранив самую старую запись?
  • Как предотвратить появление дублей (UNIQUE constraint)?

Что такое SQL-инъекция и как от неё защититься?

Junior Безопасность

SQL-инъекция — это атака, когда злоумышленник подставляет в пользовательский ввод фрагмент SQL, и сервер исполняет его, потому что запрос строится конкатенацией строк.

Защита: всегда использовать параметризованные запросы (prepared statements). Параметры передаются отдельно от текста запроса, и СУБД никогда не интерпретирует их как код.

Из практики: при ревью кода первое, на что смотрят — есть ли «склейка» строк в SQL. Любое "SELECT * FROM users WHERE name = '" + name + "'" — потенциальная инъекция.

Частые ошибки

  • Думать, что фильтрация символов (типа escape кавычек) достаточно — есть множество обходов.
  • Использовать ORM, но всё равно вставлять сырой SQL с конкатенацией для динамических полей.

Дополнительные вопросы

  • Чем отличается ORM от prepared statement?
  • Как защитить динамические имена таблиц/столбцов от инъекции?

Чем отличаются аутентификация, авторизация и идентификация?

Junior Безопасность

Идентификация — «кто ты говоришь, что есть» (логин, email). Аутентификация — проверка, что ты действительно тот (пароль, токен, биометрия, 2FA). Авторизация — что тебе разрешено делать (доступ к ресурсу, операции).

Последовательность: идентификация → аутентификация → авторизация. Без аутентификации авторизация бессмысленна.

Из практики: путаница ведёт к 401 vs 403 ошибкам, неправильным сообщениям пользователю и архитектурным дырам.

Частые ошибки

  • Путают идентификацию и аутентификацию.
  • Реализуют авторизацию через «есть токен — значит, можно всё».

Дополнительные вопросы

  • Что такое SSO?
  • Какие модели авторизации знаешь (RBAC, ABAC, ReBAC)?

Кто такие стейкхолдеры и как ты их классифицируешь?

Junior Бизнес-анализ

Стейкхолдер — любой, чьи интересы затрагивает проект: заказчик, спонсор, конечные пользователи, регуляторы, смежные команды, поддержка.

Классифицирую по двум осям: «влияние × интерес» (матрица Менделоу) и «внутренние/внешние». Это даёт 4 квадранта: ключевые игроки (high/high) — управлять плотно; держать удовлетворёнными (high/low); держать в курсе (low/high); минимум усилий (low/low).

Из практики: первое, что делаю на проекте — карта стейкхолдеров на одну страницу с ролью, мотивом и каналом коммуникации. Помогает не «забыть» юриста или ИБ за неделю до релиза.

Частые ошибки

  • Сводят список к одному «заказчику» и пропускают регуляторов, ИБ, саппорт.
  • Не пересматривают карту — состав меняется по ходу проекта.

Дополнительные вопросы

  • Что делать, если стейкхолдер «high power / low interest» внезапно начал блокировать решения?
  • Как ты находишь скрытых стейкхолдеров?

Какие методы выявления требований ты используешь?

Junior Бизнес-анализ

Базовый набор: интервью (1:1), воркшопы (несколько ролей сразу), наблюдение (shadowing), анкетирование, анализ документов, прототипирование, бенчмарк конкурентов.

Выбор зависит от задачи. Новый процесс — воркшоп + прототип. Незнакомый домен — наблюдение + интервью. Массовая обратная связь — анкета. Конфликты ролей — фасилитированный воркшоп, где разногласия видны всем.

Из практики: ни один метод не закрывает картину один. Обычно комбинирую 2–3 и сверяю результаты — расхождения и есть «золото» аналитика.

Частые ошибки

  • Полагаются только на интервью — заказчик описывает идеал, а не реальность.
  • Делают анкету раньше интервью и получают ответы, которые невозможно интерпретировать.

Дополнительные вопросы

  • В каких случаях наблюдение даёт больше, чем интервью?
  • Как ты валидируешь результаты выявления?

Что такое SWOT-анализ? Когда применяется?

Junior Бизнес-анализ

SWOT — матрица 2×2: Strengths и Weaknesses (внутренние факторы), Opportunities и Threats (внешние). Цель — увидеть свою позицию и опереть стратегию на сильные стороны, закрывая слабые.

Применяю на старте инициативы, при выходе на новый рынок, перед редизайном продукта. Дальше — пары: SO (сила × возможность = на чём расти), WT (слабость × угроза = что прикрывать).

Из практики: SWOT полезен только если оценки конкретны. «Сильная команда» — не пункт; «3 senior backend с опытом fintech» — пункт.

Частые ошибки

  • Размытые формулировки без цифр и контекста.
  • Путают S/W (внутреннее) и O/T (внешнее).

Дополнительные вопросы

  • В чём отличие от PESTLE?
  • Как из SWOT перейти к стратегическим действиям?

Что такое диаграмма AS-IS / TO-BE? Приведи пример.

Junior Бизнес-анализ

AS-IS — модель текущего процесса как он есть, со всеми костылями. TO-BE — модель целевого процесса после изменений. Часто рисуются в BPMN для наглядности.

Пример: оформление кредита AS-IS — 7 ручных шагов, 3 дня, 4 системы. TO-BE — 2 шага, 15 минут, 1 окно с автоматическим скорингом.

Из практики: AS-IS обязателен. Без него TO-BE — это фантазия, а не план изменений; не видно, какие операции исчезают и куда деваются люди, которые их делали.

Частые ошибки

  • Рисуют только TO-BE и потом удивляются сопротивлению на местах.
  • Опускают исключения и редкие сценарии в AS-IS.

Дополнительные вопросы

  • В какой нотации лучше рисовать AS-IS — BPMN или UML Activity?
  • Как валидируете AS-IS?

Что такое MVP и как ты определяешь его границы?

Junior Бизнес-анализ

MVP — минимально жизнеспособный продукт: минимальный набор функций, который позволяет проверить ключевую гипотезу с реальными пользователями. Не «дешёвая первая версия», а инструмент обучения.

Границы определяю от гипотезы. Гипотеза: «пользователи готовы платить за X». MVP включает только то, без чего эта гипотеза не проверяется. Всё остальное — в backlog.

Из практики: каждую фичу прохожу вопросом «если её не будет, гипотеза не проверится?». Если ответ «проверится» — фича не в MVP.

Частые ошибки

  • Делают MVP «как полноценный продукт, только меньше» — теряют скорость.
  • Урезают качество, а не объём, и получают MV-prototype, который пугает пользователей.

Дополнительные вопросы

  • Чем MVP отличается от прототипа и PoC?
  • Что такое RAT (Riskiest Assumption Test)?

Что такое BRD и чем он отличается от SRS?

Junior Бизнес-анализ

BRD (Business Requirements Document) — документ на языке бизнеса: цели проекта, бизнес-потребности, scope, бизнес-правила, заинтересованные стороны. Отвечает на «что» и «зачем».

SRS (Software Requirements Specification) — техническая спецификация на языке системы: функциональные и нефункциональные требования, ограничения, интерфейсы. Отвечает на «как именно».

Из практики: BRD читает спонсор и бизнес, SRS читает команда разработки. Один документ для обоих почти всегда плох в обеих ролях.

Частые ошибки

  • В BRD пишут SQL-запросы и схемы БД.
  • В SRS — общие фразы без измеримых критериев.

Дополнительные вопросы

  • Что такое FRS и где он между BRD и SRS?
  • Какие шаблоны BRD используешь?

Что такое IP-адрес и чем отличается IPv4 от IPv6?

Junior Веб и сети

IP-адрес — это адрес устройства в сети, по которому пакеты находят получателя.

IPv4 использует 32 бита (примерно 4,3 млрд адресов), записывается как четыре числа через точку. IPv6 использует 128 бит, адресов на порядки больше, запись — через двоеточия.

Из практики: при интеграционных проблемах важно сразу смотреть, какой именно IP видит сервер и нет ли подмены через прокси или NAT.

Частые ошибки

  • Игнорируют NAT/прокси.
  • Путают приватные/публичные диапазоны.

Дополнительные вопросы

  • Как узнать свой внешний IP?
  • Когда важна фиксация IP в логах?

Что QA важно знать про cookie и кэш?

Junior Веб и сети

Cookie хранят состояние сессии, настройки пользователя и токены авторизации. Проверяю атрибуты безопасности: HttpOnly (недоступен JS), Secure (только HTTPS), SameSite (защита от CSRF), срок действия.

Кэш браузера может отдавать устаревшие данные — проверяю корректность заголовков Cache-Control и Expires в ответах, а также поведение при принудительном обновлении.

Из практики: после выкладки новой версии дефекты часто объясняются именно кэшем — пользователь видит старый JS/CSS. Проверяю, что cache-busting работает через хэши в именах файлов.

Частые ошибки

  • Тестируют с «грязным» кэшем.
  • Не учитывают SameSite/домены/пути.

Дополнительные вопросы

  • Когда очищать кэш/куки?
  • Как проверить флаги безопасности?

Что такое VPN, как он работает и зачем нужен QA?

Junior Веб и сети

VPN создаёт зашифрованный канал между устройством и удалённой сетью, скрывая прямой маршрут трафика.

Для QA он нужен для безопасного доступа к внутренним стендам и сервисам, недоступным из открытого интернета.

Из практики: при проблемах доступа первым делом проверяю маршрут, DNS и политику VPN-профиля.

Частые ошибки

  • Диагностика сети без учета VPN-правил.
  • Сбои из-за split-tunnel/маршрутизации.

Дополнительные вопросы

  • Как проверите, что трафик идёт через VPN?
  • Как воспроизвести гео-блокировки?

Что такое HTML?

Junior Веб и сети

HTML — язык разметки, который определяет структуру и содержимое веб-страницы с помощью тегов: заголовки, параграфы, ссылки, формы, изображения.

Браузер парсит HTML и строит DOM-дерево; JavaScript работает с этим деревом динамически. QA важно понимать DOM, чтобы строить надёжные локаторы и понимать, почему элемент может быть недоступен.

Из практики: при нестабильных локаторах в автотестах первым делом смотрю структуру DOM — часто элемент есть в HTML, но ещё не отрендерен или скрыт стилями.

Частые ошибки

  • Путают HTML с языком программирования – это язык разметки, он не выполняет логику, а описывает структуру.
  • Не закрывают теги или неправильно вкладывают элементы, что может привести к некорректному отображению или проблемам с парсингом.

Дополнительные вопросы

  • Что такое валидность HTML и как ее проверить?
  • Для чего предназначен тег <head> и какие данные в него помещаются?

Что такое CSS?

Junior Веб и сети

CSS — язык описания стилей: задаёт оформление HTML-элементов (цвета, шрифты, размеры, отступы, расположение). Работает каскадно — несколько правил могут применяться к одному элементу, приоритет определяется специфичностью.

QA важно понимать CSS для тестирования адаптивности (медиа-запросы), кроссбраузерных различий и доступности (контраст, размеры шрифтов).

Из практики: визуальные баги часто связаны с конфликтами CSS-правил или неожиданным поведением flexbox/grid на разных браузерах — DevTools → Computed Styles быстро локализует проблему.

Частые ошибки

  • Не разделяют стиль и структуру: пишут inline-стили прямо в HTML или дублируют стили вместо использования CSS классов.
  • Используют!important повсеместно, нарушая каскадность и усложняя поддержку стилей.

Дополнительные вопросы

  • Что такое селектор в CSS и какие виды селекторов бывают?
  • Как браузер решает, какое из конфликтующих CSS-правил применить к элементу?

Как тестировать адаптивность интерфейса?

Junior Веб и сети

Проверяю основные контрольные ширины экрана и ориентации устройства, чтобы убедиться, что интерфейс не распадается.

Смотрю читаемость текста, доступность кнопок и поведение таблиц и форм на малых экранах.

Из практики: на мобильных ширинах часто ломаются sticky-элементы и таблицы, их проверяю отдельно.

Частые ошибки

  • Проверяют только один размер экрана.

Дополнительные вопросы

  • Какие разрешения считаешь обязательными для проверки?

Из каких частей состоит HTTP-запрос?

Junior Веб и сети

Стартовая строка (метод, путь, версия), заголовки (Host, User-Agent, Accept, Content-Type и др.) и (необязательно) тело сообщения.

Заголовки разделены пустой строкой от тела. Запросы GET, DELETE обычно без тела; POST, PUT, PATCH — с телом.

Из практики: для тестирования важно различать query parameters (в URL после ?), path parameters, тело и заголовки — все они могут влиять на поведение.

Частые ошибки

  • Считать, что в GET всё передаётся только через URL — это так, и поэтому секретам там не место.
  • Путать заголовки и тело.

Дополнительные вопросы

  • Что такое Content-Type и зачем он?
  • Чем query parameter отличается от path parameter?

Какие группы HTTP-статусов есть и что значат?

Junior Веб и сети

1xx — informational (101 Switching Protocols). 2xx — success (200 OK, 201 Created, 204 No Content). 3xx — redirect (301 Permanent, 302 Found, 304 Not Modified). 4xx — client error (400 Bad Request, 401 Unauthorized, 403 Forbidden, 404 Not Found, 409 Conflict, 422 Unprocessable). 5xx — server error (500 Internal Server Error, 502 Bad Gateway, 503 Service Unavailable, 504 Gateway Timeout).

Каждый код несёт смысл. Например, 401 — «не авторизован» (логиньтесь), 403 — «авторизован, но запрещено».

Из практики: тестировщик обязан различать 401/403, 400/404/409/422 — это основа правильного API-дизайна и часто источник пользовательских недоразумений.

Частые ошибки

  • Возвращать 200 с error: true в теле — антипаттерн.
  • Путать 400 и 404 — 400 для невалидного запроса, 404 — для несуществующего ресурса.

Дополнительные вопросы

  • Чем 422 отличается от 400?
  • Когда уместно 503?

Чем отличаются методы GET, POST, PUT, PATCH, DELETE?

Junior Веб и сети

GET — получить ресурс, без побочных эффектов, идемпотентен. POST — создать ресурс (или выполнить действие), не идемпотентен. PUT — заменить ресурс целиком, идемпотентен. PATCH — частично обновить, обычно не идемпотентен. DELETE — удалить, идемпотентен.

Идемпотентный метод — это тот, повтор которого даёт тот же результат на сервере. Это важно для повторов запросов после сбоя.

Из практики: реальные API не всегда строго следуют семантике — встречаются «POST для всего». При тестировании важно понимать, что обещает REST и что фактически делает API.

Частые ошибки

  • Использовать GET для изменяющего действия — нарушает кеширование и идемпотентность.
  • Считать PATCH строго идемпотентным.

Дополнительные вопросы

  • Что такое идемпотентность и почему она важна?
  • Чем PUT отличается от PATCH?

Что такое cookies и какие важные флаги?

Junior Веб и сети

Cookies — это пары ключ-значение, которые сервер устанавливает в браузере и которые автоматически отправляются обратно в каждом запросе на тот же домен.

Важные флаги: Secure (только по HTTPS), HttpOnly (недоступны JS — защита от кражи через XSS), SameSite (Lax/Strict/None — защита от CSRF), Expires/Max-Age (срок жизни), Domain и Path.

Из практики: для сессионных и токен-cookies всегда HttpOnly + Secure + SameSite. Отсутствие любого из этих флагов — типовая находка пентеста.

Частые ошибки

  • Хранить чувствительный токен без HttpOnly — украдут через XSS.
  • Использовать SameSite=None без Secure — браузер откажет.

Дополнительные вопросы

  • Чем session cookie отличается от persistent cookie?
  • Что такое third-party cookies и куда они делись?

Что такое HTTPS и как он защищает?

Junior Веб и сети

HTTPS — это HTTP поверх TLS. TLS обеспечивает шифрование канала (никто посередине не прочитает данные), подлинность сервера (сертификат) и целостность (никто не подменит ответ).

Для тестировщика важно понимать: HTTPS защищает данные в дороге, но не на клиенте и не на сервере. Чувствительные данные нужно дополнительно защищать.

Из практики: проверяют валидность сертификата, отсутствие смешанного содержимого (HTTPS-страница, грузящая HTTP-ассеты), наличие HSTS, корректные редиректы с HTTP на HTTPS.

Частые ошибки

  • Считать, что HTTPS защищает данные после доставки — нет, дальше как обычно.
  • Полагаться на HTTPS как «полную безопасность» — нужны другие меры.

Дополнительные вопросы

  • Что такое HSTS?
  • Что значит смешанное содержимое (mixed content)?

Что такое сетевой протокол? Какие модели знаешь (OSI, TCP/IP)?

Junior Веб и сети

Сетевой протокол — набор правил для обмена данными между узлами: формат пакетов, порядок установления соединения, обработка ошибок. Без общего протокола машины не понимают друг друга.

OSI — концептуальная модель из 7 уровней: физический, канальный, сетевой, транспортный, сеансовый, представления, прикладной. TCP/IP — практическая модель из 4 уровней: link, internet, transport, application. Большинство современных систем работает по TCP/IP.

Из практики: знать OSI полезно для общего словаря: «это L4-балансер», «проблема на L7». В реальности почти всегда работают TCP/IP-протоколы (HTTP, TCP, IP, Ethernet).

Частые ошибки

  • Путают уровни — назначают HTTP к транспортному.
  • Спорят о «правильности» OSI vs TCP/IP — это разные подходы.

Дополнительные вопросы

  • Чем UDP отличается от TCP?
  • Какие протоколы на каком уровне?

Что такое DNS?

Junior Веб и сети

DNS (Domain Name System) — иерархическая распределённая система, преобразующая доменные имена в IP-адреса. Резолв проходит по цепочке: корневые сервера → TLD-сервера (.com) → серверы домена.

Записи: A (имя → IPv4), AAAA (IPv6), CNAME (псевдоним), MX (почта), TXT (произвольный текст, SPF/DKIM), NS (delegation), SRV (сервис). TTL — сколько хранить ответ в кэше.

Из практики: «странные» проблемы DNS чаще всего из-за кэширования и TTL. После изменения записи нужно подождать TTL — иначе пол-мира видит старое.

Частые ошибки

  • Думают, что DNS «мгновенный» — пропускают эффект TTL и кэша провайдеров.
  • Делают CNAME на корневом домене (apex) — большинство DNS не позволяют.

Дополнительные вопросы

  • Что такое DNS over HTTPS?
  • Чем authoritative DNS отличается от recursive?

Как вы объясните жизненный цикл дефекта и разницу между Severity и Priority?

Junior Дефекты и баг-репорты

Жизненный цикл дефекта — это последовательность статусов: New (зарегистрирован) → Open (подтверждён) → In Progress (в работе) → Fixed (исправлен) → Retest (на перепроверке) → Closed (закрыт). Также возможны Rejected (отклонён) и Deferred (отложен).

Severity показывает техническую тяжесть дефекта (насколько он влияет на систему), Priority — бизнес-срочность исправления. Пример: опечатка на главной странице — Severity Low, Priority High.

Из практики: если эти шкалы разделены, приоритизация становится прозрачной и быстрой — разработчик и менеджер говорят на одном языке без споров.

Частые ошибки

  • Смешивают приоритет и серьёзность.
  • Неполные шаги воспроизведения.

Дополнительные вопросы

  • Пример low severity/high priority?
  • Какие обязательные поля в баг-репорте?

Каким должен быть хороший баг-репорт и как вы проверяете его качество?

Junior Дефекты и баг-репорты

Я проверяю баг-репорт по простому правилу: любой человек в команде должен воспроизвести дефект без устных пояснений.

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

Из практики: перед созданием тикета всегда проверяю, достаточно ли данных для быстрого старта исправления.

Частые ошибки

  • «Не работает» без контекста.
  • Отсутствие логов/скринов/видео.

Дополнительные вопросы

  • Как оформите непостоянный (нестабильные) дефект?
  • Как подтвердите исправление?

Приведите пример дефекта с высоким приоритетом и низкой серьёзностью.

Junior Дефекты и баг-репорты

Пример: опечатка в кнопке «Оплатить» на главной странице маркетинговой кампании.

Технически тяжесть низкая, но приоритет высокий, потому что ошибка заметна всем и бьёт по доверию и конверсии.

Из практики: такие дефекты часто чинят в первую очередь перед публичным запуском.

Частые ошибки

  • Полагать, что мелкие визуальные дефекты можно всегда отложить: иногда они критичны для восприятия клиента.
  • Считать, что тестировщик не должен предлагать высокий приоритет для незначительного бага – в коммуникации важно обосновать бизнес-эффект.

Дополнительные вопросы

  • Приведите обратный пример: низкий приоритет, но высокая серьёзность?
  • Как вы определяете приоритет багов в вашей команде?

Приведите пример дефекта с низким приоритетом и высокой серьёзностью.

Junior Дефекты и баг-репорты

Пример: редкий сбой в фоновом расчёте отчёта для узкой роли администратора.

Серьёзность высокая, потому что нарушается корректность данных, но приоритет может быть ниже из-за маленькой аудитории и обходного пути.

Из практики: такие баги обычно планируют в ближайший релиз, но не всегда блокируют текущий.

Частые ошибки

  • Предполагать, что критичные по сбою баги всегда чинятся сразу: иногда бизнес-фактор минимален, и их могут оставить до рефакторинга или вовсе не исправлять.
  • Недооценивать риск таких багов: даже с низким приоритетом, следует задокументировать и постоянно переоценивать по мере изменения контекста.

Дополнительные вопросы

  • Как пересматривается приоритет дефекта, если изменились условия использования (например, редкий сценарий стал популярнее)?
  • Стоит ли сообщать пользователям о известных серьёзных, но низкоприоритетных дефектах?

Как подтверждаете исправление дефекта (retest и регрессия)?

Junior Дефекты и баг-репорты

Retest — это проверка конкретного шага из тикета на сборке с фиксом. Подтверждаем, что баг больше не воспроизводится в тех же условиях.

После retest проводят таргетированную регрессию — функциональность, которая могла бы пострадать от изменения (соседние экраны, общие компоненты). Не обязательно полную регрессию, но достаточную, чтобы поймать побочки.

Из практики: если исправление точечное, регрессия маленькая. Если фикс затронул общий слой (контроллер, утилита) — регрессия шире. Глубину выбирают по риску.

Частые ошибки

  • Закрывать баг после успешного retest, не подумав о возможных побочках.
  • Делать полную регрессию на каждый мелкий фикс — нерационально.

Дополнительные вопросы

  • Когда нужна полная регрессия после фикса?
  • Что такое hotfix и как его проверять?

Какие обязательные поля должны быть в баг-репорте?

Junior Дефекты и баг-репорты

Минимум: заголовок (краткий и описательный), шаги воспроизведения, ожидаемый и фактический результат, окружение (версия приложения, ОС, устройство, версия БД и т.д.), приоритет/серьёзность, артефакты (скриншоты, видео, логи).

Дополнительно полезно: ссылка на тестовые данные, ID запроса/трассы, точное время воспроизведения, частота (всегда/иногда).

Из практики: правило простое — баг-репорт должен позволять разработчику воспроизвести дефект без устных пояснений. Если устные пояснения нужны — баг-репорт неполный.

Частые ошибки

  • Писать заголовок «не работает» — никто не поймёт.
  • Прикреплять только скриншот без описания шагов.

Дополнительные вопросы

  • Как написать хороший заголовок баг-репорта?
  • Какие артефакты особенно полезны для мобильных багов?

Что такое Playwright и чем он отличается от Selenium?

Junior Инструменты автоматизации

Playwright — это фреймворк автоматизации браузера от Microsoft. Управляет Chromium, Firefox и WebKit через единое API. Тесты пишут на TypeScript/JavaScript, Python, Java или .NET.

Отличия от Selenium: встроенное авто-ожидание элементов, изоляция тестов через контексты, поддержка emulation мобильных устройств, перехват сети, скриншоты/видео/трассы без плагинов, более быстрый запуск.

Из практики: на новых проектах для веб-автотестов чаще выбирают Playwright — он стабильнее и удобнее. Selenium остаётся в энтерпрайз-проектах с историей и где нужна совместимость со старым WebDriver-сервером.

Частые ошибки

  • Полагаться, что Playwright заменит всю инфраструктуру Selenium-стенда сразу — миграция требует времени.
  • Думать, что Playwright тестирует «реальный» браузер пользователя — это движки, но загруженные в управляемом режиме.

Дополнительные вопросы

  • Почему Playwright стабильнее Selenium в плане flaky-тестов?
  • Какие языки официально поддерживает Playwright?

Какие способы поиска элементов есть в Playwright и какой предпочтительный?

Junior Инструменты автоматизации

page.locator() — основной способ. Внутри можно использовать CSS, XPath, тексты, role. Также есть удобные ярлыки: getByRole, getByText, getByLabel, getByPlaceholder, getByTestId.

Официальная рекомендация: getByRole и getByText. Они отражают то, как пользователь видит интерфейс, и устойчивы к изменениям разметки. getByTestId — компромисс, когда роли недостаточны.

Из практики: если разработчики аккуратно расставляют data-testid, локаторы получаются стабильными и понятными. CSS и XPath остаются для редких случаев, где роль не подходит.

Частые ошибки

  • Жёсткие CSS-цепочки .container > div:nth-child(3) — ломаются при изменении вёрстки.
  • Полагаться на текст без учёта локализации.

Дополнительные вопросы

  • Чем locator отличается от $/$$ из старого API?
  • Что такое strict mode у Locator?

Как проверить установку, обновление, удаление приложения и миграцию данных?

Junior Мобильное тестирование

Сценарии установки: чистая установка, установка при нехватке места, обновление через Store с сохранением данных, даунгрейд на предыдущую версию.

Миграция данных: сохранность пользовательских настроек и локального кэша при обновлении, совместимость форматов внутренней БД приложения между версиями.

Из практики: самый частый дефект при обновлении — потеря данных при миграции внутренней БД. Проверяю обновление с минимально поддерживаемой версии, а не только с предыдущей.

Частые ошибки

  • Нет проверки миграций.
  • Пропускают кейсы с ограниченными правами.

Дополнительные вопросы

  • Как протестируете миграцию схемы БД?
  • Поведение при запрете разрешения?

Что такое Appium и для каких задач его используют?

Junior Мобильное тестирование

Appium — это фреймворк для автоматизации мобильных, веб- и гибридных приложений на iOS и Android по протоколу WebDriver. Он реализует тот же интерфейс, что и Selenium, поэтому опыт UI-автоматизации легко переносится.

Под капотом Appium общается с системными драйверами: на Android это UiAutomator2 (или Espresso), на iOS — XCUITest. На сервере Appium собирает команды и проксирует их.

Из практики: один и тот же тест-код можно прогнать против Android и iOS, поменяв только capabilities. Это снижает порог входа для команд, которые уже знают Selenium.

Частые ошибки

  • Считать, что любой Selenium-локатор сработает в Appium — у мобильных есть свои стратегии (accessibility id, predicate).
  • Запускать Appium без понимания, что нужен установленный SDK Android и/или Xcode.

Дополнительные вопросы

  • Чем UiAutomator2 отличается от Espresso?
  • Что такое Appium Inspector?

Что такое capabilities в Appium и какие из них обязательны?

Junior Мобильное тестирование

Capabilities — это набор параметров, который клиент передаёт серверу при создании сессии. Они описывают, на каком устройстве и приложении тестировать.

Обязательные обычно: platformName (Android/iOS), automationName (UiAutomator2, XCUITest), deviceName, и либо app (путь к APK/IPA), либо bundle/package + activity для уже установленного приложения.

Из практики: capabilities передают через JSON или билдер. На реальных устройствах добавляют udid; на эмуляторах — platformVersion и avd. В команде их часто выносят в фабрику окружений.

Частые ошибки

  • Указывать app и одновременно appPackage — поведение неоднозначное.
  • Забыть udid и подключиться не к тому устройству, когда их несколько.

Дополнительные вопросы

  • Чем noReset отличается от fullReset?
  • Как настроить capabilities для запуска браузера на устройстве?

Чем тестирование мобильных приложений отличается от веба?

Junior Мобильное тестирование

Главные отличия: огромная фрагментация устройств и версий ОС, особенности интерфейса (тачи, жесты, разные экраны), особые сценарии (звонки, разряд батареи, потеря сети), магазины (Google Play, App Store) с их правилами, требования к производительности и батарее.

Также мобильное приложение работает в условиях, когда система может его выгрузить из памяти, переключить в фон, отозвать разрешения. Тесты учитывают это.

Из практики: помимо UI и API, в чек-листы добавляют сценарии перехода в фон, прерываний (входящий звонок, push, выключение экрана), работы в офлайн, разных уровней яркости/доступности.

Частые ошибки

  • Тестировать только золотую модель устройства и пропускать редкие модели.
  • Игнорировать жесты системы (свайп назад на iOS, кнопка назад на Android).

Дополнительные вопросы

  • Какие виды прерываний обязательны в тест-плане?
  • Чем тестирование под Android сложнее, чем под iOS?

Как проверить поведение приложения при потере сети?

Junior Мобильное тестирование

Включают авиарежим, отключают Wi-Fi, ослабляют сигнал (через эмулятор или сетевую утилиту), имитируют медленную сеть (Charles, Network Link Conditioner, эмулятор Android).

Проверяют: понятное сообщение пользователю, повтор запроса при возврате сети, корректное состояние UI (нет вечного спиннера), сохранение черновика данных.

Из практики: типовые баги — приложение «зависает» в загрузке, теряет введённые данные при попытке отправки, не повторяет автоматически и требует ручного действия. Тесты на офлайн — обязательная часть приёмки.

Частые ошибки

  • Считать, что если приложение упало — это редкий кейс. Сеть на телефоне отваливается постоянно.
  • Не проверять восстановление после возврата сети — баги бывают именно там.

Дополнительные вопросы

  • Чем эмуляция медленной сети полезнее простого отключения?
  • Какой кейс приоритетнее — нет сети при старте или потеря в середине сценария?

Что такое прерывания и как их тестировать?

Junior Мобильное тестирование

Прерывание — это любое событие, отвлекающее приложение: входящий звонок, push, будильник, низкий заряд, потеря сети, переход в фон по нажатию Home.

Тест-кейс: воспроизвести прерывание в ключевые моменты (оплата, ввод формы, загрузка) и проверить, что после возврата состояние корректно. Особое внимание — данным, которые не должны потеряться.

Из практики: для типового приложения проверяют как минимум: звонок при оплате, push в момент загрузки, переход в фон во время длительной операции, разрыв сети при отправке.

Частые ошибки

  • Тестировать прерывания только на главном экране — пропустить баг в редком переходе.
  • Считать, что прерывания всегда обрабатываются ОС — нет, приложение должно сохранять состояние явно.

Дополнительные вопросы

  • Чем фоновый режим отличается от убитого процесса?
  • Что такое state restoration?

Какая роль QA в Agile-команде?

Junior Процессы и методологии

Не «контролёр на выходе», а полноценный участник команды: уточняет требования, помогает в дизайне, пишет автотесты, участвует в код-ревью (с точки зрения тестируемости), консультирует команду.

Также QA отвечает за стратегию тестирования, ведёт качество как метрику, прокачивает практики автоматизации.

Из практики: в зрелых командах QA не «принимают» работу разработчиков, а вместе строят процесс, при котором баги ловятся как можно раньше — на ревью, в pre-commit hooks, на CI.

Частые ошибки

  • Делить мир на «они делают, мы проверяем» — теряется командность.
  • Не участвовать в техническом обсуждении.

Дополнительные вопросы

  • Что такое quality champion?
  • Чем QA отличается от QC?

Какие методологии разработки знаешь?

Junior Процессы и методологии

Waterfall — последовательные этапы, каждый завершён до следующего. V-model — Waterfall с явной привязкой тестирования к этапам анализа/дизайна. RUP — итеративная с фазами Inception/Elaboration/Construction/Transition. Agile — итерации, эмпиризм, ценность; внутри — Scrum (фиксированные спринты), Kanban (поток без спринтов), XP (инженерные практики). SAFe/LeSS — масштабирование Agile на много команд.

Выбор зависит от: стабильности требований, размера, регулирования, культуры. Жёсткий фикс-скоуп с регулятором — Waterfall/V-model. Гибкость, обучение, продукт — Agile.

Из практики: «чистых» методологий мало. Большинство команд — гибрид: Scrum-ish с Kanban-элементами и собственными ритуалами.

Частые ошибки

  • Спорят, какая методология «лучше» — без контекста ответа нет.
  • Берут Scrum по канону и не адаптируют — получают «процесс ради процесса».

Дополнительные вопросы

  • Что такое RUP и где его применяют?
  • Чем SAFe отличается от LeSS?

Какие мероприятия (события) в Scrum?

Junior Процессы и методологии

Sprint Planning — планирование спринта. Daily Scrum — ежедневный 15-минутный синк. Sprint Review — демо результатов стейкхолдерам в конце спринта. Sprint Retrospective — ретро команды для улучшения процесса. Backlog Refinement — регулярное уточнение и оценка задач (не обязательная по гайду, но почти всегда есть).

Сам спринт — тоже событие (контейнер для остальных). Длина обычно 1–4 недели, фиксированная.

Из практики: ретро — самое ценное событие. Команды, которые ретро отменяют, перестают улучшаться.

Частые ошибки

  • Пропускают ретро «потому что некогда» — копят проблемы.
  • Делают daily как отчёт менеджеру, а не как синк команды.

Дополнительные вопросы

  • Зачем нужен timebox в каждом событии?
  • Кто фасилитирует Sprint Review?

Какие роли в Scrum?

Junior Процессы и методологии

Product Owner — отвечает за максимизацию ценности продукта, владеет backlog, расставляет приоритеты. Scrum Master — отвечает за процесс и устранение препятствий, не менеджер команды. Developers (команда разработки) — кросс-функциональная команда, делает инкремент. По гайду — это всё.

Аналитик и BA в Scrum формально — часть Developers (или работают «рядом», помогая PO). В Scrum нет роли «аналитик» — это часть командной экспертизы.

Из практики: часто PO перегружен и берёт BA как «делегата по требованиям». Это работает, если границы ответственности понятны.

Частые ошибки

  • PO превращается в «диспетчера задач» и теряет фокус на ценности.
  • Scrum Master становится «руководителем команды».

Дополнительные вопросы

  • Чем PO отличается от Product Manager?
  • Кому подчиняется Scrum Master?

Что такое Kanban и его основные принципы?

Junior Процессы и методологии

Kanban — метод управления потоком задач без фиксированных итераций. Принципы: визуализация (доска с колонками), WIP-лимиты (макс. задач в одной колонке), управление потоком (минимизация ожидания), явные правила, регулярная улучшающая обратная связь.

Работает «pull» — следующая задача берётся, когда есть ёмкость, а не «push» (всё на исполнителей).

Из практики: Kanban отлично подходит для поддержки, инфраструктурных команд, и продуктовых, где приоритеты часто меняются. WIP-лимиты — ключевая практика.

Частые ошибки

  • Делают Kanban-доску без WIP-лимитов — это просто «доска с задачами».
  • Не измеряют lead time / cycle time — теряют преимущество метода.

Дополнительные вопросы

  • Что такое WIP-лимит и зачем он нужен?
  • Что такое cumulative flow diagram?

Что такое артефакт работы аналитика? Какие артефакты ты создаёшь?

Junior Системный анализ

Артефакт — любой документ или модель, который остаётся как результат работы и используется другими ролями: BRD, SRS, user stories с AC, BPMN-диаграммы, Sequence, ERD, контракты API (OpenAPI), глоссарий, decision log.

Какие именно — зависит от методологии и проекта. В Agile-команде продукта чаще всего: user stories с AC, sequence-диаграммы интеграций, OpenAPI, краткие тех. спецификации. В госпроекте — полный комплект по ГОСТ.

Из практики: артефакт без потребителя — мусор. Перед тем как заводить новый документ, спрашиваю, кто и зачем будет его читать.

Частые ошибки

  • Делают артефакты ради процесса, а не ради потребителя.
  • Не версионируют и не следят за актуальностью.

Дополнительные вопросы

  • Какой инструмент используешь для хранения (Confluence, Notion, Git)?
  • Что делать с устаревшими артефактами?

Какие нотации моделирования ты знаешь и для чего применяешь каждую?

Junior Системный анализ

BPMN — бизнес-процессы. UML — модели ПО (структура, поведение, взаимодействие). ER/IDEF1X — модели данных. DFD — потоки данных. C4 — архитектура. ArchiMate — корпоративная архитектура.

Выбор нотации зависит от аудитории. BPMN читает бизнес, UML Sequence — разработчики, C4 — архитекторы и менеджеры. Нет «самой правильной» нотации.

Из практики: на одном проекте редко обходится одной нотацией. AS-IS процесса — BPMN, интеграция — Sequence, данные — ERD.

Частые ошибки

  • Используют UML Activity для бизнес-процесса там, где нужен BPMN — теряют swimlanes.
  • Смешивают нотации внутри одной диаграммы.

Дополнительные вопросы

  • Какие инструменты используешь для рисования (draw.io, Visio, Enterprise Architect)?
  • Как выбираешь нотацию для конкретной задачи?

Какие основные элементы BPMN? Назови категории.

Junior Системный анализ

Категории элементов: Flow Objects (события, активности, шлюзы), Connecting Objects (поток управления, поток сообщений, ассоциации), Swimlanes (Pool, Lane), Artifacts (data object, group, аннотация).

Минимально достаточный набор для 80% диаграмм: Start/End event, Task, Gateway (XOR/AND), Sequence Flow, Lane. Этого хватает, чтобы описать большинство бизнес-процессов читаемо.

Из практики: чем больше уникальных типов значков на диаграмме, тем меньше людей её поймут. Лучше повторно использовать базовые.

Частые ошибки

  • Тащат на диаграмму все 100+ значков BPMN — бизнес перестаёт понимать.
  • Смешивают sequence flow и message flow.

Дополнительные вопросы

  • Какая разница между sequence flow и message flow?
  • Что такое подпроцесс (Sub-Process)?

В чём разница между Pool и Lane в BPMN?

Junior Системный анализ

Pool — отдельный участник процесса (организация, система, внешний сервис). Pool'ы общаются только через message flow, не sequence flow.

Lane — подразделение внутри Pool: отдел, роль, система-компонент. Внутри Pool связи идут sequence flow.

Из практики: правило «один Pool — один процесс». Если у вас 5 Pool'ов с равноправными процессами, скорее всего нужно разделить на 5 диаграмм с явной интеграцией.

Частые ошибки

  • Соединяют разные Pool'ы sequence flow вместо message flow.
  • Делают Pool вместо Lane для отдела внутри одной организации.

Дополнительные вопросы

  • Можно ли пересекать Lane линиями потока?
  • Что такое Black-Box Pool?

Какие виды диаграмм есть в UML? На какие категории они делятся?

Junior Системный анализ

Две категории: структурные (Class, Object, Component, Composite Structure, Package, Deployment, Profile) и поведенческие (Use Case, Activity, State Machine, Sequence, Communication, Timing, Interaction Overview).

Самые ходовые: Class (модель домена), Sequence (взаимодействие во времени), State Machine (поведение объекта), Use Case (функциональные требования верхнего уровня), Activity (процесс/алгоритм).

Из практики: в Agile-проектах UML используют выборочно — обычно Sequence для интеграций и Class для домена. Полный набор UML — это редкая практика крупных регулируемых проектов.

Частые ошибки

  • Учат «всю UML» и не используют её на практике.
  • Путают Class Diagram с ER-моделью.

Дополнительные вопросы

  • Чем Communication отличается от Sequence?
  • Когда полезна Deployment Diagram?

Что такое Use Case-диаграмма? Назови её элементы.

Junior Системный анализ

Use Case Diagram — диаграмма поведения, показывающая, какие сценарии система выполняет для разных типов пользователей. Высокоуровневый взгляд на функциональность.

Элементы: акторы (человек/система/таймер), use cases (овалы), системные границы (прямоугольник), отношения (association, include, extend, generalization).

Из практики: ценность не в самой диаграмме, а в обсуждении при её создании. После согласования use cases раскрываются в текстовые спецификации или user stories.

Частые ошибки

  • Рисуют сценарии вместо вариантов использования (use case ≠ один клик).
  • Делают use case на каждую кнопку — теряют верхний уровень.

Дополнительные вопросы

  • Чем актор отличается от пользователя?
  • Как часто пересматриваешь use case-диаграмму?

Что такое тестирование и какова его цель?

Junior Теория тестирования

Тестирование — это проверка продукта, чтобы понять, насколько он соответствует ожиданиям и требованиям.

Главная цель — снизить риски релиза и дать команде прозрачную картину качества.

Из практики: хороший результат тестирования — это не только найденные дефекты, но и понятные решения по выпуску.

Частые ошибки

  • Сводят тестирование к поиску багов вместо управления рисками.
  • Нет явной цели теста.

Дополнительные вопросы

  • Какие риски вы уменьшаете текущим набором тестов?
  • Как измеряете уверенность перед релизом?

В чём разница между QA, QC и тестированием?

Junior Теория тестирования

QA — это система процессов, которая предотвращает дефекты заранее.

QC — контроль качества готового результата, а тестирование — один из основных инструментов QC.

Из практики: когда фокус только на тестах без QA-процессов, одни и те же проблемы повторяются в каждом релизе.

Частые ошибки

  • Смешивают роли и процессы.
  • Утверждают, что QA = тестирование.

Дополнительные вопросы

  • Приведите пример QA-активности, не связанной с тестами?
  • Какой артефакт относится к QC?

Когда начинать тестирование в SDLC и почему это важно?

Junior Теория тестирования

Тестирование стоит начинать с этапа требований: так риски и противоречия выявляются до разработки.

В V-модели это видно наглядно: каждому этапу разработки (требования, дизайн, код) параллельно сопоставлен уровень тестирования (приёмочное, интеграционное, модульное), а тест-дизайн стартует вместе с этим этапом.

Ранний старт экономит время и стоимость исправлений: баги не успевают «прорасти» в архитектуру и код.

Из практики: участие QA в груминге и дизайне задачи снижает число критичных сюрпризов перед релизом.

Частые ошибки

  • Ожидание готового билда для старта работы.
  • Нет участия в уточнении требований.

Дополнительные вопросы

  • Как вы участвуете в уточнении требований?
  • Какие артефакты нужны до билда?

Какие уровни тестирования вы используете и зачем?

Junior Теория тестирования

Модульный уровень проверяет отдельные функции и классы, интеграционный — взаимодействие компонентов.

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

Из практики: проблемы на стыках чаще ловятся на интеграционном уровне, даже если модульные тесты зелёные.

Частые ошибки

  • Путают интеграционное с системным.
  • Нет связки с рисками.

Дополнительные вопросы

  • Пример тестов на каждом уровне?
  • Как решаете, где тестировать?

Какие бывают виды тестирования?

Junior Теория тестирования

По цели чаще выделяют функциональные и нефункциональные проверки.

По уровню — модульные, интеграционные, системные и приёмочные.

Из практики: набор видов выбираю по рискам конкретного релиза, а не по шаблону.

Частые ошибки

  • Перемешивают разные классификации.
  • Упускают нефункциональные виды.

Дополнительные вопросы

  • Какие виды тестирования нужны для проверки нефункциональных требований?
  • Что такое альфа- и бета-тестирование?

В чём разница между верификацией и валидацией?

Junior Теория тестирования

Верификация отвечает на вопрос «правильно ли мы строим продукт по спецификации».

Валидация отвечает на вопрос «решает ли продукт реальную задачу пользователя».

Из практики: можно пройти верификацию и всё равно провалить валидацию, если неверно поняли пользовательскую потребность.

Частые ошибки

  • Смешивают понятия: напр., считают, что достаточно протестировать готовое ПО (валидация), пренебрегая ранними ревью требований и дизайна (верификация).
  • Или наоборот, полагаются только на документы и спеки (верификация), не проводя полноценного тестирования с точки зрения пользователя.

Дополнительные вопросы

  • Какие статические методы используют для верификации на этапе разработки?
  • Как валидация проводится на этапе приёмочного тестирования?

Какие существуют методы тестирования?

Junior Теория тестирования

Ключевые методы: чёрный, белый и серый ящик, а также исследовательское тестирование.

Обычно они комбинируются: бизнес-сценарии проверяем как «чёрный ящик», а технические риски — глубже через API, логи и данные.

Из практики: лучший результат даёт не один метод, а правильное сочетание под конкретный риск.

Частые ошибки

  • Считают, что тестировщики всегда работают только как «черный ящик» и не смотрят код.
  • Путают методы с уровнями: например, говорят «интеграционное тестирование – это белый ящик».

Дополнительные вопросы

  • Когда тестировщику полезно применять знания кода (элементы белого ящика)?
  • Какие метрики качества кода важны при использовании метода белого ящика?

Каковы принципы тестирования?

Junior Теория тестирования

Базовые принципы: тестирование показывает наличие дефектов, но не доказывает их отсутствие; полное тестирование недостижимо.

Нужно начинать рано, учитывать контекст продукта и регулярно обновлять набор проверок.

Из практики: если не пересматривать тесты под новые риски, они перестают находить реальные проблемы.

Частые ошибки

  • Знают формулировки, но не применяют их: напр., повторяют одни тесты (нарушая принцип про "пестицид"), или откладывают тесты на конец проекта (вопреки принципу раннего тестирования).
  • Считают принципы абстракцией и не ищут им подтверждение на практике.

Дополнительные вопросы

  • Как пример принципа "дефекты сконцентрированы" влияет на выбор областей для регрессионного тестирования?
  • Почему даже после прохождения всех тестов нельзя утверждать, что дефектов нет (какой принцип об этом говорит)?

Что такое «парадокс пестицида»?

Junior Теория тестирования

Парадокс пестицида — это ситуация, когда один и тот же набор тестов со временем теряет эффективность.

Команда проходит старые проверки, но новые дефекты остаются незамеченными.

Из практики: поэтому я регулярно обновляю тесты и добавляю свежие сценарии из продовых инцидентов.

Частые ошибки

  • Игнорируют этот эффект: длительное время используют неизменный набор тестов, теряя покрытие новых изменений.
  • Неправильно понимают метафору: полагают, что старые тесты вообще не нужны.

Дополнительные вопросы

  • Как поступить, если все тест-кейсы проходятся долгое время без единого сбоя?
  • Как автоматизация тестов связана с парадоксом пестицида?

Каковы этапы тестирования?

Junior Теория тестирования

Обычно этапы такие: анализ требований, планирование, дизайн проверок, выполнение, отчётность и ретроспектива.

На каждом этапе важна прозрачная коммуникация с командой, чтобы качество не превращалось в отдельный «остров».

Из практики: процесс работает только тогда, когда его реально используют в ежедневной работе, а не держат в документе.

Частые ошибки

  • Начинают тестирование без подготовки.
  • Не определяют критерии начала/завершения этапов, из-за чего, например, тестирование может начаться на сыром продукте или не заканчивается вовремя.

Дополнительные вопросы

  • Какие документы вы создаёте на стадии планирования тестирования?
  • Что включается в этап завершения тестирования (test closure)?

Чем SDLC отличается от STLC?

Junior Теория тестирования

SDLC (Software Development Life Cycle) — это цикл разработки продукта в целом: анализ требований, проектирование, разработка, тестирование, релиз, поддержка.

STLC (Software Testing Life Cycle) — подцикл тестирования: анализ требований к тестированию, планирование, дизайн тест-кейсов, настройка среды, выполнение, закрытие.

Из практики: STLC встраивается в SDLC. QA подключается с самых ранних фаз (анализ требований), а не только на этапе тестирования готового кода.

Частые ошибки

  • Считать, что QA начинается после кодирования.
  • Думать, что SDLC и STLC — независимы.

Дополнительные вопросы

  • Что такое shift-left testing?
  • На каких этапах SDLC QA приносит больше всего пользы?

Что такое верификация и валидация?

Junior Теория тестирования

Верификация — «делаем продукт правильно»: соответствует ли реализация спецификации. Это работа с фактом построения.

Валидация — «делаем правильный продукт»: решает ли продукт реальную потребность пользователя. Это работа с уместностью.

Из практики: можно верифицировать всё, но создать ненужный продукт. И можно сделать правильный продукт с ошибками. QA участвует в обеих активностях.

Частые ошибки

  • Считать тестирование = только верификация.
  • Игнорировать валидацию, делая «как написано в задаче».

Дополнительные вопросы

  • Кто чаще занимается валидацией?
  • Что такое product market fit?

Чем QA отличается от QC и тестировщика?

Junior Теория тестирования

QA (Quality Assurance) — это процессно-ориентированная активность: организовать так, чтобы качество встраивалось в процесс с самого начала. Шире, чем тестирование.

QC (Quality Control) — это проверка готового продукта на соответствие требованиям. По сути — тестирование.

Тестировщик — исполнитель тестов. На практике границы размыты, и часто все три слова используют как синонимы. Но важно понимать, что качество строится в процессе, а не «проверяется» в конце.

Частые ошибки

  • Считать QA = QC = тестировщик без понимания нюансов.
  • Сводить роль к выполнению тест-кейсов.

Дополнительные вопросы

  • Какой подход эффективнее: assurance или control?
  • Что такое quality engineering?

Какие уровни тестирования бывают (unit, integration, e2e)?

Junior Теория тестирования

Unit — тестирование отдельной функции/класса в изоляции. Быстро, точечно, дёшево. Integration — взаимодействие двух или более компонентов (например, сервис и БД). End-to-end — весь поток через систему, как у пользователя.

Пирамида тестирования: больше unit, меньше integration, ещё меньше e2e. E2E дорогие и нестабильные, поэтому их меньше всего.

Из практики: пирамида — ориентир. Реальное распределение зависит от проекта. Главное — не делать только e2e (как «мороженое») или только unit (без интеграционной проверки).

Частые ошибки

  • Полагаться только на e2e — медленно и хрупко.
  • Считать, что unit-тесты заменяют интеграцию.

Дополнительные вопросы

  • Что такое testing trophy?
  • Где здесь contract testing?

Что такое регрессионное тестирование?

Junior Теория тестирования

Регрессионное тестирование — это проверка, что ранее работавшая функциональность не сломалась после изменений в коде.

Применяют после рефакторинга, исправления багов, добавления фич, обновления зависимостей.

Из практики: полная регрессия — долго. Поэтому стараются автоматизировать критичные сценарии и запускать на каждом PR. Ручную регрессию используют для UX-критичных и редкоизменяемых областей.

Частые ошибки

  • Делать полную ручную регрессию каждый раз — слишком долго.
  • Не обновлять регрессионный набор — устаревает.

Дополнительные вопросы

  • Что такое smoke vs regression?
  • Как выбирать что входит в регрессионный набор?

Что такое smoke и sanity тесты?

Junior Теория тестирования

Smoke — это поверхностная проверка, что сборка вообще работает: запускается, основные экраны открываются, главные сценарии проходят. Обычно 5-15 минут.

Sanity — это короткая проверка после внесения изменений в одну область: затронуло ли это смежные функции, ничего не сломалось «по соседству». Уже точечная.

Из практики: на проде «дымит ли» проверяет smoke. Sanity нужен в момент быстрых правок — посмотреть, что не разнесло окрестности.

Частые ошибки

  • Путать smoke и sanity.
  • Полагаться на smoke вместо регрессии.

Дополнительные вопросы

  • Что такое build verification test?
  • Как автоматизировать smoke на проде?

Что такое functional и non-functional тестирование?

Junior Теория тестирования

Functional проверяет, что система делает то, что должна (правильно работают функции, формы, расчёты, переходы).

Non-functional — проверяет «как»: производительность, безопасность, удобство, надёжность, масштабируемость, доступность, совместимость.

Из практики: оба вида одинаково важны. Без функционального продукт не работает; без нефункционального — работает, но плохо (тормозит, небезопасно, неудобно).

Частые ошибки

  • Фокусироваться только на функциональном.
  • Откладывать non-functional на «потом».

Дополнительные вопросы

  • Какие виды non-functional самые ходовые?
  • Чем UX-тестирование отличается от functional?

Что такое тестовая среда (test environment)?

Junior Теория тестирования

Тестовая среда — это окружение, в котором проводят тесты: набор серверов, БД, интеграций, конфигов, тестовых данных, в котором продукт ведёт себя «как на проде, но безопасно».

Типовая иерархия: dev (для разработчиков), test/staging (для QA), pre-prod (приближено к проду), prod (живые пользователи). Между ними отличия — конфиги, данные, обновления.

Из практики: чем ближе test-среда к prod, тем надёжнее результаты тестов. Большой разрыв — типовая причина «у нас работало».

Частые ошибки

  • Тестировать на dev и сдавать в prod — большой разрыв.
  • Не следить, чтобы среды были изолированы.

Дополнительные вопросы

  • Чем dev отличается от staging?
  • Как готовить тестовую среду к крупному релизу?

Из каких этапов состоит SDLC?

Junior Теория тестирования

Классические этапы: 1) инициация (идея, цели, ROI); 2) анализ требований; 3) проектирование (архитектура, UX, БД); 4) разработка; 5) тестирование; 6) внедрение (deploy, обучение, миграция); 7) сопровождение и эксплуатация.

В Agile эти этапы не последовательны, а итеративны: каждый спринт включает мини-цикл анализ-дизайн-разработка-тест. Но сами стадии не исчезают.

Из практики: SDLC — не «методология», а скелет процесса. Waterfall и Agile — это разные способы пройти его.

Частые ошибки

  • Считают, что в Agile «нет анализа и дизайна» — они просто распределены по итерациям.
  • Игнорируют этап эксплуатации — продукт умирает через год без поддержки.

Дополнительные вопросы

  • Чем V-модель отличается от Waterfall?
  • Кто отвечает за каждый этап?

В чём разница между тест-кейсом, чек-листом и тест-сценарием?

Junior Тест-дизайн

Чек-лист — быстрый список проверок без детальных шагов.

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

Из практики: для ежедневной регрессии чаще беру чек-листы, для критичных флоу — кейсы и сценарии.

Частые ошибки

  • Избыточная детализация там, где нужен чек-лист.
  • Нет связи с требованиями.

Дополнительные вопросы

  • Когда выбрать чек-лист вместо кейсов?
  • Как вести трассируемость?

Когда в проекте эффективнее чек-лист, а когда полноценный тест-кейс?

Junior Тест-дизайн

Тест-кейс детализирован и хорошо подходит для стабильной регрессии и передачи знаний.

Чек-лист быстрее в поддержке и удобен там, где команда опытная и сценарии понятные.

Из практики: часто использую гибрид — критичные зоны оформляю кейсами, остальное закрываю чек-листом.

Частые ошибки

  • Пишут слишком детальные тест-кейсы даже для простых проверок, где хватило бы чек-листа, тратя лишнее время на поддержку сценариев.
  • Или наоборот, используют чек-листы там, где нужно детальное описание (например, в сложных расчетах), рискуя разными трактовками теста разными людьми.

Дополнительные вопросы

  • Когда предпочтительнее использовать чек-лист вместо полного тест-кейса?
  • Что такое тестовый сценарий и где он стоит между кейсом и чек-листом?

Как применять эквивалентные классы и граничные значения на практике?

Junior Тест-дизайн

Эквивалентные классы помогают не проверять все значения подряд: делим входные данные на группы, которые должны вести себя одинаково.

Граничные значения нужны, потому что ошибки чаще всего живут на границах диапазона: минимум, максимум и соседние значения.

Из практики: для поля возраста 18–65 я проверяю 17, 18, 19, 64, 65, 66 — этого обычно достаточно, чтобы быстро поймать дефект в валидации.

Частые ошибки

  • Выбирают случайные значения.
  • Игнорируют закрытые/открытые интервалы.

Дополнительные вопросы

  • Примените к полю 'возраст 18–65'?
  • Что тестируете для пустых значений?