3

Не забывайте о нагрузочном тестировании…пожалуйста

Николай Лузгарев
19 декабря 2013 года

Плотина под нагрузкой

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

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

Почему необходимо нагрузочное тестирование

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

— «Пользователи жалуются, что странички загружаются очень медленно»

— «После клика на кнопку оформить заказ, страница не грузится»

— «Вечером сайт перестает работать»

Чтобы с вами такого не случилось, вот те вопросы, на которые себе необходимо ответить, прежде чем считать, что работа закончена:

— Знаете различие между запланированной посещаемостью и той, что на самом деле?

— Когда сайт создавался в ТЗ было указано, что сайт должен корректно работать с Х посетителями в день. Это правда на данный момент? У вас есть реальные цифры о производительности?

— Если ваш сайт посетит одновременно тысяча пользователей, что они увидят на странице?

— Если ваш сайт перестанет справляться с нагрузкой, он вернется в нормальное состояние, когда она спадет?

Следует понимать, что тестирование не закончено до тех пор, пока вы не убедитесь, что сайт не просто работает, а стабильно работает, например, при 1000 посетителях в час.

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

Как мы внедрили нагрузочное тестирование

Мы начали с очень простых сценариев, которые просто могут ответить на вопрос — «Сколько посетителей может выдержать интернет-магазин, который мы только что создали?» Тестировщик создавал нагрузку, смотрел появляются ли ошибки, а сисадмин говорил: «Хахаха. Даже не почувствовал» :)

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

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

Apache Jmeter

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

В нашей практике мы решаем с помощью JMeter 95% процентов задач по нагрузке и некоторые виды функционального тестирования.

Один из лучших способов внедрить Jmeter — это пройти начальный курс на русском языке Алексея Баранцева. Там же даны необходимые знания для базового анализа полученных результатов.

Также есть две книги на английском:

http://www.packtpub.com/performance-testing-with-jmeter-2-9/book

http://www.packtpub.com/beginning-apache-jmeter/book

Хороший туториал на Хабре:

http://habrahabr.ru/post/84190/

Siege

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

Siege работает под Linux, нетребователен к ресурсам и доступен во многих репозиториях.

Скачать можно с сайта http://www.joedog.org/siege-home/

В качестве первого учебного пособия вполне хватит замечательной статьи на Хабре http://habrahabr.ru/post/65128/ .

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

Яндекс.Танк

Яндекс в 2012 году очень порадовал тестировщиков, открыв публичный доступ к своему внутреннему инструменту. Главным козырем Яндекса является хорошая производительность. Хотя Яндекс.Танк не так хорошо документирован, как Jmeter, не умеет рисовать графики и группировать данные (зато может экспортировать полученные данные практически в любой пакет для анализа), его вряд ли можно порекомендовать как утилиту для первого ознакомления, так как единственным источником обучающей информации для работы будет не очень богатая официальная документация, форум и несколько публикаций.

Тем не менее мы используем его в работе, когда нам нужно больше данных, чем может предоставить Siege и нагрузка, которую не может предоставить Jmeter.

Итоги

Внедрить нагрузочное тестирование это не прихоть и не сложно. Это важная часть работы тестировщика, про которую часто забывают. Сам был свидетелем, когда после переноса на новый хостинг сайт падал после нагрузки в 1,7 запроса в секунду. :)

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

Метки: ,

3 комментария к записи «Не забывайте о нагрузочном тестировании…пожалуйста»

  1. Никита Зимин,

    Непонятно причём тут картинка с аварией на СШГЭС. Ну то есть аналогия с напором на ГЭС понятна, непонятно почему именно эта авария.

    • Николай Лузгарев Николай Лузгарев,

      Никакой задумки в этом нет.

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

  2. Андрей Зенков,

    Статья довольна полезная, ведь и в правду многие даже не заморачиваются над продуманным тестированием сайта, и да, конечно же, если он ещё и задумывался как маленький веб-проект. А насчёт ссылок на литературу и программы вообще отдельный плюс))

Оставить комментарий