Аудит MR по обновлению уязвимых зависимостей

Автор: Кухарь Иван (@i.kukhar) · Дата: 2026-09-10 ·

Всего 14 MR в статусе opened 11 из 14 готовы к мержу, 3 ждут апрув (science-around, text-tasks-video, english_ai). Мануальное тестирование рекомендовано для 5 MR: colors-game-api, logopedics-api, student-webinars-api, text-tasks-video-api (Ruby) и toy-logic-api (Node).

Ruby — 10 MR

Проект Апрувы Мануальное тестирование MR
among-us-api ✅ 1/1 !19
colors-game-api ✅ 2 ☑ Rails 8.0→8.1 (minor) + снятие пина concurrent-ruby !64
keyboard-master-api ✅ 1/1 !12
logopedics-api ✅ 1/1 ☑ excon 0.x→1.x (major, Kafka schema registry), json-пин против падения elastic-apm; локально rspec не гонялся !70
magical-math-2-api ✅ 1/1 !24
multiplication-trainer-api ✅ 1/1 !13
rpg-math-backend ✅ 1/1 !21
student-webinars-api ✅ 1 ☑ excon 0.x→1.x (kafka schema registry), rdoc 6→8 !50
text-tasks-video-api ✅ 1 ☑ non-conservative Rails-апдейт → ~28 транзитивных гемов (minitest 5→6, rdoc 6→8 и др.) !74
wizard-path-api ✅ 1/1 !83

Node / JS — 4 MR

Проект Апрувы Мануальное тестирование MR
science-around ❌ 0/1 !6
text-tasks-video ❌ 0/1 !210
english_ai ⚠️ 2 указаны, осталось 1 !197
toy-logic-api ✅ 0 требуются ☑ Nest 11.1→11.2, fastify, piscina 3→4 (cross-major, runtime Kafka/lz4), typeorm-extension/faker (prod seed) !88

Детальные чек-листы для ручного тестирования

Это чек-листы для ручного тестирования обновлений зависимостей. Мы обновляем библиотеки, на которых работает бэкенд, чтобы закрыть уязвимости; код самих продуктов при этом не меняется, новых фич нет. Цель проверки — убедиться, что привычные сценарии продолжают работать как раньше (регресс).

1. Улётная палитра — colors-game-api · MR !64

Что за продукт. Игра-раскраска с примерами (1–4 класс): решаешь примеры, спасаешь жителей и открываешь новые цвета. Первые 5 уровней бесплатны, 6-й и далее открываются по подписке. Есть кастомизация персонажа и кисти.

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

Где тестировать. Стейдж. Автотесты — TestIT 27075 / colors_game_autotests.

Подготовка. Аккаунт ученика без премиума (для проверки пейволла) и аккаунт с премиумом. Достаточно пройти уровни 1–6.

# Шаги Ожидаемый результат
1 Войти в игру Прогресс подгружается, ошибок нет
2 Пройти уровни 1–5 без премиума Уровни доступны и проходятся
3 Попробовать открыть 6-й уровень без премиума Показывается пейволл, уровень не открывается
4 Открыть 6-й уровень с премиумом Уровень открывается и проходится
5 Пройти уровень без ошибок, затем с ошибками Без ошибок — максимальные звёзды; с ошибками — меньше
6 Перепройти уже пройденный уровень Уровень переигрывается, результат обновляется
7 Открыть раздел кастомизации Видны доступные предметы (одежда, причёски, шляпы, стикеры)
8 Спасти жителей и снова открыть кастомизацию Открылись новые цвета
9 Применить премиум или потратить фичепоинт Пейволл пропадает, доступ открывается
10 Завершить уровень при нестабильной сети Прогресс и награды не теряются и не дублируются

Особое внимание. Звёзды и награды за уровень; граница «5 бесплатно / 6 по подписке»; сохранение кастомизации.

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

2. Логопедия — logopedics-api · MR !70

Что за продукт. Курс-логопедия 0–2: задания с микрофоном и без, гимнастика, распознавание речи. Прогресс считается по проценту правильно произнесённых слов (winrate). Уровень 1 бесплатный, уровни 2–3 — по подписке.

Почему ручной тест. Обновился сетевой клиент, который участвует в приёме событий премиума и в распознавании речи. Автотестов на реальный микрофон и распознавание нет, поэтому проверяем руками.

Где тестировать. Стейдж. Нужны устройства/браузер с микрофоном и без него.

Подготовка. Аккаунт без премиума и с премиумом. Проверить доступ к микрофону в браузере.

# Шаги Ожидаемый результат
1 Начать курс Показывается анимация тигрёнка, запрашивается доступ к микрофону
2 Разрешить микрофон Задания с озвучкой работают
3 Запретить микрофон / тестировать без него Включается демо-режим, такие задания не влияют на winrate
4 Пройти гимнастику 3 видео-упражнения, доступна раз в 24 часа, на winrate не влияет
5 Пройти задания без микрофона (выбор звука/картинки) Проходят, не более одного «найди картинку» на блок
6 Озвучить слово правильно и неправильно Речь распознаётся, winrate пересчитывается
7 Завершить блок с winrate ≥75% Уровень засчитан как пройденный
8 Завершить блок с 65–74% Подмешивается проблемный блок
9 Завершить блок с <65% Даётся закрепление
10 Уровень 1 без премиума / уровни 2–3 без премиума Уровень 1 бесплатно; на уровнях 2–3 показывается пейволл
11 Купить премиум Уровни 2–3 открываются
12 Выйти на пейволле и вернуться/перезагрузить Прогресс сохраняется
13 Записать и отправить аудио Транскрибация возвращает текст, задание засчитывается

Особое внимание. Поведение без микрофона (демо-режим); границы winrate 75% и 65%; доступ к уровням 2–3 по подписке.

Что проверить. Премиум-статус приходит из общего события. Совместно с QA опубликовать событие премиума и проверить, что уровни 2–3 открываются; проверить, что распознавание речи отвечает и не теряет аудио.

3. Вебинары / Прямые эфиры — student-webinars-api · MR !50

Что за продукт. Раздел вебинаров: список и карточки, запись на вебинар, прямой эфир по кнопке и просмотр записи. Без подписки доступен один бесплатный вебинар, дальше — пейволл. За просмотр начисляются яйца.

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

Где тестировать. Стейдж.

Подготовка. Аккаунт без премиума и с премиумом. Вебинар в будущем (для эфира) и вебинар с записью.

# Шаги Ожидаемый результат
1 Открыть раздел вебинаров Список и карточки отображаются
2 Открыть карточку вебинара Видны описание, видео и презентация
3 Записаться на вебинар с премиумом Запись проходит без ошибок
4 Записаться без премиума на 1-й вебинар, затем на 2-й 1-й бесплатно; на 2-м показывается пейволл
5 Купить премиум Запись доступна на все вебинары
6 Открыть карточку до эфира и за 15 минут до него Кнопка входа неактивна, затем активируется за 15 минут
7 Войти в прямой эфир Открывается плеер эфира
8 Посмотреть запись Видео и презентация проигрываются
9 Отсмотреть эфир ≥20 минут Начислено 30 яиц (один раз)
10 Посмотреть ≥половины записи Начислено 15 яиц (один раз)
11 Повторно запросить награды Повторно не начисляются

Особое внимание. Награды 30/15 яиц и их однократность; лимит «один бесплатный вебинар»; активация кнопки эфира за 15 минут.

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

4. Гриша в Стране задач — text-tasks-video-api · MR !74

Что за продукт. Видеокурс по задачам для 1–4 классов в формате игры-коллекции: уроки-мастерские, локации, коллекция и улучшения предметов.

Почему ручной тест. Обновление затронуло много зависимостей сразу; по этому продукту нет ни TestIT, ни автотестов, поэтому базовые сценарии проверяем руками.

Где тестировать. Стейдж.

Подготовка. Аккаунт ученика с доступом к курсу.

# Шаги Ожидаемый результат
1 Войти в продукт Профиль и прогресс подгружаются
2 Открыть секции и уровни Список отображается, уровни открываются
3 Завершить шаг правильно и с ошибкой Прогресс и ошибки фиксируются
4 Завершить уровень Показывается итог уровня
5 Открыть инвентарь Предметы отображаются
6 Открыть коллекцию Предметы коллекции отображаются
7 Улучшить предмет впервые Улучшение проходит
8 Повторно отправить то же улучшение Повторно не применяется и не списывается дважды
9 Открыть страницу состояния сервиса Сервис отвечает, ошибок нет

Особое внимание. Повторный апгрейд предмета (не должен дублироваться); сохранение прогресса шагов и уровней.

Что проверить. Слияние прогресса ученика (при объединении аккаунтов) и обновление премиума. Совместно с QA убедиться, что после выкатки прогресс не теряется.

5. Игрушечная логика — toy-logic-api · MR !88

Что за продукт. Бэкенд игры-головоломки: механики Палочки, Пятнашки, Точки, Клубок; сборка кастомных игрушек из деталей; выдача дипломов; подсказки и уровни.

Почему ручной тест. Обновились крупные библиотеки рантайма (в т.ч. отвечающие за приём событий и загрузку данных), а также сценарий загрузки уровней в админке. По продукту нет TestIT/автотестов.

Где тестировать. Стейдж. Плюс админка для импорта уровней.

Подготовка. Аккаунт ученика и аккаунт администратора.

# Шаги Ожидаемый результат
1 Войти в игру Профиль и текущий уровень подгружаются
2 Запросить подсказку Подсказка показывается
3 Пройти уровень верно Уровень засчитан
4 Отправить неверное решение Не засчитан, можно попробовать снова
5 В игре «Палочки» запросить ход бота Бот делает корректный ход
6 Собрать кастомную игрушку из деталей Игрушка создаётся
7 Получить диплом Диплом формируется, возвращается ссылка на PDF, PDF открывается
8 Проверить доступ по подписке Доступ соответствует статусу подписки
9 (Админ) Открыть раздел уровней Список уровней отображается
10 (Админ) Импортировать уровни файлом Уровни загружаются, ошибок нет

Особое внимание. Выдача диплома (ссылка на PDF); ход бота в «Палочках»; загрузка уровней из админки.

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