3

単純なシナリオの単体テストの記述を理解しようとしていますが、これほど単純なものは見つかりません。次の 2 つのフォーム フィールドを持つ Web フォームがあるとします。

FirstName
LastName

バックエンドには、次のクラスがあります。

class User
{
   public string FirstName {get;set;}
   public string LastName {get;set}
}

これらのフォーム フィールドがマップされることを確認し、プレーンな古い ADO.NET (フレームワークなし) でデータベースに保存します。検証はありません。INSERT ステートメントで保存するだけです。

単体テストはどこに当てはまりますか? どの単体テストを書くか? これはテストする価値がありますか?検証機能があれば、それらをテストできますよね?

ありがとう。

4

1 に答える 1

1

フォームや UI の単体テストは実際には行いません。UI を 2 つの部分に分割します。レンダリングされてクライアントに返される HTML と、サーバー側の部分です。これは実際には単体テストではなく、統合テストの一部です。単体テストではありませんが、統合テストを完全に自動化できることに注意してください (NUnit のような単体テスト フレームワークは実際には適切ではなく、独自のツールを作成する必要があることを意味します)。

HTML を取得して HtmlAgilityPack などの HTML アナライザーで実行し、ページ内のすべての URI が 200 を返し、すべてのフォーム フィールドが正しいname=""属性で存在することを確認することで、クライアント側の部分をテストできます。

次に、サンプル データを含む POST フォーム リクエストを送信し、データベースを直接検査して、新しく送信されたデータが正しい形式でデータベースにあることを確認するプログラムを用意して、サーバー側の部分を個別にテストします。本番データベースに対してテスト ツールを実行することは決して良い考えではないため、これには専用のテスト データベースを使用します。

アプリケーションの自動テストを作成する価値があるかどうかはわかりません。多くの場合、アプリケーション コードを作成するのと同じくらい、またはそれ以上の時間がかかります。これは、セーフティ クリティカルまたはミッション クリティカルなシステムで重要な正確性を確保するために行います。簡単な質問は、「もし私のプログラムが間違っていたら、人は死んだり怪我をしたり、お金を失ったりするでしょうか?」という質問です。答えが「はい」の場合は、それを実行する必要があります。

このようなテストは、実行中のアプリケーションで「アプリケーションの状態」を監視するためにも使用できます。たとえば、公衆電話システムとのインターフェイスを作成したアプリケーション システムがあるため、アプリケーションが正常に電話をかけられることを確認するテスターを作成する必要がありました)。

于 2012-11-14T01:21:39.890 に答える