2013-11-12 3 views
1

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

Есть ли раму или инструмент для тестирования этого случая?

+0

«telnet localhost 12345» где 12345 номер порта – Ingo

+2

_ «как он обрабатывает полученные сообщения, обрабатывать и реагировать правильно, без использования игрового клиента» _ - это звучит так, как вся логика отправки сообщений на сервер находится в игровой клиент. Это нехорошо и не поддается проверке. Извлеките сетевую часть в единую тестируемую библиотеку. Теперь вы можете протестировать клиентский доступ к своему серверу, не запуская клиента, разбор тестового сообщения без отправки сообщений и выполнения нагрузочных тестов без запуска клиента. Сам клиент также использует эту библиотеку. См. Ответ @Lens. – CodeCaster

ответ

1

Если вы хотите сделать это вручную, я бы предложил telnet или, если вы используете Linux, вы можете использовать команду netcat nc.

Если вы хотите что-то автоматическое, например. юнит тест, и вы знакомы с Python, я бы рекомендовал использовать Twisted: Twisted Examples

Надеется, что это помогает

+0

Я попробую Twisted, thankssss !!! – tiboo

+0

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

2

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

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

Затем вы можете использовать свою стандартную платформу единичного тестирования для создания экземпляра вашего объекта сервера (с подходящими макетами), который прослушивает в сети, а затем создает простой клиент, который вы создаете в рамках модульного теста и который анализирует аспекты сервера. Часто вы обнаружите, что есть только небольшое количество вещей, которые вы на самом деле ДОЛЖНЫ проверить, как это. Обычно возникают проблемы установления соединения и завершения, которые вы хотите протестировать как в сети, так и независимо от нее (в любом случае вы можете в любой момент вызывать код установления соединения и разъединения на вашем классе сервера от обычного модульного теста).

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

Я, как правило, работаю над всеми этими вещами с самого начала; см. this blog post для более подробной информации.

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