Прием решений до

18.12.25

Форма награждения

денежная

Статус продукта

MVP

Тип задачи

Задачи ИКТ

Сфера применения

Медиасфера

Область задачи

IT

Тех задание
Тип продукта

Мобильное приложение

Описание проблемы

Обозначим старую версию как P_old, новую как P_new. Под «сценарием» понимаем конечную или бесконечную последовательность событий e₁, e₂, …, которые поступают в приложение (тачи, push‑уведомления, изменения сети и т. д.). Формально это поток входных данных X. Требуется алгоритм RegDiff(P_old, P_new), который возвращает TRUE, если существует X, такой что наблюдаемое поведение P_old(X) и P_new(X) различается по какому‑то из заранее заданных инвариантов; и FALSE, если различий нет ни для одного X. Задача тождественна проверке эквивалентности двух программ с учётом их взаимодействия с окружением. Эквивалентность программ общего вида — неразрешимая задача, что делает невозможным построение универсального RegDiff

Ожидаемый эффект

Идея «оракула регрессий», который по двум версиям приложения способен строго ответить, есть ли хоть один проблемный сценарий, в общем случае не реализуема. Можно строить частичные решения: • генерацию сценариев на основе моделей (model‑based testing); • fuzzing UI‑и событий; • property‑based тестирование отдельных модулей. Но универсальный RegDiff с жёсткими гарантиями для произвольных программ и сценариев — ещё один пример задачи, теоретически не имеющей алгоритмического решения.

ФИО ответственного лица

Сергеев И.А.

Цель и описание задачи (проекта)

Заказчик поддерживает несколько мобильных приложений с общим кодом бизнес‑логики (Kotlin Multiplatform + Go‑бэкенд). После каждого релиза QA‑команда тратит недели на регрессионное тестирование. Было предложено разработать инструмент, который по паре версий (старой и новой) автоматически отвечает на вопрос: «Существует ли хоть один сценарий использования (последовательность действий пользователя, фоновые события, сетевая задержка и т. п.), при котором новая версия ведёт себя иначе, чем старая, в части задекларированных инвариантов?» Важно: инструмент должен давать **строгий** ответ (да/нет), без вероятностных допущений.