Привет всем! Меня зовут Аркадий Воронов, старший специалист по качеству. В команде у меня гибридная роль: ручной тестировщик и TestOps. О второй ветке моего развития расскажу подробнее.

В статье будут затронуты темы:

  • контекст ИБ: что и зачем мы тестируем;

  • основные боли и ограничения,

  • инсталляционное и конфигурационное тестирование,

  • матрица совместимости,

  • инструменты, которые укрощают «зоопарк стендов»,

  • путь развития TestOps.

Погружение в контекст

Для начала кратко расскажу о продукте, с которым я работаю. JayData — это решение для поиска, классификации и маскирования конфиденциальной информации в базах данных. С обезличенной копией базы данных можно делать практически все, что угодно: тестировать, использовать в аналитике, в разработке. При этом, если данные попадут в руки к злоумышленникам, то они не смогут ими воспользоват��ся. Так как данные защищены, мы можем работать в закрытых контурах: без интернета и с соблюдением приказов ФСТЭК — это особенно актуально для финтеха, а также крупных игроков рынка из других отраслей.

Помимо закрытых контуров и приказов, при разработке и тестировании продукта, наша команда сталкивается с федеральными законами и сертификацией, а именно: законом «О персональных данных» от 27.07.2006 № 152-ФЗ, «Об основах государственного регулирования внешнеторговой деятельности» от 08.12.2003 № 164-ФЗ, сертификацией ФСТЭК и так далее. Эти правовые акты говорят о том, как должны передаваться и обезличиваться персональные, финансовые и другие данные И это неспроста — около 90% утечек финансовых организаций происходит из тестовых сред.

Jay Data отвечает требованиям регуляторов, защищает персональные данные от утечек с помощью их обезличивания. С замаскированными данными можно работать: аналитике, разработке и, конечно, тестированию. Защищенная информация предотвращает утечки, сохраняет репутацию наших заказчиков и устраняет другие проблемы на финансовых рынках.

Вызовы решений по обезличиванию данных

У решений по обезличиванию есть сразу несколько ключевых вызовов, которые напрямую влияют и на архитектуру продукта, и на подходы к тестированию.

  1. Юридический, его мы немного затронули ранее. Решение должно соответствовать требованиям федеральных законов, приказам регуляторов и условиям сертификаций. Одна ошибка может привести к штрафам, которые начинаются от сотен тысяч рублей, а в случае повторных нарушений могут рассчитываться как процент от выручки компании. Поэтому при тестировании важно, как именно продукт работает в рамках регуляторных ограничений.

  2. Структурированность. Системы у заказчиков сталкиваются с большими объемами структурированных данных: JSON, XML, таблицы баз данных. Если при маскировании нарушить структуру – на выходе получится набор данных, с которым невозможно работать.  Например, если после маскирования даты рождения «01.01.1990», которая превращается в «XX.XX.XXXX», а в связанной колонке «возраст» остается число 36, то такое обезличивание может привести к противоречиям, делает анализ бессмысленным и ломает алгоритмы, которые опираются на взаимосвязи в данных. Задача тестирования – убедиться, что после обезличивания сохраняется формат данных, не ломаются связи между сущностями, данные по-прежнему подходят для аналитики, разработки и тестирования.

  3. Еще один важный вызов – объемы баз данных  и скорость обезличивания. Клиенты заинтересованы в том, чтобы маскировать большие массивы данных как можно быстрее: это деньги и время. Речь идет не о парочке гигабайтах, а о терабайтах данных, которые должны обрабатываться стабильно, без падений и деградации производительности. 

  4. Помимо большого объема данных, в каждый момент времени появляются новые записи: система обезличивания должна уметь работать в режиме непрерывной обработки. Поэтому при тестировании отслеживается не только корректность обезличивания, но и поведение продукта под высокой нагрузкой, масштабирование и устойчивость при постоянном ��бновлении данных. 

Инсталляционное тестирование

С чего TestOps начинают работу с ИБ-продуктом? С инсталляционного тестирования.

Инсталляционное тестирование проверяет полный жизненный цикл установки продукта в инфраструктуре заказчика. В рамках этого этапа команда тестирования проверяет:

  • первичную установку системы;

  • обновление между версиями;

  • масштабирование компонентов;

  • корректное удаление системы обезличивания;

  • восстановление работоспособности после сбоев.

Основная цель инсталляционного тестирования — предотвратить проблемы на этапе эксплуатации. Для бизнеса важно, чтобы продукт запустился и стабильно работал. Это базовый уровень доверия.

Схема взаимодействия JayData
Схема взаимодействия JayData

TestOps тестирует продукт в условиях, максимально приближенных к тем, в которых он будет работать у заказчика:

  • операционные системы RedOS и CentOS;

  • более 10 различных СУБД и их версий;

  • закрытые контуры без доступа в интернет;

  • большие объемы данных;

  • использование SSL / TLS, шифрование, обфусцированный код.

Настройка Vault для хранения секретов
Настройка Vault для хранения секретов

Это жесткие условия, характерные для финтеха, ритейла и других отраслей, с повышенными требованиями к безопасности.

Конфигурационное тестирование

Конфигурационное тестирование начинается параллельно с инсталляционным и проверяет, как система ведет себя в условиях заказчиков. На этом этапе интересна не установка, а устойчивость архитектуры.

Тестировщики проверяют работу продукта в разных вариантах развертывания: all‑in‑one на одном сервере, распределенная установка с несколькими микросервисами — на RedOS и CentOS.

В рамках конфигурационного тестирования оценивается:

  • горизонтальное и вертикальное масштабирование,

  • производительность под нагрузкой,

  • работа с большими базами данных — вплоть до 20 ТБ.

Система д��лжна одинаково стабильно работать как на слабом сервере небольшой компании, так и в инфраструктуре крупного заказчика, где задействуются почти все доступные ресурсы. Цель этого этапа — доказать, что продукт сохраняет стабильность и предсказуемость поведения в любой конфигурации.

В современном бизнесе вокруг каждого клиента накапливается огромное количество данных: что, где и как часто он покупает, какие способы оплаты использует, а также множество других деталей его взаимодействия с системами и сервисами, весь этот объем данных должен быть обезличен.

Отдельное внимание мы уделяем логам. И это не случайно — мы уже «садились в лужу» из‑за путанницы в логировании. Настройка в продукте очень гибкая: уровень логирования, путь, имя файлов, размер, общий лимит и ротация. 

Конфигурация логирования
Конфигурация логирования

Команда тестирования использует горизонтальное масштабирование и распределенную архитектуру (вертикальное масштабирование) с параллельной обработкой таблиц и партиций, балансировкой нагрузки и максимальной утилизацией ресурсов кластера.

Результат, которым команда гордится, — линейный рост производительности, высокая отказоустойчивость и возможность маскировать 20 Тб данных за часы, а не дни.

Для кого мы тестируем?

В ИБ‑продуктах заказчик и пользователь — не всегда один и тот же человек. Офицер деперсонализации данных (DPO) инициирует покупку, решение часто принимается на уровне руководства, а эксплуатация начинается с системного администратора.

Схема выглядит так: DPO — руководство — администратор — продукт. И если на этапе установки у администратора возникают проблемы, продукт просто не доживает до эксплуатации. Бизнесу предложат найти другое решение.

Именно поэтому команда тестирует не только функциональность, но и путь продукта до пользователя. Мы пишем и проверяем подробные инструкции для администраторов, тестируем установку и сопровождение в условиях, максимально приближенных к реальным.

Моя гибридная роль находится на этом стыке: я работаю с разработкой, DevOps и тестированием, чтобы переход от покупки продукта к его использованию был максимально эффективным.

По сути, являюсь связующим звеном между продуктом и инфраструктурой заказчика. Как ручной тестировщик, я глубоко погружен в среды эксплуатации и проверяю весь жизненный цикл решения: от установки и масштабирования до обновления и корректного удаления. Работаю с RedOS и CentOS, тестирую продукт в тех условиях, в которых с ним столкнется администратор.

Моя задача: сделать так, чтобы установка продукта проходила без сюрпризов — ни для админа, ни для бизнеса.

Полигоны и матрица совместимости

Вся инфраструктура тестирования — это большой тестовый полигон, который должен покрывать максимум сценариев, с которыми продукт может столкнуться у клиентов. Одна группа стендов — у каждой один смысл и своя задача:

  • DEV — стенды для разработки и отладки, в которых инженеры пишут, тестируют и дорабатывают код в изолированной среде.

  • TEST — стенд для функционального тестирования. На них QA‑инженеры вручную проверяют корректность работы функций и сценариев.

  • Auto QA — стенд для автоматизированного регрессионного тестирования: запускаются автоматические тесты, чтобы быстро выявлять регрессии после изменений.

  • HL / LT — стенды для нагрузочного (High Load) и стресс‑тестирования (Load Testing) проверяют, как система ведет себя под высокой нагрузкой и в экстремальных условия, в том числе, используем HTOP на мастер‑узле, чтобы в реальном времени контролировать использование ресурсов во время тестов.

  • DevOps / QA — стенд для проверки установки, обновлений и общей инфраструктурной надежности тестирует процессы развертывания, масштабирования, восстановления и взаимодействия компонентов инфраструктуры.

Система сама по себе сложная, тестировщики сознательно не ограничиваются одной идеальной конфигурацией. Мы работаем более чем с 10 видами СУБД и их версиями, которые используются у клиентов. У одного заказчика это может быть PostgreSQL, у другого — Oracle 11g, от которого бизнес не готов отказываться. В будущем планируется поддерживать дополнительный дистрибутив — ALT Linux .

В работе используются:

  • СУБД: Oracle, MS SQL, PostgreSQL, HANA, QDB, ClickHouse;

  • ОС: RedOS, CentOS;

  • устаревшие версии: Oracle 11g, MS SQL 2008;

  • TLS‑подключения: PostgreSQL, HANA.

Когда появляется новый клиент, команда заранее проверяет его конфигурацию: поддерживается ли конкретная версия ОС и СУБД, нет ли скрытых ограничений. Это позволяет приходить на пилот с пониманием, что продукт будет стабильно работать в реальной инфраструктуре.

Укрощаем зоопарк стендов!

При таком количестве конфигураций важно управлять не стендами, а процессами. Именно поэтому у команды тестирования Jay Data выстроен единый и воспроизводимый подход к инфраструктуре, который, к тому же, работает в закрытом контуре.

Ansible — это основа, это, так сказать, база — инструмент развертывания, и живая документация: роли описывают не только установку продукта, но и всю сопутствующую инфраструктуру — мониторинг, логи, шифрование. Все это разворачивается одинаково на разных дистрибутивах и работает в закрытом контуре.

GitLab CI/CD отвечает за автоматическую линию сборки. Код, автотесты и документация хранятся в одном месте, а nightly build позволяет каждую ночь прогонять регрессию и находить проблемы до того, как их увидит пользователь. Утром ручные тестировщики получают готовые отчеты и рабочие среды по запросу.

Путь становления TestOps

Переход от ручного тестирования к инсталляционному и конфигурационному — логичный и востребованный путь развития. Тестировщик перестает быть обычным проверяльщиком качества и начинает создавать условия для тестирования.

Для полноценной работы с TestOps, нужно уверенное владение Linux: погружение в процессы, знание прав и умение читать логи. Мониторинг и анализ нагрузки тоже стал неотъемлемой частью инсталляционного и конфигурационного тестирования — ELK‑стек и Grafana должны быть вашими закадычными друзьями. Вы также должны быть на «ты» с автоматизацией и CI/CD, к тому же разбираться в контейнеризации и Docker. Большая часть навыков включает путь развития в DevOps, но как тестировщику вам нужно разбираться в вопросах безопасности и отказоустойчивости, знать нагрузочное и стресс‑тестирование. Софты также не помешают: аналитические и коммуникационные навыки must have в этой сфере.

Важный принцип: не просто тестируй, а создавай условия, в которых продукт можно надежно использовать.

А если вы только планируете начать путь тестировщика и хотите попробовать себя в тестировании нашего продукта Jay Data, присоединяйтесь к  telegram-каналу CrossUp.