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

18.12.25 (включительно)

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

денежная

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

MVP

Тип задачи

Задачи ИКТ

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

Медиасфера

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

IT

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

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

Тип продукта

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

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

Обозначим старую версию как 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 с жёсткими гарантиями для произвольных программ и сценариев — ещё один пример задачи, теоретически не имеющей алгоритмического решения.

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

Сергеев И.А.

Примечание