← Теория

📎 Доп. материалы Из шпаргалки

Темы из твоей шпаргалки, которых не было в основных блоках

🎯 1. Тест-дизайн — техники

Specification-based (чёрный ящик)

ТехникаЧто делаетПример
Классы эквивалентностиДелим входные данные на группы. Проверяем по 1 значению из каждойВозраст 0-17, 18-65, 66+ → тестим 10, 30, 80
Граничные значенияПроверяем на границах классовВозраст 18: проверяем 17, 18, 19
Таблицы решенийВсе комбинации условий → да/нетСкидка: VIP + >1000₽ + промокод → какие комбинации?
Переход состоянийДиаграмма: из какого состояния в какое можно перейтиЗаказ: Created → Paid → Shipped → Delivered
Use-case тестированиеПроверяем сценарии использованияПользователь логинится → ищет товар → кладёт в корзину → оплачивает

Structure-based (белый ящик)

ТехникаЧто делает
Statement coverageКаждая строка кода выполнена хотя бы 1 раз
Branch coverageКаждая ветка (if/else) выполнена — и «да», и «нет»

Experience-based

ТехникаЧто делает
Ad-hocСлучайное тестирование без плана (monkey testing)
Error guessingУгадывание ошибок на основе опыта
ExploratoryОдновременно изучаешь продукт, проектируешь и выполняешь тесты
На собе: "Основные техники: классы эквивалентности (группируем данные), граничные значения (проверяем на границах), таблицы решений (все комбинации условий). В реальной работе комбинирую."

🔺 2. Severity vs Priority

Severity (Серьёзность)Priority (Приоритет)
Что означаетНасколько баг влияет на работу продуктаВ каком порядке разработчик должен фиксить
Кто определяетQAМенеджер / Product Owner
УровниBlocker, Critical, Major, Minor, TrivialHigh, Medium, Low

Severity — уровни

УровеньЧто значитПример
BlockerБлокирует работу, прод не работаетПриложение не запускается
CriticalКраш, потеря данныхОплата не проходит, деньги списались
MajorЗначительная функция не работаетНе добавляется товар в корзину
MinorМелкая функция, есть обходной путьПодсказка не показывается
TrivialКосметическая проблемаОпечатка, текст смещён

Может ли быть High Severity + Low Priority?

✅ Да! Например: опечатка в названии компании на экране «О программе». Severity = Trivial, но для бренда → Priority = High.

И наоборот: мелкий баг, но влияет на 80% пользователей → Priority High, Severity Minor.

На собе: "Severity — насколько баг влияет на продукт (определяет QA). Priority — в каком порядке фиксить (определяет PO). Могут не совпадать: мелкий визуальный баг для всех → Priority High."

🔐 3. CIA Triad — безопасность

БукваПринципЧто значитПример
CConfidentiality (Конфиденциальность)Данные видны только тем, кому положеноПароль не виден другим
IIntegrity (Целостность)Данные не были изменены без разрешенияСумма заказа не поменялась
AAvailability (Доступность)Ресурс доступен авторизованным пользователямСайт не лежит
На собе: "CIA — три принципа безопасности: Confidentiality (данные видны только своим), Integrity (данные не изменены), Availability (ресурс доступен)."

🕷 4. OWASP Top уязвимостей

#УязвимостьЧто значитКак тестировать
1InjectionВставка вредоносного кода в запросВвести `' OR 1=1` в поле логина
2Broken Access ControlОбход авторизации, доступ к чужим даннымЗайти в чужой профиль без логина
3Cryptographic FailuresСлабое шифрование, утечки данныхПароль передаётся в открытом виде
4Security MisconfigurationДефолтные пароли, открытые портыadmin/admin работает на проде
5Security Logging FailuresНет логов и алертов → атаки незаметны100 неудачных логинов — нет блокировки

SQL Injection — пример

Поле логина: ' OR 1=1 --

Запрос к БД:
SELECT * FROM users
WHERE login = '' OR 1=1 --' AND password = '...'

-- 1=1 всегда true → логин без пароля!
На собе: "OWASP — топ уязвимостей. Самые важные: Injection (вредоносный код в запрос), Broken Access Control (обход авторизации). Проверяю: специальные символы в полях, доступ к чужим данным."

📋 5. STLC — жизненный цикл тестирования

STLC (Software Testing Life Cycle) — 6 фаз:

#ФазаЧто делаем
1Requirements AnalysisАнализируем требования, выясняем что тестировать
2Test PlanningПланируем: что, как, когда, кто тестирует
3Test Case DevelopmentПишем тест-кейсы и чек-листы
4Environment SetupНастраиваем тестовое окружение (стенд, данные)
5Test ExecutionВыполняем тесты, заводим баги
6Test Cycle ClosureОтчёт, ретроспектива, архiving
На собе: "STLC — 6 фаз: анализ требований → планирование → написание тест-кейсов → настройка окружения → выполнение → завершение (отчёт)."

⚡ 6. Виды нагрузочного тестирования

ТипЧто проверяетПример
LoadКак система ведёт себя при ожидаемой нагрузке1000 пользователей одновременно
StressГде предел системы (точка отказа)Увеличиваем до падения
SpikeРезкий скачок нагрузкиЧёрная пятница: 10x за минуту
RecoveryВосстановление после паденияСервер упал → как быстро вернулся?
VolumeРабота с большим объёмом данныхБД на 10 млн записей
ScalabilityМасштабируется ли при добавлении ресурсов2 сервера → 4 → 8, производительность растёт?
StabilityДлительная работа без утечек памяти24 часа под нагрузкой
На собе: "Load — ожидаемая нагрузка, Stress — поиск предела, Spike — резкий скачок (Чёрная пятница), Recovery — восстановление после сбоя."

📐 7. INVEST — критерии хорошей User Story

БукваКритерийЧто значит
IIndependentНезависима от других историй
NNegotiableМожно обсуждать и менять
VValuableПриносит ценность пользователю
EEstimableМожно оценить по трудозатратам
SSmallДостаточно мала для одного спринта
TTestableМожно протестировать (критерии приёмки)
На собе: "INVEST — критерии хорошей User Story: Independent, Negotiable, Valuable, Estimable, Small, Testable."

✅ 8. Требования к требованиям (6 критериев)

#КритерийЧто значитНарушение
1КорректностьТребование технически верное"Скорость загрузки 0мс" (невозможно)
2НедвусмысленностьОдно толкование"Быстрая загрузка" (что значит быстрая?)
3ПолнотаВсе случаи описаныНе указано что делать при ошибке
4НепротиворечивостьНе противоречит другим требованиям"Обязательное поле" но "может быть пустым"
5ТестируемостьМожно проверить"Система должна быть удобной" (как проверить?)
6ПонимаемостьПонятно всем участникамТекст с кучей терминов
На собе: "Требования должны быть: корректные, недвусмысленные, полные, непротиворечивые, тестируемые, понятные."

🔄 9. Agile / Scrum / Kanban

Agile Manifesto — 4 ценности

  1. Люди и взаимодействие > процессы и инструменты
  2. Работающий продукт > исчерпывающая документация
  3. Сотрудничество с заказчиком
    > переговоры по контракту
  4. Готовность к изменениям > следование плану

Scrum — роли

РольЧто делает
Product OwnerЗнает продукт, приоритизирует backlog
Scrum MasterСоздаёт условия для команды, убирает препятствия
TeamСамоорганизованная команда 7-10 человек

Scrum — события

СобытиеЧто происходит
Sprint PlanningПланируем что делаем в спринте (2-4 недели)
Daily MeetingЕжедневная встреча: что сделал, что буду, блокеры
DemoПоказываем результат за спринт
RetrospectiveОбсуждаем: что хорошо, что улучшить

Kanban vs Scrum

ScrumKanban
СпринтыФиксированные (2-4 недели)Нет спринтов, непрерывный поток
ДоскаОбнуляется каждый спринтПостоянная
Лимит задачОпределяется на планированииWIP limit (максимум в работе)
На собе: "Работаю по Scrum: спринты 2 недели, daily, demo, retro. Kanban — непрерывный поток с WIP лимитом."

🔑 10. Hash — что это

Hash (хэш) — алгоритм, который преобразует любые данные в строку фиксированной длины (буквы + цифры).

Свойства

Применение

На собе: "Hash — преобразование данных в строку фиксированной длины. Необратимый. Используется для хранения паролей, проверки целостности данных."

🗂 11. Stored Procedures (хранимые процедуры)

Stored Procedure — сохранённый SQL-код, который можно вызывать многократно.

-- Создать процедуру
CREATE PROCEDURE GetUsersByCity
AS SELECT * FROM users WHERE city = 'Moscow'
GO

-- Вызвать
EXEC GetUsersByCity

Зачем

На собе: "Stored Procedure — сохранённый SQL-код для переиспользования. Безопаснее и быстрее, чем писать запрос каждый раз."

💬 Вопросы для самопроверки