2009-02-20 16 views
9

私はUIの面で非常に複雑で、AJAX、DOM、画像操作に大きく依存するWebアプリケーションを作成しています。Webアプリケーションの単体テストを行う最善の方法

バグを減らすために従うことができる標準的なプラクティスはありますか(ツールは不要です)ですか?

+0

大きな質問。私は同じことが不思議でした。 – RSolberg

+0

これは非常に曖昧な質問です。あなたの質問には、通常、ツールのリストで答えることができますが、コード内のバグを減らすための魔法のように聞こえます。あなたは何を求めているのですか? – ryeguy

+0

@ryeguy彼の質問はデザイン指向の質問です。彼はユニットテスティングスタイルが大量のUIアプリにどのように適合しているかを尋ねています。 Carltenはそれに答えることができました。 – DevinB

答えて

5

論理部分とUI部分を分けます。コードビハインドページにすべてのビジネスロジックと複雑なコードが含まれているわけではありません。代わりに標準層構造(データ層、ビジネスルール/ロジック層、UI層)からそれらを構築します。これにより、テストしたい論理コードがフォームを参照せず、単体テストが容易なクラスを使用できるようになります。

string str = TextBox1.Text.ToString(); 
//do whatever your code does 
TextBox2.Text = str; 

代わりの方法で別々のクラスにロジックを抽出します:あなたが書くことができます

TextBox2.Text = DoWork(TextBox1.Text.ToString()); 

public class Work 
{ 
    public string DoWork(string str) 
    { 
     //do work 
     return str2; 
    } 
} 

この方法

非常に基本的な例については、これを実行するコードを持っていませんDoWorkが正しい値を返すことを確認するためのユニットテスト:

string return = DoWork("TestThisString"); 

これで、すべてのロジックがユニットテスあなたのUIレイヤーに直接ページを参照するコードしかありません。

8

非常に簡単な技術は、すべてのアプリケーションのクリックスルーを自動化するスモークテストです。スクリプトが実行され、ログにエラーがない場合、少なくとも1つの定義された品質レベルがあります。

このテクニックは、かなりの量の回帰ブレークを実際に捉え、そのような音よりはるかに効果的です。これにはseleniumを使用します。

+0

特定のテストシナリオを使用した機能テストを意味するのか、それとも可能なすべてのターゲットをクリックするだけなのでしょうか? – legesh

+0

私たちが行う最も簡単なバージョンは、主な成果物であるユースケースをクリックすることです。最低でも、主な代替/エラーフローも含まれます。これは必ずしもすべてのボタン/アイテムをクリックするという意味ではありません。 – krosenvold

2

Watinは、このための優れたツールです。

1

簡単なチェックリスト(紙でも!)は、決して重要なものをスキップしないようにするための最良の方法です。それは何も "標準"が壊れていない良い "煙のテスト"です。

関連する問題