Курс даст возможность попрактиковаться в использовании инструментов для мониторинга характеристик производительности и генерации нагрузки для веб-приложений.
На курсе мы:
- познакомимся с инструментами, предназначенными для генерации нагрузки и для мониторинга различных характеристик производительности;
- освоим способы использования этих инструментов для генерации нагрузки различного вида;
- изучим типовые архитектурные шаблоны построения приложений и связанные с этим источники потенциальных проблем с производительностью;
- рассмотрим способы выявления проблем с производительностью на основе анализа результатов мониторинга.
Для работы с реальными проектами мы будем использовать инструмент JMeter.
Программа курса
Неделя 1. Обзор
Введение:
- Что такое производительность? Тестирование производительности -- зачем мы его проводим?
- Функциональные и нефункциональные характеристики качества. Производительность + надежность + удобство использования (дизайн). Скорость и ресурсоемкость. Уровни изменений: производительность алгоритмов, производительность ПО, производительность человека, использующего ПО.
- Какие ошибки мы можем обнаружить: узкое место («бутылочное горлышко»), медленная подсистема/функция, точки насыщения, функциональные дефекты.
- Ложно-положительные и ложно-отрицательные результаты.
Проектирование тестов:
- Сценарий. Запросы (действия, из которых состоит сценарий).
- Профиль нагрузки.
- Задержки.
Выбор инструментов:
- Способ описания сценариев.
- Рекордер.
- Генераторы нагрузки.
- Сбор данных.
- Анализ данных.
Примеры инструментов:
- Инструменты с декларативным стилем описания сценариев.
- Инструменты с императивным стилем описания сценариев.
- Тестирование клиентской производительности.
Пример создания сценариев в JMeter:
- Запись сценария рекордером.
- Воспроизведения сценария.
- Отладка и доработка сценария. Использование прокси-серверов для отладки.
- Сбор метрик скорости: время отклика, пропускная способность, количество отказов.
Применяем к действующему проекту
Неделя 2. Сценарии
Протоколы взаимодействия с тестируемой системой:
- Сетевые протоколы;
- Удалённые программные интерфейсы (Remote API);
- API, за которыми скрывается что угодно.
Проектирование сценариев:
- Моделирование поведения пользователей;
- Что считать – пользователей или запросы?
- Задержки между запросами;
- Управление логикой сценария;
- Как правильно делать login и logout;
- Создание сценариев из переиспользуемых модулей.
Работа с данными в JMeter:
- Глобальные параметры (адрес тестового стенда и т.п.);
- Автоподстановка параметров во время записи сценариев;
- Генерация случайных данных;
- Чтение данных из внешних файлов.
Корреляция данных в JMeter:
- Выявление данных, требующих корреляции;
- Экстракторы: регулярные выражения, XPath, CSS Selectors.
Проверки (assertions):
- Функциональные проверки;
- Контроль времени отклика;
- Таймауты.
Применяем к действующему проекту
Неделя 3. Нагрузка
Требования к производительности:
- Требования к скорости;
- Требования к надежности;
- Требования к ресурсоемкости;
- Требования к окружению;
- Динамические и статические требования;
- Средние значения и аномалии.
Цели тестирования и профили нагрузки:
- Анализ требований и определение целей тестирования;
- Что такое модель нагрузки и как она соотносится с целями тестирования;
- Типовые модели нагрузки - на обнаружение какого рода проблем они нацелены?
Реализация типовых моделей нагрузки в JMeter:
- Постоянная нагрузка;
- Возрастающая нагрузка;
- Пиковые нагрузки.
Выполнение тестов:
- Калибровка сценариев;
- Функциональное тестирование в параллельном режиме;
- Стабилизация показателей и определение базы (baseline);
- Запуск с различными вариациями;
- Что делать в то время, пока выполняются тесты?
Тестирование клиентской производительности:
- Встроенные в браузеры средств;
- Облачные сервисы.
Применяем к действующему проекту
Неделя 4. Анализ результатов
Подготовка тестового стенда:
- Сервера;
- Сеть;
- Виртуальные машины;
- Настройки;
- Фоновая загрузка;
- Генераторы нагрузки.
Сбор данных:
- Время отклика, пропускная способность, количество отказов;
- Мониторинг тестируемой системы.
Распределенное тестирование:
- Генерация нагрузки из нескольких источников;
- Сбор данных в распределенной среде.
Анализ результатов и построение отчетов:
- Встроенные в инструменты средства анализа результатов;
- Специализированные пакеты для статистических расчетов.
Построение отчетов:
- Как должен выглядеть «понятный» отчёт;
- Интерпретация и представление результатов;
- Связывание результатов с целями тестирования и требованиями.
Применяем к действующему проекту
Срок обучения: 1 месяц
Время обучения: вечернее
Формат обучения: Skype,Google Classroom
Стоимость курса: 3000 грн за курс