- Training
Занятие 1. Обзор
Модуль 1.1. Введение
- Что такое производительность? Тестирование производительности -- зачем мы его проводим?
- Функциональные и нефункциональные характеристики качества. Производительность + надёжность + удобство использования (дизайн). Скорость и ресурсоёмкость. Уровни изменений: производительность алгоритмов, производительность ПО, производительность человека, использующего ПО.
- Какие ошибки мы можем обнаружить: узкое место («бутылочное горлышко»), медленная подсистема/функция, точки насыщения, функциональные дефекты.
- Ложно-положительные и ложно-отрицательные результаты.
Модуль 1.2. Проектирование тестов
- Сценарий. Запросы (действия, из которых состоит сценарий).
- Профиль нагрузки.
- Задержки.
Модуль 1.3. Выбор инструментов
- Способ описания сценариев.
- Рекордер.
- Генераторы нагрузки.
- Сбор данных.
- Анализ данных.
Модуль 1.4. Примеры инструментов
- Инструменты с декларативным стилем описания сценариев.
- Инструменты с императивным стилем описания сценариев.
- Тестирование клиентской производительности.
- Облачные сервисы.
Модуль 1.5. Пример создания сценариев в JMeter
- Запись сценария рекордером.
- Воспроизведения сценария.
- Отладка и доработка сценария. Использование прокси-серверов для отладки.
- Сбор метрик скорости: время отклика, пропускная способность, количество отказов.
Занятие 2. Сценарии
Модуль 2.1. Протоколы взаимодействия с тестируемой системой
- Сетевые протоколы.
- Удалённые программные интерфейсы (Remote API).
- API, за которыми скрывается что угодно.
Модуль 2.2. Проектирование сценариев
- Моделирование поведения пользователей.
- Что считать – пользователей или запросы?
- Задержки между запросами.
- Управление логикой сценария.
- Как правильно делать login и logout.
- Создание сценариев из переиспользуемых модулей.
Модуль 2.3. Работа с данными в JMeter
- Глобальные параметры (адрес тестового стенда и т.п.)
- Автоподстановка параметров во время записи сценариев.
- Генерация случайных данных.
- Генерация уникальных данных.
- Чтение данных из внешних файлов.
Модуль 2.4. Корреляция данных в JMeter
- Выявление данных, требующих корреляции.
- Экстракторы: регулярные выражения, XPath, CSS Selectors.
Модуль 2.5. Проверки (assertions)
- Функциональные проверки
- Контроль времени отклика
- Таймауты
Занятие 3. Нагрузка
Модуль 3.1. Требования к производительности
- Требования к скорости.
- Требования к надёжности.
- Требования к ресурсоёмкости.
- Требования к окружению.
- Динамические и статические требования.
- Средние значения и аномалии.
Модуль 3.2. Цели тестирования и профили нагрузки
- Анализ требований и определение целей тестирования.
- Что такое модель нагрузки и как она соотносится с целями тестирования.
- Типовые модели нагрузки: на обнаружение какого рода проблем они нацелены.
Модуль 3.3. Реализация типовых моделей нагрузки в JMeter
- Постоянная нагрузка
- Возрастающая нагрузка
- Пиковые нагрузки
Модуль 3.4. Выполнение тестов
- Калибровка сценариев.
- Функциональное тестирование в параллельном режиме.
- Стабилизация показателей и определение базы (baseline).
- Запуск с различными вариациями.
- Что делать во то время, пока выполняются тесты?
Модуль 3.5. Тестирование клиентской производительности
- Встроенные в браузеры средств.
- Плагины к браузерам.
- Прокси-сервера.
- Облачные сервисы.
Занятие 4. Анализ результатов
Модуль 4.1. Подготовка тестового стенда
- Сервера.
- Сеть.
- Виртуальные машины.
- Настройки.
- Фоновая загрузка.
- Генераторы нагрузки.
Модуль 4.2. Сбор данных
- Время отклика, пропускная способность, количество отказов.
- Мониторинг тестируемой системы.
Модуль 4.3. Распределённое тестирование
- Генерация нагрузки из нескольких источников.
- Сбор данных в распределённой среде.
Модуль 4.4. Анализ результатов и построение отчётов
- Встроенные в инструменты средства анализа результатов.
- Excel и другие электронные таблицы.
- Специализированные пакеты для статистических расчётов.
Модуль 4.5. Построение отчётов
- Как должен выглядеть «понятный» отчёт.
- Интерпретация и представление результатов.
- Связывание результатов с целями тестирования и требованиями.