Ключевые вопросы со всех тем, которые чаще всего встречаются на технических собеседованиях
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'?
- Что тестируете для пустых значений?