Making decisions before ...

18.12.25

Form of award

денежная

Product status

MVP

Task type

Задачи ИКТ

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

Media sphere

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

IT

Type of product

Mobile app

Problem description

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

Expected effect

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

Full name of responsible person

Сергеев И.А.

Purpose and description of task (project)

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