Давайте поговорим о том, как генерировать тестовые данные.
Давайте поговорим о том, как генерировать тестовые данные.

Студент с Планеты Знаний задал такой технический вопрос:

Сценарий спроса: онлайн-бизнес, доступный только для чтения, ежедневное пиковое количество запросов в секунду: 30 тыс.+.

Предварительные требования: бизнес-модель, модель трафика и модель данных были оценены.

Требования к испытанию под давлением: испытание под давлением в режиме онлайн, минимальное время выполнения испытания под давлением обычно составляет не менее 10 минут.

Возникшие проблемы: объем тестовых данных, полученных в результате онлайн-записи трафика, слишком велик и превышает 30 ГБ. Как их хранить?

Главный вопрос: как генерировать большие объемы тестовых данных, сохраняя при этом баланс между эффективностью и стоимостью создания данных?

Расширенный вопрос: если это платформа стресс-тестирования собственной разработки, как поддержать практику применения больших объемов данных в проектах?

Эта проблема относительно сложна. К основным факторам сложности относятся высокая степень параллелизма, онлайн-среда, большой объем данных, эффективность и стоимость.

Пользуясь возможностью ответить на этот вопрос, поговорим о нескольких методах генерации тестовых данных.

1. Генерация вручную: напишите операторы SQL для записи данных в базу данных.

В качестве примера возьмем бизнес электронной коммерции. Чтобы смоделировать размещение пользователем заказа, товар должен быть на складе. Вы можете написать оператор SQL в базе данных, чтобы вставить номер SKU и данные о запасах продукта, а затем использовать его. при выполнении тестового примера.

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

2. Генерация пакета: генерируется путем вызова интерфейса бизнес-логики или задачи пакетной обработки.

На этапе интеграционного тестирования (тестирование интерфейса),Или этап регрессионного тестирования (автоматическое тестирование),Необходимо выполнить большое количество тестовых случаев.。В это времяСоздание тестовых данных вручную очень неэффективно, и сгенерированные данные, скорее всего, будут несовместимы с бизнес-логикой.

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

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

в частностиДля крупномасштабного автоматизированного тестирования,Помимо рассмотрения объема данных и прозрачной передачи данных по деловым каналам,,Нам также необходимо учитывать различные факторы, такие как идемпотентность и уникальность данных.

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

Этот метод чаще использовался при полноканальном стресс-тестировании производства и автоматизированных онлайн-проверках бизнеса шесть или семь лет назад.,позжеПо мере изменения проверок безопасности и политики контроля рисков,Этот метод является дорогостоящим, трудоемким и рискованным.,Постепенно заменяются другими, более совершенными способами.

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

ТакДесенсибилизация означает, что группа безопасности дает заключение путем просмотра и проверки таблиц и полей базы данных, участвующих в экспортированных данных.(Что можно экспортировать,Что нельзя; что необходимо десенсибилизировать,Какие не нужны).

Так называемые конфиденциальные данные,т. е. настоящее имя пользователя、номер телефона、Адрес доставки、Номер банковской карты и другая информация。Распространенный подход заключается в создании правил с помощью инструментов и замене конфиденциальных данных данными, доступными для тестирования, которые соответствуют правилам и бизнес-логике при экспорте.(нравитьсяномер телефона,Замените на 11100000001).

Сказав это,Преимущества онлайн-экспорта десенсибилизированных данных по-прежнему очевидны.,Может генерировать большие объемы тестовых данных, соответствующих бизнес-правилам.。ноНедостатком является то, что это требует много времени (аудит безопасности) и затрат (затраты на рабочую силу, затраты на хранение данных).

4. Запись и воспроизведение онлайн-трафика. Используйте инструменты для записи реальных данных запросов пользователей в онлайн-среде и сохранения их для использования.

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

Однако когда в команде внедряется, казалось бы, идеальное техническое решение, она сталкивается со многими проблемами, главным образом следующими:

  • Большинство предприятий имеют различные соображения безопасности при проверке статуса входа и управлении рисками, а записанные данные сталкиваются с различными проблемами сбоев проверки.
  • Многие бизнес-сценарии неидемпотентны. Например, продукт можно заказать только один раз с одним и тем же идентификатором, например, обратные вызовы трехсторонних платежей и проблемы сопоставления трех заказов.
  • Многие системы имеют различные внутренние и внешние вызовы зависимостей, и если записанные данные воспроизводятся напрямую без обработки, во многих сценариях будут сообщаться об ошибках.

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

первый,Запись и воспроизведение трафика сами по себе предъявляют высокие требования к основным техническим возможностям команды.,За этим стоят высокие первоначальные инвестиционные затраты и временные затраты.

Во-вторых,Записанные данные необходимо сохранить, десенсибилизировать и обработать.,Он также должен соответствовать бизнес-связям и сценариям.,Этот процесс могут выполнить инженеры только вручную.,И это не то, что можно решить за короткое время.,Это опять же часть стоимости.

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

наконец,Самая критическая точка:Техническая командаKPI переносятся сверху вниз.,Чем совершеннее и сложнее технология,Чем выше временные и трудовые затраты, необходимые для внедрения,KPI могут заставить лидеров принимать недальновидные решения,Это не имеет ничего общего с верой и признанием технологий.,Речь идет всего лишь о личном выживании на рабочем месте.

Ответьте на вопрос, заданный одноклассником.

первый,Из описания проблемы,Для проведения онлайн-стресс-теста обычно требуются десятки миллионов данных. Среди четырех методов генерации тестовых данных, упомянутых выше,,Ей больше подходят второй и третий способы генерации данных.,Прямо сейчас:Используйте онлайн-данные для получения основных данных по прокладке Десенсибилизация Экспорт,Параметризованные данные теста генерируются посредством пакетного запуска для создания файлов данных.

Во-вторых, сохраняются большие объемы данных, и также необходимо учитывать фактор задержки чтения тестовых данных во время стресс-тестирования. Учитывая баланс между эффективностью и стоимостью, есть два решения:

  • Способы потратить деньгиПриобретение емкости обновления и расширения Redis (30G) по объему, а ресурсы могут быть освобождены после завершения стресс-теста (Явные издержки высоки, неявные издержки чрезвычайно низки.)
  • Неуклюжий способ:ВоляФайл данных стресс-теста,Горизонтальная резка по количеству узлов стресс-теста,Затем файл данных помещается локально на машину для испытания под давлением.,Чтение тестовых данных происходит очень быстро,ноГоризонтальная резка файла и проверка доступности затруднительны.

Наконец, давайте ответим на расширенный вопрос: как платформа стресс-тестирования собственной разработки поддерживает практику применения больших объемов данных в проектах?

На самом деле за этой проблемой стоят две проблемы: генерация данных и ссылка на хранилище. Выше было представлено несколько методов генерации данных. Здесь мы поговорим о хранении и использовании тестовых данных отдельно. Существует два метода хранения и ссылки на тестовые данные:

  • Если в сети есть более масштабные испытания под давлением,,Вы можете использовать облегченные базы данных, такие как SQLite, для хранения тестовых данных.,Просто прочитайте ссылку непосредственно во время стресс-теста.
  • Если в среде ежедневного тестирования проводится много стресс-тестов,,Затем вы можете сохранить тестовые данные в виде файла.,Перед стресс-тестом сценарий стресс-теста и файл тестовых данных сохраняются в компоненте хранилища объектов через платформу. Каждый файл тестовых данных и задача стресс-теста связаны идентификатором.,При выполнении стресс-теста сценарий стресс-теста и файл данных стресс-теста отправляются на узел выполнения стресс-теста.,Удалить его после выполнения
boy illustration
Неразрушающее увеличение изображений одним щелчком мыши, чтобы сделать их более четкими артефактами искусственного интеллекта, включая руководства по установке и использованию.
boy illustration
Копикодер: этот инструмент отлично работает с Cursor, Bolt и V0! Предоставьте более качественные подсказки для разработки интерфейса (создание навигационного веб-сайта с использованием искусственного интеллекта).
boy illustration
Новый бесплатный RooCline превосходит Cline v3.1? ! Быстрее, умнее и лучше вилка Cline! (Независимое программирование AI, порог 0)
boy illustration
Разработав более 10 проектов с помощью Cursor, я собрал 10 примеров и 60 подсказок.
boy illustration
Я потратил 72 часа на изучение курсорных агентов, и вот неоспоримые факты, которыми я должен поделиться!
boy illustration
Идеальная интеграция Cursor и DeepSeek API
boy illustration
DeepSeek V3 снижает затраты на обучение больших моделей
boy illustration
Артефакт, увеличивающий количество очков: на основе улучшения характеристик препятствия малым целям Yolov8 (SEAM, MultiSEAM).
boy illustration
DeepSeek V3 раскручивался уже три дня. Сегодня я попробовал самопровозглашенную модель «ChatGPT».
boy illustration
Open Devin — инженер-программист искусственного интеллекта с открытым исходным кодом, который меньше программирует и больше создает.
boy illustration
Эксклюзивное оригинальное улучшение YOLOv8: собственная разработка SPPF | SPPF сочетается с воспринимаемой большой сверткой ядра UniRepLK, а свертка с большим ядром + без расширения улучшает восприимчивое поле
boy illustration
Популярное и подробное объяснение DeepSeek-V3: от его появления до преимуществ и сравнения с GPT-4o.
boy illustration
9 основных словесных инструкций по доработке академических работ с помощью ChatGPT, эффективных и практичных, которые стоит собрать
boy illustration
Вызовите deepseek в vscode для реализации программирования с помощью искусственного интеллекта.
boy illustration
Познакомьтесь с принципами сверточных нейронных сетей (CNN) в одной статье (суперподробно)
boy illustration
50,3 тыс. звезд! Immich: автономное решение для резервного копирования фотографий и видео, которое экономит деньги и избавляет от беспокойства.
boy illustration
Cloud Native|Практика: установка Dashbaord для K8s, графика неплохая
boy illustration
Краткий обзор статьи — использование синтетических данных при обучении больших моделей и оптимизации производительности
boy illustration
MiniPerplx: новая поисковая система искусственного интеллекта с открытым исходным кодом, спонсируемая xAI и Vercel.
boy illustration
Конструкция сервиса Synology Drive сочетает проникновение в интрасеть и синхронизацию папок заметок Obsidian в облаке.
boy illustration
Центр конфигурации————Накос
boy illustration
Начинаем с нуля при разработке в облаке Copilot: начать разработку с минимальным использованием кода стало проще
boy illustration
[Серия Docker] Docker создает мультиплатформенные образы: практика архитектуры Arm64
boy illustration
Обновление новых возможностей coze | Я использовал coze для создания апплета помощника по исправлению домашних заданий по математике
boy illustration
Советы по развертыванию Nginx: практическое создание статических веб-сайтов на облачных серверах
boy illustration
Feiniu fnos использует Docker для развертывания личного блокнота Notepad
boy illustration
Сверточная нейронная сеть VGG реализует классификацию изображений Cifar10 — практический опыт Pytorch
boy illustration
Начало работы с EdgeonePages — новым недорогим решением для хостинга веб-сайтов
boy illustration
[Зона легкого облачного игрового сервера] Управление игровыми архивами
boy illustration
Развертывание SpringCloud-проекта на базе Docker и Docker-Compose