TDD を Web アプリケーション開発と統合するためのベスト プラクティスは何ですか?

StackOverflow https://stackoverflow.com/questions/18601

  •  09-06-2019
  •  | 
  •  

質問

単体テストと ASP.NET Web アプリケーションは、私のグループでは曖昧な点です。多くの場合、優れたテスト手法が失敗に終わり、Web アプリケーションはテストも行われずに数年間稼働することになります。

この問題の原因は通常、開発中に UI 自動化を記述する手間に関係しています。

あなたまたはあなたの組織は、TDD のベスト プラクティスを Web アプリケーション開発とどのように統合していますか?

役に立ちましたか?

解決

単体テストは次の場合に実行できます。 レイヤーを分離する 適当に。ロブ・クーパーが示唆したように、 プレゼンテーションを管理するロジック以外のロジックを Web フォームに含めないでください。. 。他のすべてのロジック層と永続化層は別のクラスに保持する必要があり、個別にテストできます。

GUI をテストするのが好きな人もいます セレン. 。セットアップが面倒だと不満を言う人もいます。

他のヒント

アプリケーションと少なくとも単体テストを、プレゼンター/コントローラー (mvc/mvp のどちらでもお好み) からデータ層まで階層化します。そうすることで、書かれたコードのほとんどを適切にテストできます。

UI テストを自動化するオプションとして FitNesse、Watin、Selenium を検討しましたが、まだどのプロジェクトでもこれらを使用することに慣れていないため、人間によるテストにこだわります。FitNesse に傾いていたのですが、TDD の導入と同じようにこれを導入することができませんでした (それは私が悪いでしょうか?そうでないことを願います!)。

これは良い質問です。私も購読します:)

私はまだ Web 開発の初心者であり、ほとんどテストされていないコードをたくさん調べています。

私の場合は UI を維持します できるだけ軽い (通常はわずか数行のコード) そして、他のすべてからがらくたをテストします。少なくとも、UI に表示されるすべてのものは可能な限り正確であるというある程度の自信を持つことができます。

完璧ですか?おそらくそうではありませんが、少なくとも依然として高度に自動化されており、コア コード (ほとんどの「魔法」が発生する場所) は依然としてかなり良好な範囲をカバーしています。

私は通常、UI 要素に依存するテストは避けます。私は、データベース層からビュー層まですべてをテストする統合テストを好みます (ただし、実際のレイアウトはテストしません)。

テストスイートを開始してみる 前に 後でテストを書くのが難しくなるため、新しいプロジェクトに実際のコードを 1 行書きます。

何をテストするかを慎重に選択してください。すべてに対して無分別にテストを作成しないでください。時には退屈な作業になることもあるので、難しくしないでください。作成するテストの数が多すぎると、時間のかかるメンテナンスの重みでそのタスクを放棄する危険があります。

できるだけ多くの機能を 1 つのテストにバンドルするようにしてください。そうすれば、何か問題が発生しても、エラーはとにかく伝播します。たとえば、ダイジェストを生成するクラスがある場合、すべてのヘルパー関数ではなく、実際の出力をテストします。

自分を信じないでください. 。常に間違いを犯すものであると仮定して、作業を困難にするのではなく、作業を容易にするためにテストを作成します。

テストを書くのがうまくいかない場合は、おそらくやり方が間違っています ;)

一般的な方法は、できる限りすべてのコードを分離コードから移動し、単独でテストできるオブジェクトに移動することです。このようなコードは通常、MVP または MVC 設計パターンに従います。「Rhino Igloo」で検索すると、おそらくその Subversion リポジトリへのリンクが見つかるでしょう。このコードは、私がこれまで見た中で Web フォームでの最高の MVP 実装の 1 つを示しているため、研究する価値があります。

このパターンに従う場合、分離コードは次の 2 つのことを行います。

  1. すべてのユーザーアクションをプレゼンターに転送します。
  2. プレゼンターから提供されたレンダリング データ。

プレゼンターの単体テストは簡単なものである必要があります。

アップデート:Rhino Igloo はここで見つけることができます: https://svn.sourceforge.net/svnroot/rhino-tools/trunk/rhino-igloo/

Microsoft の無料の UI オートメーション (.NET Framework 3.0 に含まれる) を Web アプリケーション (ASP.NET) で動作させる試みが行われてきました。Artiso というドイツの会社が、それを達成する方法を説明したブログ エントリを書いています (リンク).

ただし、彼らのブログ投稿には、winforms を使用した UI オートメーション フレームワークを説明する MSDN Web キャストへのリンクもあり、これを見た後、該当するコントロールへの参照を取得するには AutomationId が必要であることに気付きました。ただし、Web アプリケーションでは、コントロールには AutomationId がありません。

このことについて Thomas Schissler (Artiso) に尋ねたところ、これが InternetExplorer の大きな欠点であると説明されました。彼はマイクロソフトの古いテクノロジーに言及しました (MSAA) そして、IE8 がこれをより良く行うことを自分自身で期待していました。

ただし、Watin も試してみましたが、かなりうまく機能しているようです。Microsoft Excel ワークシートを介して単純なテストケースを実装できる Wax も気に入りました。

イヴォンナ ビューを単体テストできます。コードの大部分を他の部分に移動することをお勧めします。ただし、一部のコードは 所属 コントロールやコントロール イベント ハンドラーへの参照などがあります。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top