Как тестировать нагрузки на приложения Flash Media Server?

Это на самом деле трудный вопрос. Мой первый ответ на него заключается в том, чтобы найти толпу пользователей, которая его опробует. Но это не всегда возможно. Если у вас под рукой есть большой сайт со множеством пользователей, которые согласны поиграть с приложением, чтобы вы посмотрели, как оно работает, то это замечательно. Соглашайтесь на такой вариант, некоторые люди сделают подобное тестирование бесплатно за неделю пользования услугами вашего сайта или за нечто подобное, некоторые сделают это просто потому, что им небезразличен сам сайт. Но для большинства это не выход. Так что же можно сделать ещё?

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

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

Производить контролируемое тестирование — это СОВСЕМ НЕ ТО, что производить случайное тестирование, в котором вы по существу лишь нажимаете кнопку «Play» на стороне отправителя, и после того как визуально убеждаетесь, что видео отсылается, а в списке контактов появляется маленькая иконка с камерой, нажимаете «Play» на стороне получателя, чтобы посмотреть это видео, тогда как в списке контактов появляется иконка с глазом, которая говорит другому пользователю, что вы смотрите его видео. Такой гениально простой план рассыпается, если в вашем коде есть изъяны или если он плохо согласован по времени.

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

Существует несколько возможностей увеличить нагрузку. Получите доступ к группе компьютеров и заручитесь поддержкой нескольких друзей, чтобы одновременно запустить несколько экземпляров приложения и посмотреть, что произойдёт. Далее, было бы здорово иметь несколько компьютеров, выполняющих множество экземпляров приложения на одной HTML-странице. Вставьте на одну HTML-страницу около 10 экземпляров, передающих различные flash-переменные (идентификаторы и имена пользователей, и т.п.), а затем пусть работают сами по себе с помощью искусственного интеллекта. Такое тестирование, как правило, будет работать при наличии нескольких хороших компьютеров, которые могут выдерживать нагрузку множества одновременно выполняющихся экземпляров программы. Также это избавляет вас от необходимости открывать десятки экземпляров swf. Если у вас не отключено распределение нагрузки, то вы можете поиграть с размером приложения. Затем понаблюдайте за нагрузкой на сервер и, возможно, организуйте один специальный компьютер, который работает с одним экземпляром приложения, чтобы посмотреть, как он обрабатывает нагрузку от 100 или около того пользователей.

Разумеется, лучше всего, чтобы тестирование проводилось людьми. Нет ничего лучше, чем когда приходят люди и начинают нажимать на кнопки – беспорядочно или немного раньше или позже, чем вы бы от них могли ожидать. Именно тогда изъяны приложения могут проявиться, и они, возможно, начнут давать необычные нагрузки на скрипт и сервер.