Javaを使用してソケットサーバーゲームを開発しています。サーバーが正常に動作するかどうか (受信したメッセージ、プロセス、および応答を正しく処理する方法...) を、ゲーム クライアントを使用せずにテストしたい (重くて完了していない)。クライアントからのメッセージは生のバイナリで暗号化されている可能性があります。
この場合のフレームワークまたはテスト ツールはありますか?
Javaを使用してソケットサーバーゲームを開発しています。サーバーが正常に動作するかどうか (受信したメッセージ、プロセス、および応答を正しく処理する方法...) を、ゲーム クライアントを使用せずにテストしたい (重くて完了していない)。クライアントからのメッセージは生のバイナリで暗号化されている可能性があります。
この場合のフレームワークまたはテスト ツールはありますか?
クライアント サーバー システムをテストする際にはいくつかの手順を実行しますが、ほとんどの場合、この種の作業には "通常の" 単体テスト フレームワークを使用する傾向があります。また、サーバー用の特定のストレス テスト クライアントを作成することもよくあります。これにより、何千もの同時接続が作成され、サーバー上で操作が実行され、期待される結果が得られることが確認されます。
最初のサーバー テストでは、主要なサーバー コンポーネントに対して一連の単体テストを実施する必要があります。メッセージの解析などであり、実際にネットワークを扱うコードからこれらのコンポーネントを分離する必要があります (単体テストですべてをテストできるようにするため)。データをサーバーのメッセージ パーサーにプッシュし、それが正しく解析され、正しいものを呼び出すことなどを確認します。
次に、通常の単体テスト フレームワークを使用して、ネットワーク上でリッスンするサーバー オブジェクトのインスタンスを (適切なモックを使用して) 作成し、単体テスト内でインスタンス化してサーバーの側面をテストする単純なクライアントを作成できます。多くの場合、このように実際にテストしなければならないものはごくわずかです。通常、接続の確立と終了の問題は、ネットワークを使用してテストするだけでなく、ネットワークとは別にテストする必要があります (結局のところ、通常の単体テストからサーバー クラスの接続の確立と切断のコードを呼び出すことができます)。
最後に、プロトコルを理解し、何千ものクライアントでサーバーに圧力をかけることができるカスタム クライアントが必要です。これは、パフォーマンスとスレッドの問題を解決するための最良の方法です。
私は最初からこれらすべてに取り組む傾向があります。詳細については、このブログ投稿を参照してください。
手動で行う場合は、telnet をお勧めします。Linux を使用している場合は、netcat コマンドを使用できますnc
。
単体テストなど、自動化できるものが必要で、Python に精通している場合は、Twisted: Twisted Examplesを使用することをお勧めします。
お役に立てれば