Тестовая база без живых клиентов: Mimesis вместо выгрузки
Подрядчик тестирует 1С, CRM или бота на копии боевой базы, и в тесте лежат настоящие клиенты. Я поставил Mimesis в чистую папку и проверил русскую локаль: что генерируется, чего нет и как собрать стенд с выдуманными данными. Выдуманные данные и обезличенные данные не одно и то же.
Сделаю под ключ: разберу задачу, назову срок и цену. Чтобы начать, напишите в Telegram одной фразой.
Собрать тестовый стенд без живых клиентовКопия боевой базы лежит у подрядчика
Владелец магазина нанимает разработчика поправить обмен с 1С. Тот просит живую выгрузку. Через час на его ноутбуке лежат ФИО, телефоны, адреса и история заказов всех клиентов. Потом ноутбук меняют, выгрузка остаётся в папке «Загрузки», копия уходит коллеге, а тестовый бот однажды пишет настоящим людям.
С CRM и ботами то же самое: проще взять настоящую базу. Второй путь тоже есть: сгенерировать клиентов, которых не существует.
Что говорит 152-ФЗ про тестовую копию
Нормы я читал на КонсультантПлюс 31.10.2026. Персональные данные это любая информация, относящаяся к прямо или косвенно определённому или определяемому физическому лицу (п. 1 ст. 3). Копия базы с теми же ФИО и телефонами остаётся такой информацией, даже в папке «тест». Содержание и объём данных должны соответствовать заявленным целям обработки (ч. 5 ст. 5).
Если базу получает подрядчик, как я это читаю, речь о поручении обработки другому лицу. В нём указывают перечень данных, перечень действий, цели, обязанность соблюдать конфиденциальность и требования к защите (ч. 3 ст. 6). Меры защиты оператор принимает при любой обработке (ст. 19).
Размеры штрафов я не проверял и не пишу. Входит ли тестирование в ваши заявленные цели, решает юрист. На странице стояла пометка о редакции с изменениями, не вступившими в силу, поэтому формулировки сверьте с действующей.
Что я запустил: Mimesis с русской локалью
Mimesis (lk-geimfari/mimesis) это библиотека на Python для правдоподобных данных: имена, адреса, даты, телефоны, почта, финансы. Лицензия MIT указана на GitHub, в PyPI и в файле LICENSE. На 31.10.2026 релиз 22.2.0 от 23.09.2026, последний push 28.10.2026, около 4,9 тысячи звёзд, README заявляет 47 локалей. Платных модулей я не видел, условия датасетов не изучал. Поводом стал пост GitHub Community от 26.10.2026, сам пост я не открывал.
Я поставил её в пустое окружение и запускал Python с ключом -I. Локаль RU:
- ФИО получаются вида «Игнатий Харламович Болотов». В словаре 203 мужских и 480 женских имён, около 3200 фамилий. Выбор равновероятный, поэтому «Галактион» и «Физалия» попадаются так же часто, как любое другое имя.
- full_name без указания пола склеивает имя и фамилию разного пола: «Индира Ганиев». Лечится передачей пола во все вызовы. Отчество берётся отдельным вызовом.
- Телефоны только мобильные, одной маски: +7-(909)-002-65-77. Из 100 000 строк уникальных номеров 99 960, нужна проверка на повторы.
- Адрес собирается из независимых частей: Мамадыш оказался в Башкортостане, Новодвинск в Карелии, номер дома дошёл до 1310.
- Почта по умолчанию берёт домены из списка, где семь из девяти настоящие почтовые сервисы (gmail.com, yandex.com и другие). Тестовая рассылка может дойти до живого ящика. Свой домен вроде example.test передаётся параметром.
- В названии формы «ПАО» две буквы оказались латинскими (проверил кодами символов).
- Провайдеров для ИНН, СНИЛС, паспорта, ОГРН и КПП в русской локали нет, я искал по коду и данным. Свой код контрольных сумм я сверил с известным ИНН организации и примером СНИЛС из описания алгоритма, затем прогнал 1000 значений: все прошли.
- Seed работает: два отдельных запуска с seed=2026 дали одинаковые строки. Версии библиотеки между собой я не сравнивал, версию фиксируют.
Выдуманные данные и обезличенные данные
Обезличивание в законе это действия, после которых без дополнительной информации нельзя определить, чьи это данные (п. 9 ст. 3). Если вы маскируете поля боевой базы, исходник остаётся у вас. Считать ли результат обезличенным, зависит от способа и от того, можно ли узнать человека по сочетанию оставшихся полей, например индекса, даты рождения и профессии. Вывода я не даю.
У выдуманных клиентов связи с вашей базой нет, и обезличивать нечего. Но совпадения возможны: случайный мобильный номер может принадлежать живому абоненту. Я это не измерял. Поэтому на стенде отключают всё, что ходит наружу.
Когда нужны именно грязные боевые данные, с кривыми адресами и дублями, выдумка их не заменит. Тогда базу маскируют, и я писал про такой инструмент в статье про Presidio. Общий взгляд на искусственные данные в статье про синтетические данные.
Как собрать стенд для 1С, CRM или бота
Связность я проверил на двух таблицах: клиенты и заказы. Выгрузку схемы в CSV и JSON (методы нашёл в коде) и загрузку в 1С не запускал. Порядок такой:
- Выгрузить структуру, а не данные: таблицы, поля, типы, обязательность.
- Описать схему генерации, зафиксировать seed и версию библиотеки. Тогда у всех один стенд, а ошибка повторяется.
- Дописать свои генераторы ИНН, СНИЛС, паспорта, ОГРН с контрольными суммами.
- Создавать сначала родителей, потом детей. В моём тесте все восемь заказов нашли своего клиента. Даты я задал только годом, и один заказ получился на 02.11.2026, из будущего. Границы ставьте по сегодняшнему дню и дате регистрации клиента.
- Закрыть исходящие каналы: SMS, почта, вебхуки, отдельный токен бота, платежи в тестовом режиме.
- Сверить стенд с боевой базой по хешам телефонов и почты внутри боевого контура. Совпадений быть не должно.
Это я и собираю под ключ: стенд для 1С, CRM, магазина или бота с выдуманными клиентами, скрипты выгрузки структуры и скрипты замены. Подрядчик получает копию-двойник без настоящих клиентов. Подробнее об автоматизации процессов на странице услуги.
Где это не сработает
Библиотека не знает ваших бизнес-правил: скидок, остатков, статусов. Адреса выдуманные, геокодер или расчёт доставки на них не проверить. Имена равновероятные, а в жизни Александров больше, чем Галактионов, и нагрузочный тест поиска по фамилии покажет другие цифры.
Мимо проходят ошибки реальных данных: двойные пробелы в ФИО, фамилия латиницей, телефон с восьмёркой. Их подсаживают в генератор руками. Стенд не отменяет договор поручения и меры из ст. 19 для того, что осталось у подрядчика. Как проверять бота перед стартом, я описал в статье про приёмку.
Что можно сделать уже сейчас
- Спросите подрядчика письменно, на какой базе он тестирует и где она лежит.
- Составьте список полей с персональными данными: ФИО, телефон, почта, адрес, ИНН, паспорт.
- Поставьте Mimesis в пустую папку и сгенерируйте тысячу клиентов по вашим полям. Если 1С или бот принимают их без ошибок, схема рабочая.
- Закройте исходящие каналы на любой тестовой копии, даже на выдуманной.
Частые вопросы
Снимает ли выдуманная база требования 152-ФЗ?
Данные, не относящиеся ни к какому живому человеку, под определение из п. 1 ст. 3 не подпадают. Случайные совпадения возможны, а боевая база остаётся под законом. Вывод даёт юрист.
Можно ли просто замаскировать боевую копию?
Можно, но тогда остаётся вопрос, обезличена ли она по п. 9 ст. 3. С выдуманными данными этого вопроса нет.
Коротко о главном
Копия боевой базы на ноутбуке подрядчика остаётся базой клиентов, и отвечает за неё оператор. Mimesis бесплатна по MIT и на русском даёт имена, отчества, телефоны, города и почту. ИНН, СНИЛС, паспорта, связи между таблицами и адреса остаются на разработчике стенда.
Если ваша 1С, CRM, магазин или бот сейчас тестируются на живой базе, напишите мне в Telegram кодовое слово «ДВОЙНИК». Посмотрю, где у вас персональные данные, и соберу стенд с выдуманными клиентами и скриптами выгрузки и замены.
Что я делаю для бизнеса
Напишите одной фразой, что нужно. Отвечу, что подойдёт, сколько займёт и сколько стоит. Сообщение уже подготовлено.
- Боты в Telegram, MAX, VK
- Автоматизация процессов и CRM
- Аналитика и дашборды
- Сайты и лендинги под ключ
Бесплатно: чек-лист «Готов ли ваш бизнес к 152-ФЗ»
12 пунктов, которые проверяют готовность за час: данные, согласия, уведомление в РКН, локализация, защита. Отметьте, что уже сделано, и увидите дыры, за которые сейчас штрафуют.
Разборы, кейсы и практика — без воды. Выходит регулярно, читать 3–5 минут.


