2

プロジェクトのサーバー側にノンブロッキング IO システムを作成しています。実際の実装は重要ではありません (気にするなら Java NIO です) が、ソケット通信をプログラミングする際に細心の注意を払わなければならない微妙な問題に非常に戸惑っています。私の知識は多くの分野で不足しているため、物事が「うまくいかない」可能性があるすべての方法を想像することさえできません...「半分閉じた」接続、予想よりもはるかに多くのデータを送信する接続など.

私が探しているのは、特定の動作の接続とテストのプロセスを自動化することにより、システムの堅牢性をテストするのに役立つある種のクライアント側ツールです。接続を開いたり、使用したり、閉じたりするさまざまな方法をシミュレートするための、さまざまな種類のオプションを備えたある種のツール。おそらく、一度に数メガバイトの意味不明なメッセージを送信したり、「意味をなさない」ことを試みたりすることができます。これらはすべて、コードが壊れる可能性のあるランダムでまれなことをテストできるようにするためです。 「壊れた」接続を認識せずに閉じます。

ツールのようなものはありますか?別のアプローチとして、Java コード/単体テストが考えられます。何かご意見は?本当にありがとう!

4

3 に答える 3

2

netcatを見ることをお勧めします。実行中のサーバーにあらゆる種類のデータをプッシュする非常に柔軟な方法を提供します。

于 2009-07-28T17:56:27.070 に答える
1

Java の知識を活用して、ランダムなクライアントの動作をエミュレートする単純な単体テストを作成できます。

  • データが多すぎる
  • あまりにも多くの接続
  • 開いて閉じる
  • その他のコーナーケース

ネイティブ コードやその他のトリッキーな構成を使用しない純粋な Java テストは、大きなメリットです。

出発点として、私はJMeterをお勧めします:

Apache JMeter は、静的リソースと動的リソース (ファイル、サーブレット、Perl スクリプト、Java オブジェクト、データベースとクエリ、FTP サーバーなど) の両方でパフォーマンスをテストするために使用できます。サーバー、ネットワーク、またはオブジェクトの高負荷をシミュレートして、その強度をテストしたり、さまざまな負荷タイプの下で全体的なパフォーマンスを分析したりするために使用できます。これを使用して、パフォーマンスをグラフィカルに分析したり、同時負荷が高い状態でサーバー/スクリプト/オブジェクトの動作をテストしたりできます。

JUnitPerf Web サイトも参照してください。

于 2009-07-28T18:30:16.613 に答える
0

Richard Steven の Unix Network Programming ( http://www.kohala.com/start/unpv12e.html ) または TCP/IP Illustrated (同じサイト) は、低レベルのソケット プログラミングを行う人にとって必読です。すべてが C 言語ですが、概念は移植可能です。

于 2009-07-28T18:02:43.237 に答える