1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/chejiangyi-free-bsf-all

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
README.md 7 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 30.11.2024 10:17 704b62b

Интеграция автоматизированного тестирования

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

Выбор технологии

  • В качестве ориентира используются инструменты PTS, Metersphere и YAPI от Alibaba Cloud.
  • Рассматриваются идеи реализации полного тестирования от компаний Youzan, Alibaba и Meituan.

Техническая реализация

Схема bsf-autotest

Зависимости

Добавить модуль BSF в зависимости проекта.

<dependency>
	<artifactId>free-bsf-core</artifactId>
	<groupId>com.free.bsf</groupId>
	<version>1.7-SNAPSHOT</version>
</dependency>
<dependency>
	<artifactId>free-bsf-autotest</artifactId>
	<groupId>com.free.bsf</groupId>
	<version>1.7-SNAPSHOT</version>
</dependency>

Введение

Конфигурация BSF

spring.application.name=free-demo-provider
# Переключатель для включения одним щелчком мыши, по умолчанию false, вступает в силу после перезапуска
autotest.enabled=false

# Включить ли запись трафика, по умолчанию false, переключатель реального времени вступает в силу
autotest.record.enabled=false

# Тип класса упаковки запроса записи, поддерживает AutoTestCachedRequestWrapper (поддерживает только json) или AutoTestContentCachingRequestWrapper (совместимый с различными типами данных)
autotest.record.wrapperType=AutoTestCachedRequestWrapper

# Частота записи, по умолчанию 1, то есть 1:1 запись; <=0 означает, что сбор не производится; вступает в силу в реальном времени
autotest.record.frequency=1

# Пропустить часть URL при записи, поддержка префикса * и суффикса * для сопоставления с подстановочными знаками, поддержка разделения нескольких URL запятыми, по умолчанию пусто
autotest.record.skip.urls=

# Максимальное количество пакетов кэша при пакетной записи, по умолчанию 5000
autotest.record.cache.max=5000

# Для микросервисов, включить ли отслеживание цепочки вызовов при записи трафика, поддерживать только вызовы feign http; после включения заголовок http будет содержать autotest-traceid
autotest.traceid.enabled=true

# При записи трафика автоматически определять, является ли операция только запросом или операцией, в настоящее время поддерживает только обнаружение sql в среде mybatis; insert, update, delete считаются операциями
autotest.operatortype.enabled=false

# Период обновления постоянного хранения записанного трафика, единица измерения - мс, по умолчанию - 5000 мс
autotest.store.flush.timespan=5000

# Тип хранилища записанного трафика, по умолчанию mysql, в будущем поддержит es, kafka, rocketmq
autotest.store.type=mysql

### Хранилище mysql
autotest.store.mysql.driver=com.mysql.cj.jdbc.Driver
# Обратите внимание на включение: rewriteBatchedStatements=true
autotest.store.mysql.url=jdbc:mysql://{заполнить информацию о db}:3306/autotest?useSSL=false&serverTimezone=Asia/Shanghai&autoReconnect=true&rewriteBatchedStatements=true
autotest.store.mysql.user={заполнить имя пользователя}
autotest.store.mysql.password={заполнить пароль}

# Включать ли атрибут аннотации, после включения информация об атрибутах будет синхронизирована с файлом образца
autotest.attribute.enabled=false
# Окружающая среда BSF, обычно используется вместе с атрибутом аннотации
bsf.env=dev

Интерфейс конфигурации BSF для атрибутов аннотаций Объяснение полей аннотаций:

  • author — автор;
  • apiType — тип API: нет, операция, запрос;
  • test — требуется ли тестирование: нет, требуется, пропустить;
  • level — уровень API: основной, важный, обычный, второстепенный, отчёт;
  • extMap — расширенная аннотация, если не требуется особая фильтрация образцов в административном интерфейсе, обычно не требуется добавлять. Формат: строка JSON типа Map.
// Пример, информация аннотации будет отображаться в образце автотеста и отчёте о тестировании, без аннотации это не повлияет на запись трафика API.
@PostMapping("/test")
@AutoTestAttribute(author = "川乌",apiType = Attributes.ApiTypeEnum.OPERATOR, test = Attributes.TestEnum.NEED,level = Attributes.LevelEnum.CORE, extMap = "{'aaa':'bbb'}")
public ApiResponseEntity<String>  test(String str) {
    return ApiResponseEntity.success("ok");
}

Продвинутое использование

  1. Запись трафика для загрузки файлов в настоящее время не поддерживается.
  2. Запись трафика микросервиса в настоящее время поддерживает передачу traceid через feign, а также распознавание типов доступа mybatis как операций или запросов.
  3. Ожидается поддержка shadow table и shadow library через sharding-jdbc, в будущем также будет реализована поддержка shadow table и shadow library на уровне jdbc.

by 车江毅

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/chejiangyi-free-bsf-all.git
git@api.gitlife.ru:oschina-mirror/chejiangyi-free-bsf-all.git
oschina-mirror
chejiangyi-free-bsf-all
chejiangyi-free-bsf-all
3.4-SNAPSHOT