"Младших тестировщиков производительности" не бывает. Зато бывают люди, которые начинают заниматься тестированием производительности. (с) Скотт Барбер (aka The Perf Guy)
В тестировании компьютерных программ есть "общедоступная" область функционального тестирования, куда доступ открыт всем желающим, и есть целый ряд областей с достаточно высоким "порогом входа", и тестирование производительности находится в их числе.
Для этого вида тестирования требуется хорошее владение оружием, его голыми руками не возьмёшь. Во-первых, нужно само оружие -- тестирование производительности обязательно требует умения пользоваться специальными инструментами. Во-вторых, нужно тщательно изучить соперника -- необходимо хорошее понимание протоколов взаимодействия тестируемой программы с внешним миром и её внутренней физической и логической архитектуры. Ну и конечно же нужно владеть приёмами -- знать какую нагрузку и как подать на тестируемое приложение, и на что смотреть, чтобы выявить проблемы с производительностью.
На тренинге мы будем учиться обращаться с этим оружием:
- познакомимся с инструментами, предназначенными для генерации нагрузки и для мониторинга различных характеристик производительности,
- освоим способы использования этих инструментов для генерации нагрузки различного вида,
- изучим типовые архитектурные шаблоны построения приложений и связанные с этим источники потенциальных проблем с производительностью,
- рассмотрим способы выявления проблем с производительностью на основе анализа результатов мониторинга.
Однако это только первый этап. В тестировании производительности не только высокий входной порог, достаточно трудно забраться и на вторую ступеньку.
Во второй части тренинга, предназначенной для тех, кто уже овладел простыми приёмами тестирования производительности, мы рассмотрим более глубоко девять основных принципов тестирования производительности, выделенных Скоттом Барбером:
- Контекст -- внешний контекст проекта, в рамках которого выполняется тестирование производительности,
- Критерии -- что можно рассматривать как успешный результат с точки зрения пользователей, бизнеса, проекта, системы,
- Планирование и проектирование тестов -- какие тесты нужны, как их можно сделать и сколько это потребует времени и ресурсов,
- Настройка -- подготовка тестового стенда, а также инструментов для генерации нагрузки и мониторинга,
- Реализация тестов -- разработка тестов в соответствии с ранее задуманным планом,
- Исполнение -- запуск тестов, мониторинг и сбор данных о характеристиках производительности системы,
- Анализ результатов -- оценка качества и достоверности собранных данных и выявление проблем с производительностью,
- Консолидация результатов -- обработка данных для более удобного представления,
- Итеративный подход -- повторение тестирования на разных этапах или с разными вариациями.
Подробная программа курса:
Первое занятие (1 ступень)
1. Введение в тестирование производительности -- зачем мы его проводим и какие ошибки мы можем обнаружить. 2. Три базовые составляющие: создание нагрузки, сбор метрик, анализ результатов. 3. Краткий обзор инструментов генерации нагрузки. Более близкое знакомство с инструментом JMeter. 4. Создание простого генератора нагрузки -- запись действий пользователя и воспроизведение записанного сценария в несколько потоков. 5. Отладка сценария -- как понять, что там происходит на самом деле. 6. Сбор основных метрик -- время отклика, пропускная способность, количество отказов. 7. Анализ собранных результатов, подготовка отчёта.
Второе занятие (1 ступень)
1. Снова о главном -- зачем мы проводим тестирование производительности и какие ошибки мы можем обнаружить. 2. Требования к производительности систем. Анализ требований и определение целей тестирования. 3. Что такое модель нагрузки и как она соотносится с целями тестирования. 4. Перевод целей в практическую плоскость -- проектирование тестовых сценариев и их компоновка в соответствии с моделью нагрузки. 5. Тестовые данные, параметризация и корреляция тестовых сценариев. 6. Дополнительные элементы сценария -- задержки между запросами, верификация ответов. 7. Дополнительные метрики -- сбор данных о производительности операционной системы, сервера приложений, СУБД.
Третье занятие (1 ступень)
1. И ещё раз о главном -- зачем мы проводим тестирование производительности и какие ошибки мы можем обнаружить. 2. Немного об архитектуре распределённых систем и об источниках проблем с производительностью. 3. Ложно-положительные и ложно-отрицательные результаты, возможные причины их возникновения. 4. Типовые модели нагрузки -- на обнаружение какого рода проблем они нацелены. 5. Сложные тестовые сценарии, различные протоколы взаимодействия с тестируемой системой. 6. Распределённое тестирование, генерация нагрузки из нескольких источников, сбор метрик в распределённой среде. 7. Интерпретация результатов -- какие здесь подстерегают проблемы и как их избежать.
Четвертое занятие (2 ступень): работа с требованиями
Главная тема этого занятия – научиться определять цели тестирования, в данном случае тестирования производительности. Для этого необходимо, во-первых, установить контекст, в котором выполняется тестирование. Помимо требований, предъявляемых к тестируемому продукту со стороны пользователей, контекст может включать в себя дополнительные аспекты, такие как проектные ограничения (сроки и ресурсы) и системные ограничения (доступное оборудование). Результатом анализа контекста являются критерии, достижение (или не достижение) которых следует проверить средствами тестирования. Именно эти критерии и определяют постановку целей, вплоть до постановки вопроса о том, нужно ли вообще выполнять тестирование производительности. Достижение критериев тестирования часто бывает достаточно сложно оценить, потому что они слабо формализованы. В этом случае помогает применение эвристического подхода к построению оракулов, которые будут использоваться при выполнении тестов для определения правильного и неправильного результата. Цели являются определяющими факторами для планирования и проектирования тестов. Можно считать, что проектирование тестов является продолжением анализа требований, поскольку оно включает в себя анализ использования системы и определение характера нагрузки на различные части системы при различных способах её использования. Кроме того, на этапе проектирования тестов мы можем оценить, насколько полно мы можем достичь поставленных целей, и, возможно, скорректировать их с учётом уточнённого контекста.
Пятое занятие (2 ступень): реализация и запуск тестов
Большая часть первой ступени была посвящена именно этому вопросу – как реализовать тесты, как их запустить, как собрать результаты, используя инструмент JMeter. На второй ступени мы продолжим эту тему, но без привязки к конкретному инструменту, на концептуальном уровне. Сначала мы вкратце обсудим, чем следует руководствоваться при выборе инструментов и при организации тестового стенда. Затем мы сформулируем принципы, которые нужно учесть при создании тестовых скриптов, и определим обобщенный алгоритм построения этих скриптов. Наконец, мы поговорим об этапе выполнения тестов и о том, как можно ещё варьировать уже готовые тесты, чтобы получить больше интересных результатов, а также чем заняться тестировщику, пока тесты выполняются.
Шестое занятие (2 ступень): анализ результатов
Как понять, достаточно ли собранных данных для проведения анализа? Как отсечь «лишние» данные, которые могут исказить картину? Как вместе с лишними данными не выбросить ценную информацию? Как понять, является ли результат случайным или закономерным? С какой точностью производить измерения? Какие отклонения можно игнорировать? Как сравнивать данные, полученные в разных запусках? Все эти вопросы в конечном итоге должны привести нас к ответам, сформулированным в терминах целей тестирования, о которых мы говорили в самом начале – достигнуты ли поставленные критерии? Не меньшую важность, чем корректность анализа, является наглядность и понятность представления результатов. Поэтому мы поговорим также о различных способах визуализации данных в виде таблиц и графиков, о том, как это представление влияет на восприятие больших объёмов числовых данных, и о том, как можно пополнить эти представления вербальными пояснениями для повышения их понятности.
Формат курса
Онлайн-тренинг, состоящий из двух ступеней разной сложности, с еженедельными онлайн-занятиями и практическими домашними заданиями.
Каждая ступень состоит из трех занятий. Онлайн-занятия состоятся каждый четверг с 15-00 до 16-30.
Каждый участник курса будет получать обратную связь от тренера по результатам выполнения домашнего задания. Наиболее типичные ошибки будут разбираться на онлайн-занятиях.
Между занятиями в любой момент можно задать вопрос тренеру в форуме.
В случае, если Вы пропустите какое-либо занятие, Вы получите его запись и домашнее задание.
Технические требования
Онлайн-тренинг организуется с использованием системы DimDim.
Для участия требуется браузер c установленным плагином Adobe Flash и достаточно быстрое Интернет-соединение. Проверить пропускную способность своего соединения можно здесь: http://www.dimdim.com/support/dimdim_tools.html (слева инструмент Bandwidth Checker).
Необходимы наушники или другая акустическая система, чтобы слушать ведущего. Микрофон не требуется, участники задают вопросы письменно в чате.
В случае возможных технических сбоев с ведущим можно будет связаться через систему Skype.
Условия участия
Занятия первой ступени будут проходить 19 августа, 26 августа, 2 сентября.
Занятия второй ступени будут проходить 16, 23, 30 сентября.
Стоимость участия в одной ступени – 2600 рублей, в двух 4200 рублей.
Количество мест ограничено, перед оплатой квитанции или оформлением договора обязательно зарегистрируйтесь.
Для того, чтобы зарегистрироваться необходимо отправить письмо с указанием названия тренинга и ФИО на адрес trainings@software-testing.ru
Информация для физических лиц:
Услуги оказываются на основании публичного договора оферты. Ознакомиться с договором можно ЗДЕСЬ.
Оплата через банк. Скачать квитанцию для оплаты можно ЗДЕСЬ (квитанция универсальная на все наши семинары и тренинги, в неё необходимо вписать нужную сумму и в графе наименование платежа указать дату и название тренинга).
Информация для юридических лиц:
По вопросам оформления договора и выставления счета на оплату обращайтесь по адресу trainings@software-testing.ru
Возможна оплата участия на условиях публичного договора оферты. Ознакомиться с договором можно ЗДЕСЬ. По вопросам выставления счета на оплату обращайтесь по адресу trainings@software-testing.ru |