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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  • Если в сети есть более масштабные испытания под давлением,,Вы можете использовать облегченные базы данных, такие как SQLite, для хранения тестовых данных.,Просто прочитайте ссылку непосредственно во время стресс-теста.
  • Если в среде ежедневного тестирования проводится много стресс-тестов,,Затем вы можете сохранить тестовые данные в виде файла.,Перед стресс-тестом сценарий стресс-теста и файл тестовых данных сохраняются в компоненте хранилища объектов через платформу. Каждый файл тестовых данных и задача стресс-теста связаны идентификатором.,При выполнении стресс-теста сценарий стресс-теста и файл данных стресс-теста отправляются на узел выполнения стресс-теста.,Удалить его после выполнения
boy illustration
Учебное пособие по Jetpack Compose для начинающих, базовые элементы управления и макет
boy illustration
Код js веб-страницы, фон частицы, код спецэффектов
boy illustration
【новый! Суперподробное】Полное руководство по свойствам компонентов Figma.
boy illustration
🎉Обязательно к прочтению новичкам: полное руководство по написанию мини-программ WeChat с использованием программного обеспечения Cursor.
boy illustration
[Забавный проект Docker] VoceChat — еще одно приложение для мгновенного чата (IM)! Может быть встроен в любую веб-страницу!
boy illustration
Как реализовать переход по странице в HTML (html переходит на указанную страницу)
boy illustration
Как решить проблему зависания и низкой скорости при установке зависимостей с помощью npm. Существуют ли доступные источники npm, которые могут решить эту проблему?
boy illustration
Серия From Zero to Fun: Uni-App WeChat Payment Practice WeChat авторизует вход в систему и украшает страницу заказа, создает интерфейс заказа и инициирует запрос заказа
boy illustration
Серия uni-app: uni.navigateЧтобы передать скачок значения
boy illustration
Апплет WeChat настраивает верхнюю панель навигации и адаптируется к различным моделям.
boy illustration
JS-время конвертации
boy illustration
Обеспечьте бесперебойную работу ChromeDriver 125: советы по решению проблемы chromedriver.exe не найдены
boy illustration
Поле комментария, щелчок мышью, специальные эффекты, js-код
boy illustration
Объект массива перемещения объекта JS
boy illustration
Как открыть разрешение на позиционирование апплета WeChat_Как использовать WeChat для определения местонахождения друзей
boy illustration
Я даю вам два набора из 18 простых в использовании фонов холста Power BI, так что вам больше не придется возиться с цветами!
boy illustration
Получить текущее время в js_Как динамически отображать дату и время в js
boy illustration
Вам необходимо изучить сочетания клавиш vsCode для форматирования и организации кода, чтобы вам больше не приходилось настраивать формат вручную.
boy illustration
У ChatGPT большое обновление. Всего за 45 минут пресс-конференция показывает, что OpenAI сделал еще один шаг вперед.
boy illustration
Copilot облачной разработки — упрощение разработки
boy illustration
Микросборка xChatGPT с низким кодом, создание апплета чат-бота с искусственным интеллектом за пять шагов
boy illustration
CUDA Out of Memory: идеальное решение проблемы нехватки памяти CUDA
boy illustration
Анализ кластеризации отдельных ячеек, который должен освоить каждый&MarkerгенетическийВизуализация
boy illustration
vLLM: мощный инструмент для ускорения вывода ИИ
boy illustration
CodeGeeX: мощный инструмент генерации кода искусственного интеллекта, который можно использовать бесплатно в дополнение к второму пилоту.
boy illustration
Машинное обучение Реальный бой LightGBM + настройка параметров случайного поиска: точность 96,67%
boy illustration
Бесшовная интеграция, мгновенный интеллект [1]: платформа больших моделей Dify-LLM, интеграция без кодирования и встраивание в сторонние системы, более 42 тысяч звезд, чтобы стать свидетелями эксклюзивных интеллектуальных решений.
boy illustration
LM Studio для создания локальных больших моделей
boy illustration
Как определить количество слоев и нейронов скрытых слоев нейронной сети?
boy illustration
[Отслеживание целей] Подробное объяснение ByteTrack и детали кода