Skip to content

Система тестирования производительности VueTruncateHtml ​

Обзор ​

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

Структура файлов ​

src/
├── performance.config.ts      # Конфигурация тестов и порогов
├── performance-multi.test.ts  # Множественные тесты с улучшенной статистикой
scripts/
├── performance-multi-report.js # Отчет для множественных тестов
├── performance-delta-report.js # Генератор HTML-отчетов для дельты производительности
docs/
└── performance-testing.md     # Данная документация

Доступные команды ​

Основные команды тестирования производительности ​

  • npm run test:performance - Запуск тестов производительности с подробным выводом
  • npm run test:performance:quiet - Тихий режим для тестов производительности
  • npm run test:performance:report - Подробный отчет с анализом надежности

Обычные тесты (исключены из производительности) ​

  • npm test - Запуск только функциональных тестов (без производительности)
  • npm run test:watch - Режим наблюдения за изменениями
  • npm run test:coverage - Тесты с покрытием кода

HTML-отчеты дельты производительности ​

  • node scripts/performance-delta-report.js - Генерация HTML-отчета с визуализацией изменений

Разделение тестов ​

Система тестирования разделена на два типа:

  • Функциональные тесты (npm test) - быстрые тесты функциональности
  • Тесты производительности (npm run test:performance) - медленные тесты производительности

Категории тестов ​

PROCESSING (Обработка) ​

  • Large HTML content processing - Обработка больших HTML документов
  • Large text content processing - Обработка больших текстовых блоков
  • Concurrent component creation - Одновременное создание компонентов
  • Complex HTML structure - Сложные вложенные HTML структуры

REACTIVITY (Реактивность) ​

  • Multiple re-renders - Множественные перерендеры
  • Computed properties reactivity - Реактивность вычисляемых свойств

SANITIZATION (Санитизация) ​

  • HTML sanitization overhead - Накладные расходы на санитизацию HTML

MEMORY (Память) ​

  • Memory usage - Использование памяти при создании множественных компонентов

EDGE-CASE (Крайние случаи) ​

  • Edge case: extremely long word - Обработка экстремально длинных слов

Пороговые значения ​

ТестПорогОписание
Large HTML content processing100msОбработка больших HTML документов
Large text content processing50msОбработка текстовых блоков
Multiple re-renders200msМножественные перерендеры
Computed properties reactivity100msРеактивность свойств
HTML sanitization overhead150msСанитизация HTML
Memory usage500msИспользование памяти
Edge case: extremely long word50msКрайние случаи
Concurrent component creation500msОдновременное создание
Complex HTML structure200msСложные структуры

Отчеты и мониторинг ​

JSON отчеты ​

  • performance-multi-report.json - Отчет множественных тестов с статистикой
  • performance-delta.json - Сравнение с предыдущими запусками

HTML-отчеты ​

  • performance-delta.html - Визуальный отчет изменений производительности с цветовым кодированием

Красивые отчеты ​

  • npm run test:performance:multi:report - Отчет с анализом надежности

Новая система HTML-отчетов дельты производительности ​

Особенности HTML-отчетов ​

  • Русскоязычный интерфейс - Полностью локализованный интерфейс
  • Современный дизайн - Адаптивная верстка с градиентами и тенями
  • Цветовое кодирование:
    • 🟢 Зеленый - улучшения производительности
    • 🔴 Красный - ухудшения производительности
    • ⚪ Серый - без изменений
  • Иконки статусов:
    • 📈 Улучшено
    • 📉 Ухудшено
    • ➡️ Без изменений

Структура HTML-отчета ​

  1. Общая сводка изменений - Показатели производительности и длительности
  2. Статистика изменений - Количество улучшенных/ухудшенных/неизменных тестов
  3. Детальная разбивка по тестам - Сравнение предыдущих и текущих значений
  4. Метрики производительности - Время выполнения, процентные изменения

Генерация HTML-отчетов ​

bash
# Запуск тестов производительности (генерирует performance-delta.json)
npm run test:performance

# Генерация HTML-отчета
node scripts/performance-delta-report.js

Автоматическое уведомление ​

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

  • Генерирует performance-delta.json
  • Выводит подсказку о генерации HTML-отчета
  • Показывает краткую сводку изменений в консоли

Система множественных тестов ​

Особенности ​

  • Множественные прогоны: Каждый тест выполняется 5 раз для получения более точных результатов
  • Статистический анализ: Расчет среднего, медианы, стандартного отклонения
  • Анализ надежности: Коэффициент вариации (CV) для оценки стабильности
  • Исключение выбросов: Автоматическое исключение аномальных результатов
  • Оценка стабильности: Классификация тестов по надежности (HIGH/MEDIUM/LOW)

Метрики надежности ​

  • CV < 15%: Высокая надежность (🟢)
  • CV 15-30%: Средняя надежность (🟡)
  • CV > 30%: Низкая надежность (🔴)

Конфигурация множественных тестов ​

typescript
export const PERFORMANCE_CONFIG = {
  RUNS_COUNT: 5,           // Количество прогонов для усреднения
  MIN_RUNS: 3,             // Минимальное количество прогонов
  MAX_DEVIATION: 30,       // Максимальное отклонение между прогонами (%)
  EXCLUDE_OUTLIERS: true,  // Исключать выбросы
  OUTLIER_PERCENTAGE: 0.1  // Процент выбросов для исключения
};

Анализ результатов ​

Статусы производительности ​

  • EXCELLENT - Время выполнения < 20% от порога
  • GOOD - Время выполнения 20-50% от порога
  • WARNING - Время выполнения 50-80% от порога
  • SLOW - Время выполнения 80-100% от порога
  • CRITICAL - Время выполнения > 100% от порога

Статусы надежности ​

  • STABLE - Все тесты имеют высокую надежность
  • MEDIUM - Некоторые тесты имеют среднюю надежность
  • UNSTABLE - Есть тесты с низкой надежностью

Статусы изменений дельты ​

  • IMPROVED - Производительность улучшена (время выполнения уменьшено)
  • DEGRADED - Производительность ухудшена (время выполнения увеличено)
  • SAME - Производительность не изменена (разница < 1ms)

Метрики ​

  • Время обработки - Среднее время выполнения теста
  • Процент от порога - Соотношение времени выполнения к пороговому значению
  • Размер данных - Объем обрабатываемых данных
  • Коэффициент вариации - Мера стабильности результатов
  • Дельта времени - Изменение времени выполнения между запусками
  • Процентное изменение - Относительное изменение производительности

Настройка и конфигурация ​

Изменение пороговых значений ​

Отредактируйте файл src/performance.config.ts:

typescript
export const PERFORMANCE_THRESHOLDS = {
  'Large HTML content processing': 100, // мс
  'Large text content processing': 50,  // мс
  // ... другие тесты
};

Игнорирование HTML-отчетов ​

HTML-отчеты автоматически добавлены в .gitignore:

gitignore
performance-delta.html
performance-multi-report.html

Добавление новых тестов ​

  1. Добавьте тест в src/performance-multi.test.ts
  2. Установите пороговое значение в src/performance.config.ts
  3. Добавьте описание в категорию

Рекомендации ​

  1. Регулярный мониторинг: Запускайте тесты после каждого изменения
  2. Тесты производительности: Используйте npm run test:performance для критических изменений
  3. HTML-отчеты: Используйте HTML-отчеты для визуального анализа изменений
  4. Анализ трендов: Отслеживайте изменения производительности во времени
  5. Оптимизация: Обращайте внимание на тесты с низкой надежностью
  6. CI/CD интеграция: Включите тесты в pipeline развертывания
  7. Визуальный анализ: Используйте HTML-отчеты для презентации результатов команде

Workflow рекомендации ​

Типичный рабочий процесс ​

bash
# 1. Запуск базовых тестов
npm run test:performance

# 2. Генерация HTML-отчета
node scripts/performance-delta-report.js

# 3. Анализ результатов в браузере
# Откройте performance-delta.html в браузере

# 4. При необходимости детального анализа
npm run test:performance:report

Интеграция в CI/CD ​

yaml
# Пример для GitHub Actions
- name: Run performance tests
  run: npm run test:performance

- name: Generate HTML report
  run: node scripts/performance-delta-report.js

- name: Archive performance reports
  uses: actions/upload-artifact@v3
  with:
    name: performance-reports
    path: |
      performance-delta.html
      performance-delta.json

Поддержка ​

При проблемах с тестированием производительности:

  1. Проверьте корректность конфигурации в performance.config.ts
  2. Убедитесь, что все зависимости установлены
  3. Проверьте логи на наличие ошибок
  4. Используйте npm run test:performance для более детального анализа
  5. Проверьте права доступа к файлу scripts/performance-delta-report.js

Версионирование ​

Система тестирования производительности версионируется вместе с основным компонентом. При изменении API компонента необходимо обновить соответствующие тесты.