3

私は(pythonとtwistedを使用して)アプリケーションサーバーを作成し、いくつかのテストを作成し始めたいと思います。しかし、時間の制約と今はそれで遊ぶ時間がないので、私はツイステッドのトライアルを使いたくありません。これが私が念頭に置いていることです。アプリサーバーに接続して必要な要求を行う小さなテストクライアントを作成し(通信プロトコルは社内のXMLです)、受信したXMLを静的な方法で保存してから、いくつかのテストを作成します。 unitestを使用してこれらの静的データに適用します。

私の質問は次のとおりです。これは正しいアプローチですか。正しい場合、このアプローチではどのような種類のテストがカバーされますか?

また、この方法を使用すると、次のようないくつかの欠点があります。スキーマを構築/再構築するためにデータベースレイヤーにアクセスできない、テストクライアントがサーバーに接続するタイミング:単体テストごと、またはテストスイートを実行する前?

4

4 に答える 4

2

試用版を使用する必要があります。それは本当に難しいことではありません。Trial のドキュメントは改善される可能性がありますが、標準ライブラリの単体テストの使い方を知っている場合、唯一の違いは、

import unittest

あなたは書くべきです

from twisted.trial import unittest

...そして、test_メソッドから Deferreds を返すことができます。それ以外はほとんど同じです。

もう 1 つの違いは、モジュールの下部に巨大なテスト オブジェクトを作成してから実行するのではなく、

python your/test_module.py

テストケースを定義して実行するだけです

trial your.test_module

実際、リアクターの統合をまったく気にしない場合はtrial、既存の一連の Python 単体テストで実行できます。試用版は、標準ライブラリ ' unittest' モジュールをサポートしています。

于 2009-02-01T11:25:33.207 に答える
1

「私の質問は、これは正しいアプローチですか?」

それはあなたが選んだものです。あなたはたくさんの言い訳をしたので、あなたはこのコースでかなりうまく固定されていると思います。これは最善ではありませんが、それを実行する理由をすべてリストアップしています(その後、この特定の行動方針についてフォローアップの質問をしました)。「正しい」はもう入力されていないので、この質問に対する答えはありません。

「このアプローチではどのようなテストがカバーされますか?」

彼らはそれを「ブラックボックス」テストと呼んでいます。アプリケーションサーバーは、いくつかの入力と出力を持つブラックボックスであり、その内部をテストすることはできません。これは、最終的な外部インターフェイスの許容可能な動作をテストするため、許容可能なテスト形式の1つと見なされます。

あなたが問題を抱えているならば、それは診断作業をするのに役に立たないことがわかります。内部構造のホワイトボックステストも行う必要があることがわかります。

「スキーマを構築/再構築するためにデータベースレイヤーにアクセスできない」

なぜだめですか?これはPythonです。そのレイヤーをインポートしてデータベースの構築を行う別のツールを作成します。

「テストクライアントはいつサーバーに接続しますか:単体テストごとに、またはテストスイートを実行する前に?」

テストの目的によって異なります。ユースケースによって異なります。あなたの実際の意図されたクライアントで「現実の世界」で何が起こりますか?

クライアントのような動作をテストして、クライアントが接続を確立するのと同じ方法で接続を確立する必要があります。

また、クライアントが接続を切断したり、順序が狂ったり、接続されていないなどの異常な動作をテストする必要があります。

于 2009-01-21T11:15:34.870 に答える
1

あなたは間違った方向を選んだと思います。トライアル ドキュメントが非常に軽いのは事実です。しかし、Trial は unittest に基づいており、reactor ループと非同期呼び出しを処理するためにいくつかのものを追加するだけです (deffer を処理するテストを書くのは簡単ではありません)。deffer/asynchronous 呼び出しを含まないすべてのテストは、通常の単体テストとまったく同じになります。

Trial コマンドはテスト ランナー (nose に少し似ています) であるため、テスト用のテスト スイートを作成する必要はありません。時間を節約できます。さらに、Trial コマンドはプロファイリングとカバレッジ情報を出力できます。詳細については、 Trial -h を実行してください。

しかし、いずれにせよ、最初に自問すべきことは、単体テスト、統合テスト、またはシステム テスト (ブラック ボックス) のうち、どの種類のテストが最も必要かということです。Trial ですべてを行うことは可能ですが、常に最適である必要はありません。

于 2009-01-21T14:01:38.157 に答える