2009-11-19 5 views
1

У меня есть желание оценить приложение Client/Server (GUI), написанное на Java, на платформе Windows. Я делаю это, поэтому я могу определить, где платформа приложения будет ломаться при масштабировании до 100 пользователей. Это не мое приложение, у меня нет исходного кода.Настольные приложения Benchmarking

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

Любые идеи?

ответ

1

Ваш вопрос немного неоднозначный. Я думаю, вы пытаетесь сказать, что у вас есть одно настольное приложение с множеством внешних подключений («Пользователи») с использованием чего-то другого (веб-браузер?).

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

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

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

Если мое предположение верно, я мог бы предложить вам несколько советов, - может быть, если вы вывесили немного больше информации

---------------- ------ Редактировать после комментария

Что бы я сделал, это попытаться создать минимальное постоянное сообщение xml, которое вы могли бы отправить (например, тот, который вы опубликовали), затем написать программу для открытия сокета, отправить xml и закройте его. Возможно, вам придется обрабатывать ответ сервера.

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

Если нет (иногда каждому «клиенту» нужен другой IP-адрес), вы можете использовать Linux (это нелегко сделать в Windows), чтобы действовать так, как если бы у одного окна были разные IP-адреса. Я думаю, что вы даже поставляете IP-адрес в своей программе, когда вы открываете порт, но прошло несколько лет, так что это немного малопонятно.

Решение # 2 (Мысленно проще, но вручную интенсивно):

Если у вас есть куча клиентов, сидящих вокруг, вы можете управлять вашей программы с интересным инструментом под названием «AutoHotKey». Это взломанный инструмент, но это потрясающе для управления программами GUI. Вы можете записать один сценарий AHK, который зацикливается и вызывает некоторые действия на сервере, копирует его на все компьютеры и запускает его на каждом из них.

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

Если вы хотите, чтобы это сработало, однако вы его решите, положите его на свое резюме.

+0

Извините. Вот мой ответ. У меня есть платформа управления запасами, коммерческое программное обеспечение. Поставщик, вероятно, не тратит достаточно времени на тестирование своей системы. Приложение находится в базе данных Firebird, сервер - это приложение Java, которое обрабатывает транзакции в базе данных по XML-сокетам, синтаксис XML не известен, его обработано через BASE64IthinkRepresentation. Клиент представляет собой графическое приложение рабочего стола, которое взаимодействует с пользователями системы. Я хочу протестировать производительность сервера, но сейчас я знаю, что это GUI клиента как интерфейс. –

+0

Gotcha, звучит хорошо. В моем сне прошлой ночью я полностью проигнорировал это программное обеспечение как XML SDK, он может не полностью подражать всем функциям настольного клиента, но, по крайней мере, это механизм, который я могу создать! Это должно быть сделано. Благодаря! –

+0

Спасибо, что напомнили мне использовать предоставленный XML/SDK. Я смог построить тестовую концепцию концепции, и теперь я занимаюсь разработкой простого в использовании инструментального пакета! –

1

Вы можете профилировать приложения, используя различные инструменты управления производительностью Java:

JProfiler

VisualVM

JConsole

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

java -Xloggc:D:/log/myLogFile.log -XX:+PrintGCDetails myProg 

и открыть файл с чем-то вроде HPjmeter Console.

Не зная больше о приложении, которое вы профилируете, трудно дать совет о том, с чего начать. С любым приложением, выполняемым на любом компьютере, у вас есть 4 квадранта для рассмотрения: CPU, Memory, I/O, Network. Иногда улучшение масштабируемости в 1 квадранте обнаруживает узкое место в каком-либо другом квадранте. Обычно я начинаю с рассмотрения 10 лучших методов, которые мое приложение тратит на выполнение своего времени, и спрашивает, могу ли я как-то улучшить алгоритмы в этих методах.

+0

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

+0

Чтобы имитировать нагрузку, вы можете использовать Jakarta JMeter. –

0

Yourkit, вероятно, лучший Java-профайлер на рынке прямо сейчас. Это не бесплатно, но является исключительным инструментом.

Смежные вопросы