Дата начала ближайшего тренинга

Комментарий тренера о новом курсе.

тренер: Баранцев Алексей

"Младших тестировщиков производительности" не бывает. Зато бывают люди, которые начинают заниматься тестированием производительности.
(с) Скотт Барбер (aka The Perf Guy)

В тестировании компьютерных программ есть "общедоступная" область функционального тестирования, куда доступ открыт всем желающим, и есть целый ряд областей с достаточно высоким "порогом входа", и тестирование производительности находится в их числе.

Для этого вида тестирования требуется хорошее владение оружием, его голыми руками не возьмёшь. Во-первых, нужно само оружие -- тестирование производительности обязательно требует умения пользоваться специальными инструментами. Во-вторых, нужно тщательно изучить соперника -- необходимо хорошее понимание протоколов взаимодействия тестируемой программы с внешним миром и её внутренней физической и логической архитектуры. Ну и конечно же нужно владеть приёмами -- знать какую нагрузку и как подать на тестируемое приложение, и на что смотреть, чтобы выявить проблемы с производительностью.

На тренинге мы будем учиться обращаться с этим оружием:

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

Для практических демонстраций и для выполнения домашних заданий будет использоваться инструмент JMeter версии 3.

Подробная программа курса:

Занятие 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. Анализ результатов и построение отчётов

  • Встроенные в инструменты средства анализа результатов.
  • Специализированные пакеты для статистических расчётов.

Модуль 4.5. Построение отчётов

  • Как должен выглядеть «понятный» отчёт.
  • Интерпретация и представление результатов.
  • Связывание результатов с целями тестирования и требованиями.
Go to top