План проверки и выпуска
Все изменяющие сценарии выполняются на тестовой копии с обезличенными данными. В production в аудите проверено только чтение. Для выпуска нужны реальные учётные записи ролей, тестовые договоры/оборудование и согласованные ожидаемые правила SLA.
Контрольные данные
Создать на стенде: клиент A с договором A и двумя объектами; клиент B с договором B; менеджер A с доступом только к A; менеджер AB; инженер; администратор; заявка каждой стороны в статусах новое/в работе/на согласовании/закрыто; договоры с графиками 24×7 и рабочим временем; праздничный день, перенос, граница месяца и часового пояса. Секреты и реальные персональные данные в фикстуры не помещать.
Матрица доступа
Для каждой операции view list, view card, create, append public message, append internal note, assign engineer, change SLA, close, record engineer time, export, change notices проверить четыре варианта: своя сущность, чужой договор, неизвестный ID, неавторизованный пользователь. Дополнительно GET вместо POST, отсутствующий/неверный sessid, повтор запроса, неожиданный field, подменённый contract/object. Ожидание: отказ 403/404/422 без изменения заявки, истории, уведомлений и статистики. Разрешённые комбинации утвердить с владельцем процесса.
Сквозные сценарии
| Сценарий | Что измерить/проверить |
|---|---|
| Вход | Неавторизованный / и защищённый URL показывают вход без 500; после входа корректная роль/раздел; logout закрывает доступ |
| Создание | Договор/объект выбираются из разрешённых; одна заявка и история; номер уникален при 20 параллельных запросах; ошибки дают ноль частичных записей |
| Изменение/закрытие | Таблица разрешённых переходов, old/new в истории, одно уведомление; повтор POST идемпотентен; чужая заявка закрытию не поддаётся |
| SLA | Не менее 30 заранее утверждённых примеров; сравнить план и факт; старые заявки не переписаны; пересчёт при изменении договора соответствует решению владельца |
| Уведомления | Матрица событие×роль×договор; согласие/настройки; доставка, задержка, сбой SMTP/очереди и повтор без дубликатов |
| Экспорт | 0/50/3000 строк, фильтры, права, корректный XLSX/MIME, текстовые номера, даты, отсутствие утечки чужого договора |
| Статистика | Контрольная выборка БД совпадает со сводкой; отображаются период и время обновления; ошибка расписания видна |
| QR/CRM/1С | Истёкший/чужой/повторный код; REST timeout/5xx/TLS; отсутствие дублей и запись корреляции; контракт обмена подписан владельцами |
| UI | 1366×768 и 390×844; клавиатура, контраст, читаемость ошибок; 5 заданий по списку/созданию/карточке с метриками PRD |
Автоматические проверки
- Unit: расчёт SLA на таблице примеров, парсер/валидатор команд, политика доступа и переходы статусов.
- Integration: создание/изменение/закрытие в Битрикс с тестовой БД; транзакция заявки+истории; очередь уведомлений; экспорт и cron.
- E2E: реальные браузерные действия для клиента, менеджера, инженера и администратора на целевом адресе стенда, включая видимый результат после входа. HTTP 200/401 сам по себе не является доказательством сценария.
- Contract: 1С/CRM через заглушки и затем согласованный стенд; таймауты, повтор и схема идентификаторов.
- Regression: другие сайты общей установки, авторизация, shared-обработчики, нагрузка списка.
Gate и откат
Перед выпуском: бэкап файлов/БД и проверка восстановления на стенде; замер базовой линии; отсутствие P0/P1 в матрице; утверждённые примеры SLA; успешная проверка получателя уведомления; решение о миграции секрета и удалении тестовых URL. После выпуска: smoke с каждой ролью на целевом адресе, p95 списка, 5xx, очередь уведомлений, экспорт и статистика; повторный цикл cron. При отклонении — возврат к прежнему шаблону/релизу и восстановление данных только по заранее проверенному плану, с учётом записей, созданных после выкладки.
Ограничения текущей проверки
19.10.2026 подтверждены вход через /bitrix/admin/ и просмотр списков/карточек под администратором; не подтверждены клиентская/менеджерская/инженерная учётные записи, отправка форм, доставка почты, XLSX и корректный QR-проход. Независимое приёмочное ревью данного пакета организует координатор отдельно.