- Тренинг
"Младших тестировщиков производительности" не бывает. Зато бывают люди, которые начинают заниматься тестированием производительности.
(с) Скотт Барбер (aka The Perf Guy)
В тестировании компьютерных программ есть "общедоступная" область функционального тестирования, куда доступ открыт всем желающим, и есть целый ряд областей с достаточно высоким "порогом входа", и тестирование производительности находится в их числе.
Для этого вида тестирования требуется хорошее владение оружием, его голыми руками не возьмёшь. Во-первых, нужно само оружие -- тестирование производительности обязательно требует умения пользоваться специальными инструментами. Во-вторых, нужно тщательно изучить соперника -- необходимо хорошее понимание протоколов взаимодействия тестируемой программы с внешним миром и её внутренней физической и логической архитектуры. Ну и конечно же нужно владеть приёмами -- знать какую нагрузку и как подать на тестируемое приложение, и на что смотреть, чтобы выявить проблемы с производительностью.
На тренинге мы будем учиться обращаться с этим оружием:
- познакомимся с инструментами, предназначенными для генерации нагрузки и для мониторинга различных характеристик производительности,
- освоим способы использования этих инструментов для генерации нагрузки различного вида,
- изучим типовые архитектурные шаблоны построения приложений и связанные с этим источники потенциальных проблем с производительностью,
- рассмотрим способы выявления проблем с производительностью на основе анализа результатов мониторинга.
Для практических демонстраций и для выполнения домашних заданий будет использоваться инструмент JMeter.
Подробная программа курса:
Первое занятие: обзор
1. Введение в тестирование производительности -- зачем мы его проводим и какие ошибки мы можем обнаружить
2. Базовые составляющие проектирования тестов: сценарии и профиль нагрузки
3. Базовые составляющие выполнения тестов: создание нагрузки и сбор данных
4. Базовые составляющие анализа результатов: средние значения и аномалии
5. Краткий обзор инструментов генерации нагрузки
- онлайновые генераторы, демонстрация LoadImpact
- инструменты с декларативным стилем описания сценариев, демонстрация JMeter
- инструменты с императивным стилем описания сценариев, демонстрация Multi-Mechanize
6. Создание простого генератора нагрузки: запись действий пользователя и воспроизведение записанного сценария в несколько потоков
- демонстрация записи и воспроизведения
7. Отладка сценария: как понять, что там происходит на самом деле
- анализ результатов в Tree View
8. Сбор основных метрик: время отклика, пропускная способность, количество отказов
Второе занятие: сценарии и профили нагрузки
1. Требования к производительности систем, анализ требований и определение целей тестирования
2. Что такое модель нагрузки и как она соотносится с целями тестирования
3. Типовые модели нагрузки -- на обнаружение какого рода проблем они нацелены
- реализация типовых моделей нагрузки в JMeter
4. Тестовые данные и параметризация сценариев
- глобальные параметры и уникальные данные для каждого виртуального пользователя
- загрузка данных из файла
- динамическая генерация данных
5. Корреляция запросов в рамках сценария
- различные способы извлечения данных из результата запроса
Третье занятие: сбор данных и анализ результатов
1. Сбор основных метрик: время отклика, пропускная способность, количество отказов
- просмотр в JMeter в режиме реального времени
- сброс данных в файл и загрузка из файла
2. Архитектура распределённых систем и источники проблем с производительностью
3. Сбор данных о производительности операционной системы, сервера приложений, СУБД
4. Ложно-положительные и ложно-отрицательные результаты
5. Распределённое тестирование
- генерация нагрузки из нескольких источников
- сбор данных в распределённой среде
6. Использование Excel для анализа результатов
7. Выявление аномалий (отклонений от нормы)
Четвертое занятие: усложнение сценариев
1. Задержки между запросами
2. Верификация результатов запросов
3. Управление потоком выполнения сценария
- условные действия
- циклы
- случайный порядок выполнения действий
- как правильно делать login и logout
4. Создание сценариев из переиспользуемых модулей
5. Различные протоколы взаимодействия с тестируемой системой
Формат курса
Онлайн-тренинг продолжительностью 4 занятия по 1,5 часа с еженедельными онлайн-консультациями и практическими домашними заданиями.
Каждую неделю в систему дистанционного обучения будет выкладываться запись очередного урока курса.
Все вопросы после прослушивания записи можно будет задать в специальном закрытом форуме или скайп-чате. Тренер будет оперативно отвечать на них.
Кроме того, каждый вторник с 17.00 до 17.30 тренер будет ждать в скайпе и в системе GoToWebinar вопросы участников курса, которым необходима помощь в выполнении домашнего задания.
Первая консультация будет 4 февраля. И дальше точные даты консультаций 4, 11, 18, 25 февраля с 17-00 до 17-30 по московскому времени.
Каждый участник курса будет получать обратную связь от тренера по результатам выполнения домашнего задания. Наиболее типичные ошибки будут разбираться на консультациях и в закрытом форуме.