Всем привет, я безумный мастер!
Во время разработки и тестирования программного обеспечения мы часто сталкиваемся с необходимостью записывать и воспроизводить сетевые запросы для отладки, тестирования и анализа. Для имитации реальных запросов пользователей мы обычно используем различные инструменты записи и воспроизведения трафика для записи и воспроизведения сетевых запросов.
в,jvm-sandbox-repeater
Это мощный инструмент записи и воспроизведения трафика, который может помочь нам легко записывать и воспроизводить сетевые запросы.
jvm-sandbox-repeater
основан на JVM-Sandbox
инструмент записи и воспроизведения потока, реализованный на Java, или его можно понимать так, как он основан плагин виртуальной машины Java,Может быть запущен непосредственно в JVM.,Целевое приложение не требует никаких изменений.
Он может автоматически перехватывать и регистрировать во время выполнения Java Сетевые запросы приложенийиответ。этодаиспользоватьJVM Sandbox
из Технология улучшения байт-кода,верноJava-приложение для ненавязчивого потока Запись и воспроизведение。это означаетпроходитьиспользоватьjvm-sandbox-repeater
,Мы можем сделать это без изменения исходного кода.,Вы можете легко реализовать функцию Запись и прерывание потока.
Основные особенности jvm-sandbox-repeater включают в себя:
существоватьна работеиспользоватьjvm-sandbox-repeater
инструмент,В основномдазаниматьвиз Три типа базовых способностей:
поток Запись
:jvm-sandbox-repeater Может быть реализованчасзахватить цель Сетевые запросы приложений,И Воля это записывает. функция записи записи,Получите фактические данные сетевого запроса целевого приложения.,Используется для последующего анализа и отладки.поток Воспроизведение
:jvm-sandbox-repeater поддерживатьверно Записыватьиз Сетевой запрос сделан Воспроизведение。проходить Воспроизведение Функция,Имитировать сетевые запросы целевого приложения,Проверить его корректность и стабильность.Запросить изменение
:jvm-sandbox-repeater Разрешить разработчикамверно Записыватьиз Сетевой запрос сделан修改。проходить Изменить функцию,Настройте параметры сетевого запроса и информацию заголовка.,Для моделирования различных сценариев и тестовых случаев.С помощью трех вышеперечисленных основных возможностей при разработке тестов их часто используют в следующих сценариях:
jvm-sandbox-repeater
основан на JVM-Sandbox
Реализован инструмент воспроизведения трафика, но, по оценкам, многие читатели не понимают, что такое JVM-Sandbox и как он работает, поэтому я остановлюсь на нем подробнее.
Проще говоря, JVM-Sandbox — это песочница для приложений Java, предназначенная для обеспечения изолированной и безопасной среды выполнения приложений Java. Основная цель технологии песочницы — защитить безопасность и стабильность системы, обеспечивая при этом лучшую среду разработки и тестирования приложений. Изолируя среду, в которой работает программа, технология песочницы может предотвратить доступ программ к ресурсам и данным, к которым они не должны иметь доступ, тем самым снижая риски безопасности.
Принцип работы JVM-Sandbox можно свести к следующим ключевым шагам:
1. Загрузка классов:существоватьJVMНеполная средняя школа Сабако,Все классы загружаются загрузчиком классов виртуальной машины Java. Загрузчики классов отвечают за загрузку классов Java из файловой системы, сети или других источников.,А Воля конвертирует его в исполняемый код.
2. Проверка байт-кода:Загрузка,JVM проверит байт-код,чтобы убедиться, что он соответствует спецификации языка Java. Целью этого шага является обнаружение потенциальных уязвимостей безопасности.,Например, ошибки преобразования типов, доступ к массиву за пределами границ и т. д.
3. Проверка безопасности:После проверки байт-кода,JVM выполнит дальнейшие проверки безопасности.,Ограничить поведение приложения,Не допускайте причинения вреда вашей системе. Сюда входят ограничения на права доступа приложений и использование ресурсов.,Например, доступ к файловой системе, доступ к сети、Системные вызовы и т.д.
4. Выполнение в песочнице:один разпроходитьпроверка байт-кодаипроверка безопасности,JVM помещает приложение в контролируемую изолированную среду для выполнения. Эта изолированная среда ограничивает доступ приложения к системным ресурсам.,Убедитесь, что его можно выполнить только в ограниченном объеме.
также,JVM-Sandbox
возвращатьсяиспользовать Технология виртуализации создает изолированные среды,И проводить улучшения байт-кода Воля добавляются в среду изоляции с помощью фиктивных (mock) методов при вызове этих методов.,JVM-Sandbox использует механизм отражения для их поиска.,И используйте прокси, например Воля, чтобы перенаправить его на виртуальную машину в песочнице для выполнения. После выполнения,Результаты будут возвращены в основную программу.
Технология улучшения байт-кодада Что-то вродеверноJavaбайт-код进行修改以增强其Функцияизтехнология。этоосновнойдасуществоватьJavaПосле генерации байт-кода,проходитьчитатьи Изменить байт-код, реализует улучшения для верных классов, методов, полей и других элементов. Эта технология эквивалентна изменению двоичного файла приложения. Основная цель — уменьшить избыточный код и повысить производительность приложения. производительностьждать。
Основные этапы улучшения байт-кода включают в себя:
Технология улучшения байт-кода имеет широкий спектр приложений. Например, ее можно использовать в инструментах APM (управления производительностью приложений) для мониторинга и управления производительностью и доступностью прикладного программного обеспечения, чтобы гарантировать нормальную работу программных приложений. Ее также можно использовать в Java; инструменты определения проблем, такие как BTrace
1. Загрузите или добавьте зависимости
Сначала вам необходимо загрузить последнюю версию jar-файла плагина с официального сайта jvm-sandbox-repeater или репозитория GitHub.
Или добавьте зависимость jvm-sandbox-repeater непосредственно в файл pom.xml проекта:
<dependency>
<groupId>com.github.jvm-sandbox-repeater</groupId>
<artifactId>jvm-sandbox-repeater</artifactId>
<version>последняя версия</version>
</dependency>
2. Настройте песочницу
Чтобы добавить подключаемый модуль jvm-sandbox-repeater в JVM, добавьте загруженный jar-файл подключаемого модуля jvm-sandbox-repeater в путь к классам целевого приложения или добавьте его в JVM с помощью параметра Javaagent.
Добавьте следующую конфигурацию в параметры запуска проекта, чтобы включить JVM-Sandbox и jvm-sandbox-repeater:
java -javaagent:path/to/jvm-sandbox-repeater.jar=config.yaml -jar your-application.jar
Среди них config.yaml — это файл конфигурации jvm-sandbox-repeater. Соответствующие параметры jvm-sandbox-repeater, такие как путь сохранения файла записи, скорость воспроизведения и т. д., могут быть изменены в соответствии с реальной ситуацией.
3. Напишите файлы конфигурации
Создайте файл с именем config.yaml для настройки jvm-sandbox-repeater. Вот простой пример:
repeater:
enabled: true
recordDir: /path/to/record/dir
replayDir: /path/to/replay/dir
filter:
classes:
- com.example.service.*
methods:
- com.example.service.UserService.getUserInfo
В этом примере мы включаем jvm-sandbox-repeater и указываем каталог для записи и воспроизведения. В то же время мы также определили фильтр для записи и воспроизведения только метода getUserInfo класса UserService в пакете com.example.service.
4. Запись и воспроизведение
Когда целевое приложение запущено, jvm-sandbox-repeater захватывает сетевые запросы в режиме реального времени и записывает их в указанную папку записи. Когда вам нужно воспроизвести запрос, вы можете использовать инструмент командной строки или API, предоставляемый jvm-sandbox-repeater.
# Запрос на запись
java -jar jvm-sandbox-repeater.jar record -c config.yaml
# Запрос на воспроизведение
java -jar jvm-sandbox-repeater.jar replay -c config.yaml
Альтернативно вы также можете использовать API, предоставляемый jvm-sandbox-repeater, для записи и воспроизведения в коде. Вот простой пример:
import com.github.jvm.sandbox.repeater.Repeater;
import com.github.jvm.sandbox.repeater.Recorder;
import com.github.jvm.sandbox.repeater.Replayer;
public class MyApp {
public static void main(String[] args) {
// инициализация Repeater
Repeater repeater = new Repeater();
repeater.init();
// Начать Запрос на запись
Recorder recorder = repeater.startRecording();
recorder.record("http://example.com/api/user", "GET");
// останавливаться Запрос на запись
recorder.stopRecording();
// Начать Запрос на воспроизведение
Replayer replayer = repeater.startReplaying();
replayer.replay("http://example.com/api/user", "GET");
// останавливаться Запрос на воспроизведение
replayer.stopReplaying();
}
}
Выполнив описанные выше шаги, вы можете использовать jvm-sandbox-repeater для записи и воспроизведения трафика приложений Java.
5. Просмотр и анализ результатов
В процессе воспроизведения или после его завершения вы можете просмотреть состояние воспроизведения, результаты, данные о производительности и т. д. через визуальный интерфейс, предоставляемый jvm-sandbox-repeater, и провести анализ результатов.
в общем,jvm-sandbox-repeater
Это мощный и простой в использовании инструмент записи и воспроизведения трафика, который может помочь разработчикам и тестировщикам легко записывать и воспроизводить сетевые запросы. проходить jvm-sandbox-repeater
,Мы можем более эффективно отлаживать, тестировать и анализировать,Повышайте эффективность и качество разработки и тестирования программного обеспечения. Если вы ищете отличный инструмент для потоковой записи и воспроизведения,Можно и попробовать jvm-sandbox-repeater
,Я верю, что это принесет вам неожиданные сюрпризы!
jvm-sandbox-repeater
из Исходный код проекта:
git clone https://github.com/alibaba/jvm-sandbox-repeater.git
Если статья вам полезна, подписывайтесь, ставьте лайки, смотрите и делитесь ею с друзьями!