[Software-testing] Тестирование производительности: JMeter 5 (Алексей Баранцев)
Тренер: Баранцев Алексей
Материал курса адаптирован к версии JMeter 5
Курс даст возможность попрактиковаться в использовании инструментов для мониторинга характеристик производительности и генерации нагрузки для веб-приложений.
'Младших тестировщиков производительности' не бывает. Зато бывают люди, которые начинают заниматься тестированием производительности.
(с) Скотт Барбер (aka The Perf Guy)
В тестировании компьютерных программ есть 'общедоступная' область функционального тестирования, куда доступ открыт всем желающим, и есть целый ряд областей с достаточно высоким 'порогом входа', и тестирование производительности находится в их числе.
Для этого вида тестирования требуется хорошее владение оружием, его голыми руками не возьмёшь. Во-первых, нужно само оружие -- тестирование производительности обязательно требует умения пользоваться специальными инструментами. Во-вторых, нужно тщательно изучить соперника -- необходимо хорошее понимание протоколов взаимодействия тестируемой программы с внешним миром и её внутренней физической и логической архитектуры. Ну и конечно же нужно владеть приёмами -- знать какую нагрузку и как подать на тестируемое приложение, и на что смотреть, чтобы выявить проблемы с производительностью.
На тренинге мы будем учиться обращаться с этим оружием:
- познакомимся с инструментами, предназначенными для генерации нагрузки и для мониторинга различных характеристик производительности,
- освоим способы использования этих инструментов для генерации нагрузки различного вида,
- изучим типовые архитектурные шаблоны построения приложений и связанные с этим источники потенциальных проблем с производительностью,
- рассмотрим способы выявления проблем с производительностью на основе анализа результатов мониторинга.
Подробная программа курса:
Модуль 1.1. Введение
- Что такое производительность? Тестирование производительности -- зачем мы его проводим?
- Функциональные и нефункциональные характеристики качества. Производительность + надёжность + удобство использования (дизайн). Скорость и ресурсоёмкость. Уровни изменений: производительность алгоритмов, производительность ПО, производительность человека, использующего ПО.
- Какие ошибки мы можем обнаружить: узкое место («бутылочное горлышко»), медленная подсистема/функция, точки насыщения, функциональные дефекты.
- Ложно-положительные и ложно-отрицательные результаты.
- Сценарий. Запросы (действия, из которых состоит сценарий).
- Профиль нагрузки.
- Задержки.
- Способ описания сценариев.
- Рекордер.
- Генераторы нагрузки.
- Сбор данных.
- Анализ данных.
- Инструменты с декларативным стилем описания сценариев.
- Инструменты с императивным стилем описания сценариев.
- Тестирование клиентской производительности.
- Облачные сервисы.
- Запись сценария рекордером.
- Воспроизведения сценария.
- Отладка и доработка сценария. Использование прокси-серверов для отладки.
- Сбор метрик скорости: время отклика, пропускная способность, количество отказов.
Модуль 2.1. Протоколы взаимодействия с тестируемой системой
- Сетевые протоколы.
- Удалённые программные интерфейсы (Remote API).
- API, за которыми скрывается что угодно.
- Моделирование поведения пользователей.
- Что считать – пользователей или запросы?
- Задержки между запросами.
- Управление логикой сценария.
- Как правильно делать login и logout.
- Создание сценариев из переиспользуемых модулей.
- Глобальные параметры (адрес тестового стенда и т.п.)
- Автоподстановка параметров во время записи сценариев.
- Генерация случайных данных.
- Чтение данных из внешних файлов.
- Выявление данных, требующих корреляции.
- Экстракторы: регулярные выражения, XPath, CSS Selectors.
- Функциональные проверки
- Контроль времени отклика
- Таймауты
Модуль 3.1. Требования к производительности
- Требования к скорости.
- Требования к надёжности.
- Требования к ресурсоёмкости.
- Требования к окружению.
- Динамические и статические требования.
- Средние значения и аномалии.
- Анализ требований и определение целей тестирования
- Что такое модель нагрузки и как она соотносится с целями тестирования.
- Типовые модели нагрузки: на обнаружение какого рода проблем они нацелены.
- Постоянная нагрузка
- Возрастающая нагрузка
- Пиковые нагрузки
- Калибровка сценариев.
- Функциональное тестирование в параллельном режиме.
- Стабилизация показателей и определение базы (baseline).
- Запуск с различными вариациями.
- Что делать во то время, пока выполняются тесты?
- Встроенные в браузеры средств.
- Облачные сервисы.
Модуль 4.1. Подготовка тестового стенда
- Сервера.
- Сеть.
- Виртуальные машины.
- Настройки.
- Фоновая загрузка.
- Генераторы нагрузки.
- Время отклика, пропускная способность, количество отказов.
- Мониторинг тестируемой системы.
- Генерация нагрузки из нескольких источников.
- Сбор данных в распределённой среде.
- Встроенные в инструменты средства анализа результатов.
- Специализированные пакеты для статистических расчётов.
- Как должен выглядеть «понятный» отчёт.
- Интерпретация и представление результатов.
- Связывание результатов с целями тестирования и требованиями.