Тестирование настольных приложений - PullRequest
1 голос
/ 19 ноября 2009

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

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

Есть идеи?

Ответы [ 3 ]

1 голос
/ 19 ноября 2009

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

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

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

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

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

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

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

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

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

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

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

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

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

1 голос
/ 19 ноября 2009

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

JProfiler

VisualVM

JConsole

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

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

и откройте файл, например, Консоль HPjmeter .

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

0 голосов
/ 19 ноября 2009

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

...