profession

level

2

QA engineer

A QA engineer checks that the product does what it promised: test cases, autotests, bugs and the release call.

monthly pay

junior 80 000 ₽ · mid 170 000 ₽ · senior 280 000 ₽

The job is to catch the break before a customer does.

20 blocks · 160 lessons

A profession cannot start free. It opens together with Python. Every course · 3899 ₽ / month

progress

0%

block 1

Профессия QA engineer

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

course
  1. 1Чем занимается тестировщик2099 ₽
  2. 2Требование и ожидаемый результат2099 ₽
  3. 3Фактический результат2099 ₽
  4. 4Вердикт2099 ₽
  5. 5Баг2099 ₽
  6. 6Ручное и автоматическое тестирование2099 ₽
  7. 7Тест как маленькая программа2099 ₽
  8. 8Набор проверок2099 ₽
  9. Проверка блока2099 ₽

block 2

Расчёты и границы

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

course
  1. 1Цена со скидкой2099 ₽
  2. 2Доставка и итог заказа2099 ₽
  3. 3Ошибки округления2099 ₽
  4. 4Деньги в копейках2099 ₽
  5. 5Граничные значения2099 ₽
  6. 6Ошибка на единицу2099 ₽
  7. 7Деление нацело и остаток2099 ₽
  8. 8Сравнение с допуском2099 ₽
  9. Проверка блока2099 ₽

block 3

Проверка текстов

Точное сравнение текстов интерфейса, лишние пробелы и strip, регистр и lower, длина поля и её границы, формат email и телефона через count, find и replace, понятное сообщение об ошибке в f-строке и маскировка личных данных.

course
  1. 1Тексты интерфейса2099 ₽
  2. 2Лишние пробелы2099 ₽
  3. 3Регистр букв2099 ₽
  4. 4Длина поля2099 ₽
  5. 5Формат email2099 ₽
  6. 6Формат телефона2099 ₽
  7. 7Сообщение об ошибке2099 ₽
  8. 8Маскировка данных2099 ₽
  9. Проверка блока2099 ₽

block 4

Тест-кейсы и классы

Тест-кейс с ожиданием и вердиктом PASS/FAIL через if/else, классы эквивалентности и границы между ними, проверка ветвлений возраста и пароля, and, or и not в правилах валидации, негативные тесты, серьёзность и приоритет бага.

course
  1. 1Тест-кейс2099 ₽
  2. 2Классы эквивалентности2099 ₽
  3. 3Граница между классами2099 ₽
  4. 4Проверка возраста2099 ₽
  5. 5Пароль: все правила сразу2099 ₽
  6. 6Хотя бы одно условие: or и not2099 ₽
  7. 7Негативные тесты2099 ₽
  8. 8Серьёзность и приоритет2099 ₽
  9. Проверка блока2099 ₽

block 5

Повторы и стабильность

Повтор нестабильного теста до лимита попыток, flaky или настоящий баг, ожидание элемента с опросом каждые 500 мс и таймаутом, остановка на первом падении через break, пропуск тестов через continue, регрессионный прогон и статистика стабильности.

course
  1. 1Нестабильный тест2099 ₽
  2. 2Flaky или настоящий баг2099 ₽
  3. 3Ожидание элемента2099 ₽
  4. 4Таймаут ожидания2099 ₽
  5. 5Первое падение2099 ₽
  6. 6Пропущенные тесты2099 ₽
  7. 7Регрессионный прогон2099 ₽
  8. 8Статистика стабильности2099 ₽
  9. Проверка блока2099 ₽

block 6

Прогон набора

Прогон таблицы тест-кейсов по индексам, подсчёт PASS и FAIL, доля прошедших, граничные значения через range, время прогона, самый долгий тест и остановка на первом падении.

course
  1. 1Набор кейсов как таблица2099 ₽
  2. 2Счётчики PASS и FAIL2099 ₽
  3. 3Доля прошедших и решение о релизе2099 ₽
  4. 4Граничные значения через range2099 ₽
  5. 5Две границы диапазона2099 ₽
  6. 6Сколько длился прогон2099 ₽
  7. 7Самый долгий тест2099 ₽
  8. 8Стоп на первом падении2099 ₽
  9. Проверка блока2099 ₽

block 7

Отчёт о прогоне

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

course
  1. 1Собрать упавшие тесты2099 ₽
  2. 2Итоговая строка отчёта2099 ₽
  3. 3Сортировка длительностей2099 ₽
  4. 4Имена медленных тестов2099 ₽
  5. 5Убрать пропущенные2099 ₽
  6. 6Очередь перезапуска2099 ₽
  7. 7Новые падения2099 ₽
  8. 8Порядок запуска2099 ₽
  9. Проверка блока2099 ₽

block 8

Ожидание и факт

Сравнение ожидания и факта через zip, номера расхождений через enumerate, решения all и any, сверка списков товаров, проверка сортировки выдачи, сравнение версий ответа и сравнение чисел с допуском.

course
  1. 1Пары ожидание–факт: zip2099 ₽
  2. 2Номера расхождений: enumerate2099 ₽
  3. 3Все прошли: all2099 ₽
  4. 4Есть критичные: any2099 ₽
  5. 5Сверка списка товаров2099 ₽
  6. 6Отсортирована ли выдача2099 ₽
  7. 7Сравнение версий ответа2099 ₽
  8. 8Сравнение чисел с допуском2099 ₽
  9. Проверка блока2099 ₽

block 9

Тесты функциями

Тестируемая функция с багом, эталонная реализация, функция-проверка check, параметризованные тесты циклом по наборам, статус и сообщение из функции, валидация пароля, локализация бага по упавшим наборам и рефакторинг без изменения поведения.

course
  1. 1Функция под тестом2099 ₽
  2. 2Функция-проверка check2099 ₽
  3. 3Проверка возвращает результат2099 ₽
  4. 4Параметризованный тест2099 ₽
  5. 5Статус и сообщение2099 ₽
  6. 6Валидация пароля2099 ₽
  7. 7Где прячется баг2099 ₽
  8. 8Рефакторинг без изменения поведения2099 ₽
  9. Проверка блока2099 ₽

block 10

Логи прогона

Разбор строк лога прогона через split, итоги по логу, фильтры startswith и endswith, коды ответа и isdigit, сборка отчёта через join, разбор JUnit-итога, причина падения из сообщения и поиск флакующих тестов по двум логам.

course
  1. 1Строка лога на части2099 ₽
  2. 2Итоги по логу2099 ₽
  3. 3Фильтр по началу и концу строки2099 ₽
  4. 4Коды ответа и isdigit2099 ₽
  5. 5Отчёт через join2099 ₽
  6. 6Итог в стиле JUnit2099 ₽
  7. 7Причина падения2099 ₽
  8. 8Флакующие тесты по двум логам2099 ₽
  9. Проверка блока2099 ₽

block 11

Тест-кейсы и ответы API

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

course
  1. 1Тест-кейс словарём2099 ₽
  2. 2Баг-репорт2099 ₽
  3. 3Статус-код ответа2099 ₽
  4. 4Обязательные поля2099 ₽
  5. 5Типы значений2099 ₽
  6. 6Значения по умолчанию2099 ₽
  7. 7Сводка прогона2099 ₽
  8. 8Матрица окружений2099 ₽
  9. Проверка блока2099 ₽

block 12

Покрытие

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

course
  1. 1Покрытые требования2099 ₽
  2. 2Непокрытые требования2099 ₽
  3. 3Смоук внутри регресса2099 ₽
  4. 4Уникальные падения и флаки2099 ₽
  5. 5Окружения кортежами2099 ₽
  6. 6Попарное покрытие2099 ₽
  7. 7Дубли тест-кейсов2099 ₽
  8. 8Выбор тестов для регресса2099 ₽
  9. Проверка блока2099 ₽

block 13

Негативные тесты

Негативные проверки через try/except: ValueError на плохих данных, тест «ожидаем исключение», проверка текста ошибки, неверный тип исключения, очистка в finally, failed против broken и граничные значения.

course
  1. 1Негативный тест2099 ₽
  2. 2Валидация с raise2099 ₽
  3. 3Тест ожидает исключение2099 ₽
  4. 4Проверка текста ошибки2099 ₽
  5. 5Не то исключение2099 ₽
  6. 6Очистка в finally2099 ₽
  7. 7Failed или broken2099 ₽
  8. 8Ошибка на границе2099 ₽
  9. Проверка блока2099 ₽

block 14

Баг-трекер

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

course
  1. 1Выгрузка из трекера2099 ₽
  2. 2Сортировка по серьёзности2099 ₽
  3. 3Очередь по приоритету2099 ₽
  4. 4Открытые критичные2099 ₽
  5. 5Переоткрытые баги2099 ₽
  6. 6Время жизни бага2099 ₽
  7. 7Проблемный модуль2099 ₽
  8. 8Триаж новых багов2099 ₽
  9. Проверка блока2099 ₽

block 15

Генерация тестовых данных

Модули для тестовых данных: random с seed и фаззинг валидатора, Counter результатов, граничные даты из datetime, json для фикстур и сравнения ответов, itertools.product для комбинаций и re для проверки формата email и телефона.

course
  1. 1Случайные входы с seed2099 ₽
  2. 2Фаззинг и Counter2099 ₽
  3. 329 февраля2099 ₽
  4. 4Конец месяца и смена года2099 ₽
  5. 5Фикстуры в JSON2099 ₽
  6. 6Сравнение JSON-ответов2099 ₽
  7. 7Комбинации: itertools.product2099 ₽
  8. 8Формат email и телефона2099 ₽
  9. Проверка блока2099 ₽

block 16

Тестовый фреймворк

Пишем свой мини-фреймворк классами: тесты как методы TestCase с check_equal, раннер, который сам находит и прогоняет тесты, setUp и tearDown, разница FAIL и ERROR, Page Object, заглушка платёжного шлюза, наследование тестовых классов и отчёт прогона.

course
  1. 1Тест как метод класса2099 ₽
  2. 2Раннер находит тесты сам2099 ₽
  3. 3setUp и tearDown2099 ₽
  4. 4Провал или ошибка2099 ₽
  5. 5Page Object2099 ₽
  6. 6Заглушка платёжного шлюза2099 ₽
  7. 7Наследование тестовых классов2099 ₽
  8. 8Отчёт раннера2099 ₽
  9. Проверка блока2099 ₽

block 17

Тестовые данные и отчёты

Выносим тестовые данные и результаты в файлы: data-driven тесты из CSV, фикстура пользователей в JSON, snapshot-тест и обновление эталона, отчёт прогона в JSON, журнал прогонов в режиме "a", поиск флакующих тестов по истории и текстовый отчёт.

course
  1. 1Кейсы из CSV2099 ₽
  2. 2Фикстура пользователей2099 ₽
  3. 3Snapshot-тест2099 ₽
  4. 4Обновление эталона2099 ₽
  5. 5Отчёт прогона в JSON2099 ₽
  6. 6Журнал прогонов2099 ₽
  7. 7Флакующие тесты2099 ₽
  8. 8Отчёт в текстовом файле2099 ₽
  9. Проверка блока2099 ₽

block 18

Автотесты API

Тестируем API без браузера: фейковый клиент классом, проверки статуса и схемы ответа, контрактные тесты, позитивные и негативные сценарии, smoke-набор, регрессия после фикса и критерии готовности релиза.

course
  1. 1Фейковый API-клиент2099 ₽
  2. 2Проверка статуса2099 ₽
  3. 3Схема ответа2099 ₽
  4. 4Контрактные тесты2099 ₽
  5. 5Позитивные и негативные сценарии2099 ₽
  6. 6Smoke-набор2099 ₽
  7. 7Регрессия после фикса2099 ₽
  8. 8Критерии готовности релиза2099 ₽
  9. Проверка блока2099 ₽

block 19

Проект: автотесты корзины

Покрываем автотестами корзину интернет-магазина: требования и позитивные тесты, граничные значения скидки, негативные тесты количества, удаление и округление, параметризованные тесты, баг-репорты и итоговый отчёт прогона.

course
  1. 1Требования и первые тесты2099 ₽
  2. 2Граничные значения скидки2099 ₽
  3. 3Негативные тесты количества2099 ₽
  4. 4Удаление отсутствующего товара2099 ₽
  5. 5Округление итога2099 ₽
  6. 6Параметризованные тесты2099 ₽
  7. 7Баг-репорты2099 ₽
  8. 8Итоговый отчёт прогона2099 ₽
  9. Проверка блока2099 ₽

block 20

Итоговый кейс: выпускать ли релиз

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

course
  1. 1Сводка регрессии2099 ₽
  2. 2Плотность дефектов2099 ₽
  3. 3Критичные блокеры2099 ₽
  4. 4Флакующие тесты по истории2099 ₽
  5. 5Покрытие требований2099 ₽
  6. 6Риск по модулям2099 ₽
  7. 7Решение go/no-go2099 ₽
  8. 8Отчёт для команды2099 ₽
  9. Проверка блока2099 ₽