4

ネットワークコードに関しては、単体テストから統合テストにうまく移行したことはありません。

だから私の質問は:単純なシングルスレッドのクライアント/サーバーベースのネットワークアプリケーションが与えられた場合、クライアントとサーバーの両方を現在お気に入りのテストスイートに統合するにはどうすればよいですか (私は現在checkを使用しています)。

もちろん、目標を達成するために単体テスト スイートを変更しても構わないと思っています。

編集:答えには感謝していますが、統合テストを単体テストフレームワークに統合する魔法の方法をもっと探していました(可能であれば)。fork () などを適用しても、あまり副作用が発生しない場合のように。

4

3 に答える 3

4

もう 1 つの方法は、テストしたいメッセージを送信するだけのダミー サーバーとダミー クライアントを使用して両端をモックアップし、応答が期待どおりであることを確認することです。これらのモック サーバーは、本当に、本当にばかげています。必要なのは、ソケットの読み取り/書き込みと、事前に設定されたデータをダンプすることだけです。解析が簡単な場合は、リクエスト内のデータからのレスポンスをテンプレート化することで、それらを少し盛り上げることができます。

ここでの利点は、モックされたアイテムが何をするかを正確に知っていることです (偽のタイムアウト、ガベージの送信など、必要なものは何でも)。

Perl または Python ソケット ライブラリを使用して、モック サーバーとクライアントを構築するのはおそらく非常に簡単です。Perl を使用している場合は、CPAN の非常に有能な Test:: クラスを使用して、実際の「これは機能しましたか」とレポートを作成できるはずです。

于 2008-12-03T21:54:04.220 に答える
1

netcatは、ネットワーク サーバーとクライアントをテストするための優れたツールです。

man netcatそれnetcatはTCP / IPスイスアーミーナイフだと言います。両方netcatとビクトリノックス スイス アーミー ナイフの経験がnetcatあるので、ビクトリノックスよりもはるかに優れていると断言できます。むしろ、レザーマンと比較したいと思います。

于 2008-12-03T22:10:43.017 に答える
0

コア コードがライブラリにあり、サーバーまたはクライアントを起動する非常に薄いラッパーである main.c (この場合は実際には main.cxx) から実行可能ファイルが生成されるように、アプリケーションを構築します。これにより、完全なサーバーとクライアントを proc でインスタンス化し、通常のネットワーク プロトコルを使用して相互に通信するテストを実行できるテスト スイートをセットアップできます。それは非常にうまく機能します。

このように構成できない場合は、fork/CreateProcess を使用して通常のサーバー実行可能ファイルを起動し、テスト内のクライアント コードを外部サーバーと通信させることができます。

于 2008-12-03T20:08:46.727 に答える