Что такое тестовый контур?
Тестовый контур – это совокупность инфраструктуры и данных, на которых команда проверяет систему до релиза в прод. Включает серверы, базы данных, сетевую конфигурацию и датасеты, максимально приближенные к боевым. Качество тестового контура напрямую определяет, какие баги будут пойманы до выкатки, а какие – на проде, когда править уже поздно. Чем больше контур похож на реальный ландшафт по объёмам, распределениям и связям между системами, тем меньше сюрпризов после релиза.
Наш ведущий эксперт Олег подготовил цикл из трёх материалов о том, как построить конвейер синтетических данных для тестирования, чистых с юридической точки зрения и, при этом, годных для качественных проверок. В первой части речь шла о регуляторных границах, во второй части — пошаговая инструкция по запуску конвейера синтетических данных в промышленных масштабах.

В заключительной статье Олег разберёт российскую специфику: ИНН, СНИЛС, ФИАС, паспортные данные и часовые пояса. Расскажет о трёх реальных кейсах – с конкретными цифрами до и после. Покажет инструменты, применимые в российских реалиях, посчитает экономику внедрения и даст план, по которому команда сможет получить первый рабочий домен за 90 дней.
Тонкости работы с синтетическими данными в России
Это та часть, с которой нельзя работать по шаблону. Международные инструменты в российских реалиях могут выдавать номер социального страхования вместо СНИЛС и адрес в формате улица, город, штат. Даже локаль ru_RU в популярных библиотеках выдаёт правдоподобные строки, которые не проходят валидацию.
Следствие простое и обидное: сгенерируете ИНН как двенадцать случайных цифр – на входном валидаторе отвалится примерно 90% записей. Вы будете тестировать не систему, а свой генератор. И узнаете об этом дня через три.
Отдельно про кириллицу – здесь я как-то потерял два дня
В разных колляциях буква ё встаёт то после е, то в конце алфавита, и результат сортировки по полю ФИО на синтетике отличается от прода. Если автотесты сравнивают выдачу списка построчно, вы получите красные тесты на ровном месте и потратите день на выяснение, почему база сортирует не так, как ожидал разработчик. Проверяйте колляции до, а не после.
Три кейса из практики
Три истории для понимания. Компании и цифры изменены из-за NDA, но ситуации повторяются от проекта к проекту.
Кейс первый: процессинг, эквайринг
Стенд был зелёный, но прод лёг через 40 минут после релиза
Что было?
Нагрузочный контур на 1,2 млрд транзакций. Данные сгенерировали честно, но равномерно: мерчантов раскидали поровну по 40 тыс. значений, даты распределили ровно по трём годам. Тесты показывали p99 в 180 мс, релиз выпустили. Через 40 минут после выкатки p99 на проде достиг 4,2 секунды, и дежурная смена откатывала всё вручную.
Что оказалось?
Два распределения оказались сломанными, и казалось, что это мелочи. А ещё была скошенность. В проде 0,4% мерчантов давали 61% трафика. На равномерных данных планировщик оценивал селективность как одну сорокатысячную и выбирал индексный доступ. В проде для горячих мерчантов эта оценка врала в сотни раз, и план запроса разваливался в чтение половины таблицы.
Профиль партиций. Данные равномерно распределены по трём годам, а в проде 70% объёма приходится на последние 90 дней. Горячая партиция на стенде была в 12 раз меньше реальной и целиком помещалась в память.
Что сделали?
Обучили копула-модель на срезе в 30 млн строк – заняло 40 минут, без GPU. Вытащили распределение мерчантов: закон Ципфа с показателем около 1,1, профиль по часам суток, долю возвратов, распределение сумм. Размножили до 1,3 млрд строк на восьми воркерах, добавили 900 записей из каталога патологий и, что оказалось важным, перемешали данные перед загрузкой.
Что стало?
Дальше всё пошло легче: стенд стал ошибаться в ту же сторону, что и прод. Нашли три проблемных запроса, два переписали, к одному добавили индекс – p99 упал до 240 мс. Генерация 1,3 млрд строк заняла около четырёх часов.
Главный вывод: объём – самая простая и самая неважная характеристика нагрузочного датасета. Врут не терабайты. Врёт скошенность.
Кейс второй: медицинская информационная система
Модель запомнила семь наших маячков – значит, запомнила и пациентов
Что было?
40 млн текстовых протоколов приёма. Данные нужны для тестирования поиска и извлечения сущностей: без реальных текстов поиск не проверить, а реальные тексты – это специальная категория персональных данных, и за их утечку штрафуют на 10–15 млн.
Взяли локальную русскоязычную модель на 7 млрд параметров, дообучили на срезе из 2 млн протоколов, сгенерировали 12 млн новых. Метрики похожести – отличные, различимость 0,54. Врачи читали и говорили: выглядит как настоящее.
Что нашли?
Перед обучением мы спрятали в срез 500 маячков – вымышленных пациентов с редкой фамилией, редким диагнозом и точной датой рождения. После генерации простой поиск нашёл семь маячков почти дословно, а один – с полной датой и фамилией в одном предложении. Значит, модель буквально воспроизводит обучающие записи. И если она вытащила наши маячки, то вытащила и реальных пациентов – просто мы их не узнаём.

Вылезло и второе: 0,6% сгенерированных протоколов содержат настоящие названия отделений и фамилии врачей. Их не считали персональными данными – зря. Фамилия врача + отделение + дата – это почти паспорт человека.
Что сделали?
Убрали дубликаты из обучающего среза через MinHash с порогом 0,8 – выкинули 11% записей, в основном шаблонные протоколы. Сократили обучение с 8 эпох до 2: похожесть почти не просела, а запоминание упало резко. Подняли температуру до 0,9, ограничили top-p до 0,92. Добавили пост-фильтр: если запись совпадает с обучающей на 8-грамму длиннее 60 символов – выбрасываем. Теряли около 0,4%, терпимо. Включили фамилии врачей и названия отделений в список замещаемых сущностей.
Что стало?
Маячки перестали появляться на трёх прогонах подряд. Качество поиска на синтетике осталось в пределах 4% от реальных данных – для регрессии годится. Проверка на маячки теперь живёт в CI и занимает восемь минут.
Вывод: без активной проверки на запоминание вы не узнаете, что модель плывёт. Метрики похожести этого не показывают – наоборот, чем сильнее модель запомнила, тем красивее у неё метрики.
Кейс третий: крупный ритейл, 11 систем
60% сквозных тестов падали не из-за багов
Что было?
11 систем: сайт, приложение, CRM, склад, доставка, лояльность, биллинг, поддержка, аналитика и две партнёрские интеграции. Каждая маскировала данные по-своему, со своим ключом. В итоге 8827 клиент в CRM не имел ничего общего с клиентом 8827 в биллинге. Простой сценарий – оформил заказ, оплатил, вернул часть, получил бонусы – разваливался на втором шаге. Команда сквозного тестирования тратила около 60% времени на разбор падений, вызванных не багами, а рассогласованием данных.
Отдельным удовольствием была подготовка окружения: заявка в ИБ, согласование, работа DBA, маскирование, выгрузка – 9 рабочих дней в среднем при двухнедельных спринтах.
Что сделали?
Ввели единый сервис идентичности: псевдоним считается детерминированно через HMAC-SHA256 от натурального ключа сущности с общей солью, соль лежит в защищённом хранилище. Один реальный клиент во всех 11 системах превращается в одного и того же синтетического – без обмена данными и без общей таблицы соответствий.
Второе решение не менее важное: генерировать не поля, а личность целиком. ФИО, телефон, адрес, документы, дата рождения, пол – один согласованный объект, который потом раскладывается по системам. Раньше каждая система генерировала своё, и получался клиент по имени Мария Петрович с мужским обращением в письмах.
Третье: срез вместо полной копии. Обошли граф из 340 таблиц и 1 100 внешних ключей, взяли связный подграф на 2,5% клиентов – 50 ГБ вместо 6 ТБ.
Что стало?
Вывод: в многосистемном ландшафте согласованность важнее реалистичности. Клиент может зваться как угодно – лишь бы одинаково везде. И почти всегда именно рассогласованность данных – та самая причина, по которой сквозное тестирование не работает.
Какие двенадцать ошибок поджидают вас по мере роста проекта?
- Обучили генератор на полном проде в незащищённом контуре. Юридический риск: копия боевых данных всё равно побывала там, где не должна была.
- Положили обезличенную копию рядом с исходной. Прямое нарушение приказа № 140 – совместное хранение запрещено. А это ровно то, что делает CREATE TABLE clients_masked AS SELECT … в той же базе.
- Считали маскирование обезличиванием. Пока есть ключ обратимости, у вас на руках персональные данные. Самая частая и самая дорогая путаница из всех.
- Мерили качество по средним. Среднее совпало, распределение развалилось. Смотрите перцентили, кардинальность и скошенность; среднее не смотрите вообще, оно обманет.
- Забыли про NULL. В проде 12% пустых, в синтетике ноль. Ни одного падения на пустом значении не поймали – все сразу пришлось ловить уже на проде.
- Не зафиксировали seed. Баг «воспроизводится через раз», вы проводите два дня расследований, и выясняется, что это не баг, а другой датасет.
- Сгенерировали справочники. ОКВЭД, регионы, коды валют, МСС – это не ПДн, их копируют один в один. Синтетический справочник ломает соединения и половину бизнес-логики.
- Убрали все дубли. В проде дубли есть, и система обязана их переваривать. Стерильные данные не проверяют то, ради чего писалась дедупликация.
- Не проверили контрольные суммы. Девяносто процентов записей отваливаются на валидаторе, тесты «проходят» по трём процентам данных, и месяцами никто не замечает.
- Оставили реальные «неперсональные» идентификаторы. Номер договора, полиса, обращения. По ним обычно есть публичная форма проверки статуса – это и есть та самая дополнительная информация из определения обезличивания.
- Не поставили срок жизни датасета. Через год сорок терабайт «на всякий случай», и никто не помнит, где среди них выгрузка двухлетней давности с настоящими ПДн. Ставьте TTL сразу, потом не соберётесь.
- Сделали данные чище прода. В боевой базе грязь, битые кодировки, «Ошибка» в поле «Город» и клиенты, зарегистрированные в 1970 году. Грязь надо воспроизводить намеренно и в правильной доле.
Инструменты: что выбрать с учётом российских реалий?

Ландшафт собран по слоям, а не по вендорам: вендоры меняются, слои – нет. Часть зарубежных платформ недоступна, а часть неприменима просто потому, что это SaaS – данные для обучения из периметра не выпускают. Открытые библиотеки при этом ставятся локально и работают у всех одинаково.
Защита бюджета: четыре статьи, без которых расчёт не работает
Раздел для тех, кому предстоит защищать бюджет. Считать нужно не экономию на лицензиях, а четыре статьи расходов – и три из них обычно забывают.
Честно скажу, когда полноценный конвейер не нужен. Три разработчика, два гигабайта данных и один продукт – не надо. На два дня хватит фикстур и Faker, а нейросетевой синтез превратится в дорогую игрушку, которую через полгода некому поддерживать.
По моим наблюдениям, окупаемость начинается от двух условий из трёх: больше пяти команд работают на общей модели данных, данных больше терабайта, и в отрасли есть регулятор. Одного условия мало.
План на 90 дней с раскладкой по неделям
План, по которому я обычно захожу на проект. Он не про внедрение платформы, а про то, чтобы получить первый работающий домен и научиться на нём: второй домен потом делается за две недели, третий – за одну.
Одна вещь, которую стоит сделать уже на первой неделе

Прогоните по текущему тестовому контуру поиск персональных данных – просто посмотрите, что там лежит. Я делал это примерно на двадцати проектах, и ни разу результат не совпадал с ожиданиями команды: обычно находится пара забытых выгрузок и таблица с настоящими телефонами, которую временно скопировали для отладки в позапрошлом году.
Что почитать, если хотите ещё глубже разобраться теме
Только то, что реально открывал и к чему возвращался.
- ПНСТ 1064-2026, 1065-2026, 1066-2026 «Синтез данных» – терминология, архитектура и методы, оценка качества. С 1 сентября 2026 года. Первый российский документ, на который можно сослаться в проектной документации1.
- Приказ Роскомнадзора № 140 от 19.06.2025 – требования и методы обезличивания. Читать целиком, включая часть про хранение и учёт: там больше подводных камней, чем в перечне методов2.
- NIST SP 800-188, «De-Identifying Government Datasets» (2023) – самый практичный зарубежный документ. Особенно разделы про валидацию и тест мотивированного нарушителя3.
- Stadler, Oprisanu, Troncoso, «Synthetic Data – Anonymisation Groundhog Day», USENIX Security 2022 – холодный душ для всех, кто считает синтетику бесплатным решением приватности4.
- Rocher, Hendrickx, de Montjoye, Nature Communications, 2019 – те самые 99,98%. Отличный аргумент в споре «мы же убрали ФИО»5.
- Xu et al., «Modeling Tabular Data using Conditional GAN», NeurIPS 2019 – исходная работа по CTGAN, полезна ради понимания, почему таблицы тяжелее картинок6.
- Шкала синтетических данных ONS (Bates, Špakulová, Dove, Mealor) – та самая, из второго раздела7.
- Документация SDV8 и SDMetrics9, библиотеки Anonymeter10 и TAPAS11 – практика по многотабличному синтезу и единственный известный мне способ проверить приватность, а не поверить в неё.
Три главных вывода
- Данные – это половина тестирования, а не довесок. Мы годами вкладываемся в автотесты, пирамиды и инфраструктуру, а данные генерит скрипт, который стажёр написал в двадцать первом году. Тест на плохих данных не просто хуже – он врёт. Ложноотрицательный результат опаснее отсутствия теста, потому что на него полагаются.
- Нейросеть – деталь конвейера, а не сам конвейер. Она хорошо справляется со структурой и совместными распределениями. Всё остальное – контрольные суммы, ссылочная целостность, хвосты, объём, воспроизводимость – держится на правилах, инженерии и дисциплине. Проектов, которые начинались с «давайте обучим модель», я видел много. Почти все закончились красивой демкой на десяти тысячах строк.
- Cамый неприятный вывод. Главный актив – не модель и не платформа, а каталог патологий. Модель переобучается за неделю, платформа меняется раз в три года, а список из трёхсот вырожденных случаев, собранный из ваших собственных инцидентов, не купить ни у одного вендора. Заведите файл сегодня, даже если до синтетики дойдут руки через год, и складывайте туда каждый инцидент, вызванный данными.
Если тема построения синтетического конвеера, да и вообще совершенствования тестового контура вам близка, – запишитесь на бесплатную консультацию к нам. Это как раз тот случай, когда полчаса разговора экономят полгода напрасных усилий. Мы покажем скрытые слабые места, которые вы ещё не нашли, и честно скажем, нужен ли вам конвейер или пока хватает того, что есть.
- ПНСТ 1064-2026. Синтез данных. Основные положения : предварительный национальный стандарт Российской Федерации : принят и введ. 01.09.2026 : срок действия до 01.09.2029. – Москва : Российский институт стандартизации, 2026. – Текст : электронный // Ассоциация больших данных : сайт. – URL: https://lib.rubda.ru/_images/files1/pnst_sintez_dannyh_arhitektura_processa_sinteza_dannyh_metody.pdf (дата обращения: 25.09.2026). ↩︎
- ПНСТ 1065-2026. Синтез данных. Архитектура процесса синтеза данных. Методы синтеза : предварительный национальный стандарт Российской Федерации : принят приказом Росстандарта от 08.07.2026 № 32-пнст : введ. 01.09.2026 : срок действия до 01.09.2029. – Москва : Российский институт стандартизации, 2026. – 58 с. – Текст : электронный // Росстандарт : сайт. – URL: https://protect.gost.ru/gost/details/f09eb333-a40d-45a7-a789-2f53fe30de4e (дата обращения: 25.09.2026). ↩︎
- ПНСТ 1066-2026. Синтез данных. Описание результатов процесса синтеза. Методика оценки качества : предварительный национальный стандарт Российской Федерации : принят приказом Росстандарта от 08.07.2026 № 33-пнст : введ. 01.09.2026 : срок действия до 01.09.2029. – Москва : Российский институт стандартизации, 2026. – 42 с. – Текст : электронный // Росстандарт : сайт. – URL: https://protect.gost.ru/gost/details/c6aef45e-9a6f-49b1-b128-c502a07eadae (дата обращения: 25.09.2026). ↩︎
- Приказ Роскомнадзора от 19.06.2025 № 140 «Об утверждении требований к обезличиванию персональных данных и методов обезличивания персональных данных, за исключением случаев, указанных в пункте 9.1 части 1 статьи 6 Федерального закона от 27 июля 2006 г. № 152-ФЗ “О персональных данных”». – Зарегистрировано в Минюсте России 31.07.2025 № 83110. – Текст : электронный // Официальный интернет-портал правовой информации : сайт. – URL: http://publication.pravo.gov.ru/document/0001202508010002 (дата обращения: 25.09.2026). ↩︎
- NIST Special Publication 800-188. De-Identifying Government Datasets: Techniques and Governance / National Institute of Standards and Technology. – Gaithersburg, MD : NIST, 2023. – 112 p. – DOI: 10.6028/NIST.SP.800-188. – Текст : электронный // NIST : сайт. – URL: https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-188.pdf (дата обращения: 25.09.2026). ↩︎
- Stadler, T. Synthetic Data – Anonymisation Groundhog Day / T. Stadler, B. Oprisanu, C. Troncoso // 31st USENIX Security Symposium (USENIX Security 22). – Boston, MA : USENIX Association, 2022. – P. 1451–1468. – Текст : электронный // USENIX : сайт. – URL: https://www.usenix.org/conference/usenixsecurity22/presentation/stadler (дата обращения: 25.09.2026). ↩︎
- Rocher, L. Estimating the success of re-identifications in incomplete datasets using generative models / L. Rocher, J. M. Hendrickx, Y.-A. de Montjoye // Nature Communications. – 2019. – Vol. 10, article 3069. – DOI: 10.1038/s41467-019-10933-3. – Текст : электронный // Nature Communications : сайт. – URL: https://www.nature.com/articles/s41467-019-10933-3 (дата обращения: 25.09.2026). ↩︎
- Synthetic Data Vault (SDV) : документация. – Текст : электронный // SDV : сайт. – URL: https://docs.sdv.dev/sdv (дата обращения: 25.09.2026). ↩︎
- SDMetrics : документация. – Текст : электронный // SDV : сайт. – URL: https://docs.sdv.dev/sdmetrics (дата обращения: 25.09.2026). ↩︎
- Anonymeter : библиотека для оценки рисков приватности синтетических данных. – Текст : электронный // PyPI : сайт. – URL: https://pypi.org/project/anonymeter/ (дата обращения: 25.09.2026). ↩︎
- TAPAS : a Toolbox for Adversarial Privacy Auditing of Synthetic Data / F. Houssiau, J. Jordon, S. Cohen, O. Daniel, A. Elliott, J. Geddes, C. Mole, C. Rangel-Smith, L. Szpruch. – Текст : электронный // arXiv.org : сайт. – 2022. – URL: https://arxiv.org/abs/2211.06550 (дата обращения: 25.09.2026). ↩︎
Тренды и фишки из мира IT,
экспертные статьи и всё о тестировании.










