среда, 23 апреля 2014 г.

SQA Days 15. Обзор докладов из секции функционального тестирования

Во втором обзоре докладов SQA Days-15 рассмотрены следующие:
·         Дмитрий Химион "Тестирование игровой механики в компьютерных играх"
·         Наталья Голодюк "Quality Assurance в условиях тотального A/B тестирования"
·         Сергей Остапенков «Обеспечение качества: практические советы»

Дмитрий Химион "Тестирование игровой механики в компьютерных играх"

Cпасибо Дмитрию за введение новичков в курс дела. Его доклад о самых-пресамых азах тестирования компьютерных игр - терминология, несколько небольших примеров и характеристика навыков тестировщика игр.
Очень жаль, что только 40 минут, или вот если бы... Рина Ужевко дополнила SQA Days-15 своим опытом и докладом, то мир игр стал бы ещё более осязаем.
Записываю, что переписала себе в блокнотик, чтобы и самой лучше запомнить, и надеюсь кому-то прочитать будет полезно.
Терминология.
Игра - это последовательность интересных выборов. (с) Сид Мейер, гейм-диайнер.
Игра состоит из контента и игровой механики.
Я попыталась изобразить все термины, что упоминались на одной картинке.

 
Компоненты игры и их взаимодействие


Игровая механика - это набор правил, по которым работает, игра и математическая модель, которая стоит за этими правилами.
Дизайн уровней (level design) - это создание игровых уровней из элементов оформления и связанного с ними игрового процесса на основе существующих игровых механик.
Обратная связь (feedback) – это реакция игры на действия игрока, передаваемые игроку в визуальной, звуковой или иной форме.
Gameplay – это процесс взаимодействия игрока с игрой посредством игровых правил и возможностей.
Игровой баланс - это качественная характеристика определяющая уравновешенность между собой равнозначных игровых элементов и предоставляемых игроку возможностей выбора. Игровой баланс - субъективная характеристика.

Кто же может стать тестировщиком игр?
По мнению Димы тестировщик должен обладать следующим набором характеристик:
·         Здравый ум.
·         Большой игровой опыт.
·         Умение считать.
·         Аналитический склад ума.
·         Быть от части гейм-дизайнером.

Наталья Голодюк «Quality Assurance в условиях тотального A/B тестирования»

A/тестирование (оно же мультивариантное тестирование) применяется, как это ни банально, в мультивариантном ПО – ПО, в котором одна и та же фича сначала реализуется разными способами с целью исследования рынка, а затем после сбора статистики выбирается лучший вариант (тот, что приносит больше продаж, или более удобен для пользователя и т.п.). Пользователи могут распределяться между вариантами реализации случайным образом либо по некоторому заданному правилу.
Рекомендации по тестированию на самом деле довольно привычные:
·               Само собой проверять реализацию требований и корректность выполнения логики каждого из вариантов
·               Проверять процентное распределение пользователей по вариантам реализации
·               Проверить, что пользователь не может увидеть в рамках одной сессии сразу несколько вариантов реализации
·               Проверить, что собирается верная статистика по каждому из вариантов
·               Автоматизировать стоит уже итоговый вариант
Куда важнее с самого начала правильно организовать тестирование. И самое важное - нужно как можно раньше договориться о реализации способа переключения между вариантами и реализовать его. Например, ребята для своих web-приложений добавили параметр в URL, изменяя который можно переключиться на соответствующую версию.
Много информации по этой теме есть на Wiki.

Сергей Остапенков «Обеспечение качества: практические советы»

Доклад Сергея я слушала в рамках встречи-подготовки к конференции, которую мы организовывали в QA Club Minsk, поэтому на конференции не ходила на выступление. Знаю, что презентация – это полноценный набор самостоятельных практических идей по улучшению качества. Всем, кто заинтересовался советую изучать досконально саму презентацию. Там всё, что надо.

воскресенье, 20 апреля 2014 г.

SQA Days 15. Обзор докладов по тестированию мобильных приложений, кроссплатформенному и кроссбраузерному тестированию

Лично мне SQA Days #15 очень понравилась: профессиональная атмосфера, полезное содержание докладов, отличная фан-зона (особенно громкая виртуальная реальность, заставляющая дрожать коленки)!
Несколькими статьями пройдусь по самому, на мой взгляд, полезному и интересному из того, что услышала, как восприняла, сопровождая информацию где-то своими комментариями.
Начну с темы мобильных приложений, кроссплатформенного и кроссбраузерного тестирования и конкретно следующих докладов:
  • Наташа Брич "Непереносимая переносимость кроссплатформенных приложений на примере десктоп приложений"
  • Юлия Горлова "Лайхаки ручного тестирования на мобилках"
  • Таисия Рыбак "Как оптимизировать тестирование мобильных приложений"
  • Алёна Пономаренко "Ошибки при проверке внутренних платежей Android-iOS и их решение"
  • Максим Белявский "Подготовка апдейта мобильного приложения "Одноклассники"
  • Дмитрий Штепура "Кроссбраузерное тестирование с популяризацией HTML5 и CSS3. Internet Explorer, не такой как все"

Наташа Брич "Непереносимая переносимость кроссплатформенных приложений на примере десктоп приложений"

Наташа рассмотрела несколько задач тестирования и как они выполняются на ее проекте. Ключевые моменты доклада я собрала в таблицу.
Задача тестирования
Что включает в себя
Где проводить тесты? Как сэкономить время?
Инсталяционное тестирование
Проверку ресурсов
Запуск инсталляционного пакета
Тестирование мастера установки
Список файлов
Проверка прав доступа к файловой системе
Регистрация расширений (windows)
Деинсталляция приложения
...
Время не экономится. Проводится весь набор тестов на всех платформах
Тестирование интерфейса
Проверяется расположение всех элементов
Проводится на всех ОС.
Время экономится за счет совмещения с функциональным тестированием.
Функциональное тестирование
1. В первую очередь тестируется основная платформа1:
a) Прогоняют все use cases
b) Проводят негативные проверки на невалидный ввод данных
c) Воспроизводят старые ошибки
2. Формируется список багов  (список1) найденных на платформе1.
3. Проверяют платформу2:
a) На платформе2 проверяют непрошедшие тесты, т.е. воспроизведениние багов из списка1.
b) Прогоняют все use cases (кроме тех, что проверены в пункте 3.a).
c) Проводят негативные проверки на невалидный ввод данных (кроме тех, что проверены в пункте 3.a)
d) Воспроизводят старые ошибки (кроме тех, что проверены в пункте 3.a)
4. Формируется еще один список багов (список2), найденных только уже на платформе2 (по шагам 3.b, 3.c, 3.d).
5. На платформе1 проверяется наличие багов, найденных на платформе2 (т.е. из списка2)
На первой ОС проводится полное тестирование.
Время экономится на второй и последующих ОС, где в первую очередь проверяются непрошедшие ранее тесты.
Регрессионное тестирование
проведение смоук
перепроверку багов с высшей критичностью и приоритетом

Проводится перед релизом на всех заявленных ОС.



Юлия Горлова "Лайхаки ручного тестирования на мобилках"

Отличный легкий доклад и отличный докладчик! Юля дала простые и хорошие советы по нескольким темам.
Администрирование девайсов:
·               В парк выбирайте:
o      не менее двух устройств на каждую существенно отличающуюся версию операционки.
o      плюс девайсы, на которых были замечены какие-то специфические проблемы
o      плюс устройства, которые сами по себе чем-то примечательны - популярные модели, планшеты и так далее.
·               Каждый тестировщик, когда собирается идти домой,ставит все телефоны, с которыми он работает, на зарядку, т.о. гарантируют рабочее состояние каждого из телефонов.
·               Создайте стойку для хранения девайсов, на которую "привиты" куча зарядок и больше ничего лишнего.
·               Ведите электронную таблицу, в которой перечислены все ваши устройства и их технические характеристики (название модели, размер экрана, количество памяти, процессор, установленная ОС, идентификатор телефона и т.п.). Здесь помечают, если телефон взяли в другой отдел.
·               Для "быстрых займов" девайсов, ведите бумажный журнал, в котором, как на вахте пусть записываются те, кто взял девайс, какой девайс и когда. Как показала практика, этот вариант более рабочий, чем электронный, ссылку на который часто лень или некогда или забывают искать.
·               Вместо красивых обоев с природой и котиками на рабочем столе телефона используйте белый фон с надписью о типе девайса и ОС. Это начнет экономить время на поиск нужного девайса.
Управление билдами:
·               Т.к. пользователи любят нативный дизайн, то для каждой из платформ разрабатывается свое приложение, а не одно единственное кроссплатформенное.
·               Для каждой платформы используют разных билд-серверы, чтобы если вдруг один сервер сломается, то была возможность проверять другую платформу.
·               Билды устанавлиют через QR коды, ведущие на инсталяк билда. Это экономит время.
Сбалансированное тестирование:
·               В этой секции были сделаны примеры конкретно для приложения 2ГИС, но в целом это довольно общие вещи:
·               Фичу нужно тестировать параллельно на двух платформах.
·               Для Android планировать тесты на расход батареи.
·               Для Android из-за миллиона экранов пришлось что то придумывать (в 2ГИС разработали стандартные темы).
·               Android. Проверки всех сборок одного и того же билда, созданные под разных вендоров, включают проверки на запуск и различия (метки вендоров и WebAPI-ключи).
·               На iPad делают сессии свободного тестирования, в которых проверяют вёрстку и особенно при поворотах экранов.
·               iOS. Когда истекают сроки, то сначала отправляют билд в AppStore, а потом проводят регрессионные тесты. Если найдется баг, то перезаливают. Мы делаем также. Очень рабочая схема.
·               iOS. Если очень-очень нужно выпустить вчера, то пишут письмо в AppStore и чаще всего на подобного рода письма откликаются положительно.
Бета-тестирование:
На Android ребята опробовали схему официальную схему бета-тестирования через Google comunities и Google Play. По сути, тем кто зарегистирировался в гуглгруппе стало доступно скачивание более новой версии. И эти ребята смогли написать в 2ГИС спецефические проблемы, обнаруженные на своих девайсах.
Текущая поддержка:
·               Самый главные посыл - это постоянно отслеживать комментарии к приложениям на соответствующих рынках. Если что-то не так, то пользователи сразу же об этом напишут.
·               Ну а также встраивать формы обратной связи в само приложение. При этом письма в отдел поддержки должны приходить сразу со всей технической и отладочной информацией о девайсе (модель, ОС, экран, процессор, текущий тип связи и т.п.)

Таисия Рыбак "Как оптимизировать тестирование мобильных приложений"

Таисия - представитель Hewlett-Packard и посему рассказывала о новом облачном решении от HP для тестирования мобильных приложений на реальных девайсах - HP UFT MOBILE (HP Unified Functional Testing Mobile). Собственно, само решение - это сервис, предоставляющий доступ к парку девайсов.
Была также кратко затронута тема нагрузочного тестирования мобильных приложений.
Ценителям решений от HP, не знакомым еще с этим инструментом, будет полезно подобное введение.

 

Алёна Пономаренко "Ошибки при проверке внутренних платежей Android-iOS и их решение"

Доклад - этакая база для тех, кто начинает тестировать платежи (in-app purchases) на Android и iOS. Алёна в докладе отвечает на такие вопросы как:
·               как создать тестовый аккаунт?
·               списываются ли деньги?
·               как проверить что покупка совершена успешно?
·               что делать, если, вроде всё правильно делаешь, но система выдаёт странного характера ошибки типа "такого пользователя не существует"?
Отныне всем, кто хочет начать тестирование iOS приложений буду рекомендовать посмотреть две презентации - свою "Тестирование iOS приложений. С чего начать?" и Алёнину про in-apps purchases.

 

Максим Белявский "Подготовка апдейта мобильного приложения "Одноклассники"

О чём рассказ, в принципе, понятно из заглавия. У "Одноклассников" есть, чем поделиться.
Особенно запомнилось:
·               Тестируют прототипы. Я считаю, что наличие этого этапа отображает зрелость компании и её процессов. Молодцы.
·               История реальная история про юзабилити тестирование и использование техники eye-tracking  (когда за глазами испытуемого следят).
·               Особенности выкладки приложений в магазины: iOS / WinPhone - выкладка сразу всем пользователям, а на Android используют возможность постепенной выкладки - нескольким процентам пользоватлей.
·               Пока приложение проходит ревью, ребята готовят новый выпуск с багофиксом и если что-то ломается после выхода, то сразу же выпускают новую исправленную версию.
Мне кажется это крутой схемой (особенно для iOS), т.к. таким способом можно пытаться убивать двух зайцев - сначала работать над обновлением, а потом, пока неделю приложение находится в очереди на ревью, работать над исправлением багов и по только что выпущенному функционалу и по тем багам, на которые забили, упс... :) по тем, которые "забыли" в дебрях трекера из-за более приоритетных задач.

 

Дмитрий Штепура "Кроссбраузерное тестирование с популяризацией HTML5 и CSS3. Internet Explorer, не такой как все"

Я на докладе не присутствовала, но эта статья будет неполной без его упоминания, т.к. именно этот доклад занял первое место по мнению слушателей.

вторник, 1 ноября 2011 г.

Про профессиональную пригодность


Как уже упоминалось, решила провести курсы по тестированию. И попросили вчера девочку заболевшую заменить. Прихожу на занятие. Группа вполне адекватная. Но одна жженщина меня поразила до косточки в пятке...
Нужно было автоматизировать тест-кейс с помощью Selenium IDE. Шаг первый: "Откройте yandex.ru"
Сидит... смотрю что то не так.. Подходжу спрашиваю:
- Как дела у Вас?
 - Вот тут написано... это что мне делать нужно?
- Это нужно пройти по этому адресу в браузере
- ???
- Ввведите вот это в адресную строку в браузере.
- ??? Это сюда?, - дрожащими руками кликает в файрфоксе в поле поиска, что справа от адресной строки...
Где-то ещё по пути к адресной строке, мы обсудили, что из всего открытого на компьютере есть браузер.

Но окончание занятия меня порозило ещё больше. Сохраняли написанный тест. Открылось стандартное виндошное окошко Save As.. Смотрит на него.. чё-то пытается кликнуть куда-то. Я смотрю не понимаю, что там такое происходит..  Мужчина, сосед по парте, благо нарушил эту глупую ситуацию:
- Чтобы сохранилось, нужно имя ввести.. Имя файлу.. слово.. в поле Имя файла.. ниже.. еще ниже.. ага.. здесь.

Как мне кажется, у многих складывается мнение, что  тестирование – это просто лёгкие деньги. Ничего особо знать не нужно. Мышкой кликай – и всё.
Очень часто в последнее время слышу «брошу свою работу – пойду в тестировщики». Реально – не жалко, идите. Но неужели вы не пониманиете, что как минимум компьютерная грамотность пусть даже без знаний программирования, должна присутствовать??

А ещё психология...
Прособеседовав довольно большое количество кандидатов я осознаю вмеми возможными рецепторами насколько всё таки важны те самые замусоленные всеми качества тестировщика:  внимательность к деталям, любознательность,  ответственность, аналитическое мышление..
Первый раз в жизни вчера отказала отличнейшнему кандидату с технической стороны, но с психологической - нам не подходящему.  И я уверена в своём решении, потому что психология - это правильно.  Мне, конечно, повезло - в human resources у нас девушка-психолог. Без нее было бы сложнее. Я очень многому у неё учусь.  
И обещаю, что если я всё таки созрею на свой  тренинг-центр, я для новичков буду вначале проводить тест на проф пригодность и только потом брать на курсы.

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

воскресенье, 23 октября 2011 г.

Неожиданные открытия


С ролью руководителя отдела тестирования, в принципе, уже сжилась давновато. Уж не так трепещу как раньше, хотя имею огромный список чего мне здесь нужно развивать.
Недавно определили меня бизнес-аналитиком на проект. Аналитика всегда мне нравилась.. да..
К тому же в виду определённых обстоятельств, выполняю некоторые функции прожект-менеджера.
И в конце то концов, у меня сейчас есть QA Club Minsk.

Пыталась сконцентрироваться на чём-то одном. Пыталась всё вместе, но всё равно уже очень давно подметила, что не получаю удовольствия от работы.
Однажды вечером нашла старую визитку одного человека. Посмотрела, улыбнулась и отложила в сторону. А на следующий день он позвонил. Сейчас я веду курсы по тестированию.
Вот уже почти месяц мои субботы и воскресенья посвящены глубокому   изучению каких-то уже давно заезженных тем, поиску наиболее лёгкого пути их изложения, а по вечерам – занятиям. И вы не поверите, это именно то наслаждение, которое я так давно искала – этот безмерный позитив от работы (которая на самом деле для меня совсем не работа), что я получаю выходя с занятий в половине десятого вечера субботы и вдыхая уже морозный осенний воздух, не передать словами.

пятница, 13 мая 2011 г.

Тестирование производительности

Эта статья написана новичком, человеком, который не занимался нагрузочным тестированием, но очень пытался понять: сходил на тематическую встречу QA Club Minsk и очень много лазил в интернете, пытаясь как-то систематизировать знания. Пост оформлен как FAQ по тем вопросам, ответы на которые, вероятно, могут быть полезными совсем новичкам в этом деле:
·         Что такое тестирование производительности?
·         Что такое автоматизированный нагрузочный тест или тест производительности?
·         Где взять тестовые сценарии для проведения тестирования производительности?   
·         Инструменты нагрузочного тестирования.
·         Настройки и возможности тестов.
·         Что нужно знать, чтобы стать специалистом по тестированию производительности?
·         С чего начинать, когда задание по тестированию производительности формулируют как «система должна быть производительной» или «проведите нагрузочное тестирование»?
·         Как организовать тестовую среду.
·         Пример отчёта о проведении нагрузочного тестирования.

Ошибки в изложении возможны – потому комментарии только приветствуются. Не судите строго. =)

Общее

Тестирование производительности – это отдельный вид тестирования, объектом которого является производительность приложения. Т.е. это вид тестирования, направленный не на проверку, например, корректности работы функциональности, как при функциональном тестировании, а на проверку скорости работы, на получение информации о затрачиваемых ресурсах системы или её частей при определённых условиях (например, заданное количество пользователей, их действия, длительность работы системы в целом и т.д,).
В зависимости от того, какая ставится цель у тестирования производительности, или же - на какой бизнес-вопрос должен ответить проводимый тест, можно выделить следующие виды тестов:
·         нагрузочные (load): проводятся для того, чтобы оценить поведение приложения при заданной ожидаемой нагрузке:
·         стрессовые (stress): проводятся с целью оценки поведения системы при превышении стандартной нагрузки. Если к моменту организации нагрузочного тестирования нет никакой информации о производительности приложения, то - как минимум для сбора показателей максимальной нагрузки, будет проведён стресс тест.
·         стабильности (stability, uptime) - то же самое что и load тест, но который длится в течение месяца-двух с целью убедиться в том, что приложение выдерживает ожидаемую нагрузку в течение длительного времени (при проведении uptime тестов наибольшее внимание уделяется использованию ресурсов).

Как типы тестов на встрече назывались rump up тесты и rush hour тесты - это не виды тестирования, но специфические тесты, используемые в рамках проведения того или иного вида тестирования производительности для получения конкретной информации. Более подробно о них - в разделе о настройках тестов.

Что такое автоматизированный нагрузочный тест или тест производительности?

С помощью специального инструмента обычные тестовые сценарии превращаются в некий программный код, который может быть этим же инструментом выполнен. По сути - это эмуляция работы пользователей системы, однако не столько в смысле выполнения конкретных действий в тестируемом приложении (GUI), но скорее в смысле создания нагрузки на сервер, соответствующей работе пользователей в системе. В зависимости от целей тестирования, эти тестовые сценарии выполняются  с различными входными данными и настройками: количество пользователей, скорость их подключения, количество повторений тестового случая,  длительность теста и т.д. и т.п.
Как в тестовом сценарии есть ожидаемый результат, так и в нагрузочном тесте можно установить некие элементарные контрольный точки, в соответствии с которыми определяется успешно или нет прошёл тест. Например:
·         можно установить максимальное время ожидания отклика сервера;
·         можно установить проверку на код ответа сервера (200, 300 и т.п);
·         можно проверить наличие элемента (кнопка, список, текст и т.д.) на странице;
·         и т.д.
Наиболее важными результатам работы теста являются комплексные графики и таблицы, изучая которые, специалисты проводят оценку работы системы и, по возможности, дают рекомендации.

Где взять тестовые сценарии для проведения тестирования производительности?

Обычно тестирование производительности основывается на наиболее часто выполняемых сценариях работы с приложением, источником которых могут быть:
·         заказчик, который знает, как будет использована его система;
·         бизнес-аналитики системы, которые тоже должны понимать, как система будет использована;
·         реальные данные по фактическому использованию системы (если таковые уже имеются);
·         критичные сценарии для бизнеса (грубо говоря, те, на которых заказчик деньги зарабатывает, а в случае проблем - из-за которых в первую очередь деньги потеряет).

Инструменты нагрузочного тестирования

При выборе инструмента важно понимать, что проводя нагрузочное тестирование, мы тестируем не GUI представление нашего приложения, а создаём в первую очередь нагрузку на сервер, который отвечает за необходимую нам функциональность. А средство нагрузочного тестирования просто «внедряется» в их общение. И если оно не понимает язык общения (JDBC / FTP / LDAP / SOAP / JMS / POP3 / HTTP / TCP), то использовать его мы не сможем. Так, например, с JMeter можно протестировать web сервисы и http запросы, но в общение клиента и сервера через tcp/ip протокол внедриться он уже не сможет.

По структуре все инструменты в принципе своём одинаковы и состоят из следующих компонент:
·         recorder – записывает действия, выполняемые пользовате в соотетствии с тестовыми сценариями, и превращает их в программный код;
·         code IDE – среда разработки;
·         generator - та самая штука, которая создаёт виртуальных пользователей, выполняющих описанные тестовые сценарии;
·         analyzer – анализатор показателей-результатов теста.
Инструментов тестирования производительности большое множество, однако на встрече клуба были выделены:
·         Apache Jmeter. Средство бесплатное, что, пожалуй, является главным его достоинством и причиной популярности. Инструмент, в целом, неплохой и, как заявлено, вполне полнофункциональный, несмотря на не самый удобный интерфейс. Вот так выглядит скрипт:


К сожалению, этот инструмент имеет достаточно много проблем и ограничений: как упоминалось выше, он может не поддерживать необходимые протоколы; в нём отсутствуют удобные средства мониторинга; выдаваемые им результаты требуют дополнительной обработки; и он содержит довольно много багов сам по себе (например, в последней версии на текущий день (16 апреля 2011г.) не работает несколько блоков IF подряд).  Однако приятно то, что у данного инструмента есть хорошая поддержка со стороны разработчика: баги не игнорируются и могут исправляться довольно быстро (естественно, определённых severity =)), инструмент вполне активно развивается.
В целом, JMeter - неплохой инструмент для решения не самых больших и не самых сложных задач при скромном бюджете.
·         HP LoadRunner. В отличие от предыдущего инструмента, LoadRunner имеет гораздо больше достоинств, однако наибольшим его недостатком является весьма серьёзная стоимость. Однако если бюджет позволяет, то использование продукта HP будет гораздо более предпочтительным по сравнению с JMeter: LoadRunner имеет более удобный интерфейс, имеет больше возможностей, имеет встроенный мониторинг и предоставляет по результатам выполнения тестов более понятные графики. В целом, на собрании клуба был назван коэффициент 1,5 - во столько раз потребуется меньше усилий при решении одной и той же задачи в LoadRunner по сравнению с JMeter. 

Были также названы, но столь серьёзно не рассматривались:
·         Borland SilkPerformer.
·         Visual Studio Test tools
·         Oracle Automation Testing Suites (OATS).

Кстати, если стоит задача протестировать "производительность клиентской части" приложения (например, скорости выполнения каких-то операций) - то это уже несколько другая история: если нам не надо создавать нагрузку на сервер, то использоваться будут не стандартные средства для проведения тестирования производительности, а, например, можно использовать обычное средство для автоматизации функционального тестирования с добавлением в необходимых местах таймеров.

Настройки и возможности тестов

В зависимости от используемого средства автоматизации тестирования производительности, при запуске тестов могут быть настроены некоторые опции:
·         При старте теста заданное количество пользователей может быть сгенерировано сразу, а может добавляться для нагрузки системы постепенно - «партиями» через определяемые интервалы времени. Такие тесты называются ramp up. Одной из целей таких тестов может быть: с помощью увеличения нагрузки определить пределы возможностей системы. Ramp up тесты могут проводиться как первый этап выполнения тестирования производительности.
·         Может быть установлена длительность тестирования (в минутах, например), а может быть задано количество повторений (итераций) выполнения теста.
·         Тестовый сценарий может быть один, а может быть и их набор. Каждому тесту может быть выставлено процентное отношение количества его использования в общем количестве выполняемых тестов.
·         Может эмулироваться использование различных браузеров и смешанных типов сетевых протоколов - опять же выставляется процентным соотношением.
·         Все тесты из заданного набора могут выполняться по очереди, в установленном порядке, а могут и в случайном.
·         С помощью соответствующих настроек можно провести тест, который называется rush hour: сначала подаётся стабильная стандартная (нормальная, ожидаемая) нагрузка, затем идёт резкое увеличение нагрузки до максимума и возврат к нормальному состоянию. Анализируя результаты теста, следует обратить внимание на показатели до и после скачка - если в этих показателях есть более ли менее значительная разница, то это говорит о наличии в системе проблемы.

Что нужно знать, чтобы стать специалистом по тестированию производительности?

1.    Важно знать основы функционального тестирования.
2.    Опыт автоматизированного тестирования иметь желательно, но не обязательно.
3.    Очень полезно иметь опыт администрирования (знание протоколов, возможность самостоятельной настройки системы, т.д.).
4.    Необходимо научиться хорошо понимать архитектуру приложения.
5.    Аналитический склад ума и знание математики будут необходимы для  анализа результаты тестов, часто представленных в виде сложных графиков и таблиц.
А вот исходный код приложения знать не обязательно - специалисту по тестированию производительности непосредственно с ним взаимодействовать необходимости нет.
Если у вас нет готового специалиста, и вы думаете, кому поручить провести нагрузочный тест – программисту или не имеющему опыта в этом деле хорошему функциональному тестировщику, -  то поручите его тому, кто проявляет к этой деятельности наибольший интерес и у кого есть необходимые для этого навыки и склонности, а так же понимание терминологии, или хотя бы горячее желание всему этому [самостоятельно] обучиться.
Кстати, начинать изучение нагрузочного тестирования можно с изучения словаря (hit, transaction per load, response time, и прочего, что можно увидеть на экране в попытках организовать свои первые запуски теста производительности).

С чего начинать, когда задание по тестированию производительности формулируют как «система должна быть производительной» или «проведите нагрузочное тестирование»?

Попробуйте пойти по следующему пути:
1.    Уточните задачу и её условия:
·         что конкретно нужно узнать: время отклика системы при некой нагрузке, длительности выполнения транзакции, либо максимальное количество пользователей, при работе которых будут выполняться определенные условия (время отклика не более чем время N, сервер отвечает Service Unavailable) и т.д.
2.    Уточните информацию о тестируемой системе:
·         на какое количество пользователей направлено её использование;
·         какие браузеры будут использованы, из каких стран ожидается больше всего пользователей, их соотношение и прочая статистическая информация (при проведении тестирования конфигурации будет важным узнать, какие операционные системы и аппаратное обеспечение будет у большинства конечных пользователей);
·         наиболее часто используемые бизнес-сценарии и то, какие компоненты системы они используют (например, для интернет-магазина это поиск, просмотр каталога товаров, совершение покупки);
3.    Узнайте о том, какое аппаратное обеспечение будет использовано или используется для продакшн серверов. Организуйте такую же тестовую среду.
4.    Узнайте, где находятся реальные рабочие сервера и какова доступная ширина канала. Попробуйте организовать такие же условия.
5.    Выберите инструмент для проведения тестирования. Не забудьте убедиться в том, что он поддерживает протоколы общения клиента и сервера.

Как организовать тестовую среду

На встрече сообщества не рассматривался полностью вопрос организации тестовой среды, но были выделены следующие отдельные моменты:
1.       Лучше всего проводить тестирование на системе, идентичной той, что будет при реальной работе приложения. Масштабировать результат нельзя, как бы ни хотелось и ни мечталось. =)
2.       Каждый элемент системы (база данных, сервер приложения, генератор нагрузки, который забирает очень много ресурсов, и пр.) желательно устанавливать на отдельную машину. Именно таким образом, будет намного проще определить – какой из элементов является «слабым звеном».
3.       Доступная при тестировании ширина канала должна быть адекватна генерируемой нагрузке. В противном случае - результаты тестирования будут некорректными только из-за ограничений по ширине канала. Как правило, всей системе тестирования лучше работать в одной и той же сети, чтобы пропускная способность была максимальной. Тестирование через интернет уменьшает ширину канала.
4.       Для проведения нагрузочного тестирования не рекомендуется использовать виртуальные машины: когда ваша система будет работать на основе реальной «железной» - результаты её работы могут оказаться отличными от результатов тестирования на виртуальных машинах.
5.       При отсутствии или недостатке собственных ресурсов можно использовать внешние специализированные, например, площадки amazon.com (облака). Но помните, что это те же виртуальные машины. Существуют также риски нарушения безопасности, некомпетентности персонала по конкретно вашему приложению или вопросу.
6.       При необходимости провести нагрузочное тестирование, с учетом работы пользователей из разных уголков планеты, можно:
a. Использовать инструменты/сервисы, с помощью которых можно проверить, например, сколько времени будет открываться некая страница из разных точек мира. Примером является сервис http://newrelic.com.
b. Можно поискать дата-центры, имеющие нужное географиеское местоположение, и провести сеансы тестирования, используя их оборудование. Довольно трудоёмкий и дорогостоящий вариант, но результаты его использования наиболее близки к реальным.
c. Обратится к специалистам, проводящим аутсорсинг нагрузочного тестирования.

Пример отчёта о проведении нагрузочного тестирования

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

Спасибо экспертам в вопросе Анатолию Лётычу (Epam) и Дмитрию Тищенко (Itransition) за то, что участники очередной встречи QA Club Minsk смогли с нуля получить представление о нагрузочном тестировании. =)

Автор: Савастюк Наталья. Редактор: Елена Первая. Огромное спасибо за подсказки Масловскому Михаилу и Кныш Надежде.