2

私はこの政治的/宗教的戦いに行き詰まっているように感じます. 私が行った調査から、多くの人が、UI テストは単体テストで行うのはばかげており、実際の人が行うほうがはるかに優れていると強く信じていることがわかりました。同意します。

ただし、上層部から UI の単体テストを行うように言われたようです。(実際のテストではなく、テスト計画を書くだけでよいと彼らが以前私に言ったので、これはすでに奇妙です)。正直なところ、私は単体テストにあまり詳しくありません。私はMOQを使用しようとしていますが、私が見つけたすべてのチュートリアルはサービスではなくリポジトリを使用しており、サービスを中心にWebアプリケーションを構築しています.

例として、サービス (の一部) を次に示します。

public class ProductService : Service<Product, EntitiesDbContext>
    {
        ...
        public Product GetProduct(int id)
        {
            return All().FirstOrDefault(p => p.ProductId == id);
        }
        ...
    }

たとえば、Moq を使用して新しい製品を作成し、誰かが私のモデルを使用してハードコードされた入力を検証する必要があると仮定します。これを行う方法がわかりません。

Web サイトはフォームを介したユーザー入力に大きく依存しているため、UI のテストは私の作業の大部分を占めています。私のモデルは非常に厳密で、特定の入力のみを許可するため、単体テストでテストするのは非常にばかげています。

私の質問: MOQ または別のテスト フレームワークを使用してフォーム入力をテストするにはどうすればよいですか? あなたの行動を追跡して複製できるプログラムがあると聞いたことがありますが、私はそれらを見つけることができませんでした。また、そのような技術にはお金がかかると思います.

4

5 に答える 5

2

UI テストにはSeleniumまたはWatinを試してください。

于 2012-05-03T16:32:33.523 に答える
1

UIのテストを自動化することに対して、開発者は多くの反対を表明しています。私が何年も前に行ったことは、「Selenium Core」を使用することでした。これにより、Firefoxでのテストを修正し、C#として保存してから、C#ファイルとHtmlファイルをブレンドして次のことを実行できました。

  1. パスワードを忘れた場合-データベースからの自動化ランダムユーザー名が入力され、暗号化されたパスワードが設定したさまざまなGmailアカウントに電子メールで送信され、C#APIを使用してGmailにログインし、新しいリセットパスワードを取得してから、リダイレクトしてアプリケーションに新しいパスワードを入力させます。これをCIServerHudsonに配置して、このテストを1日中自動化し、成功やエラーなどのログを記録することができます。

  2. 新規登録...#1と同様

したがって、UIテストの場合は、その機能テストまたはUATテストと呼びましょう...次に、真の単体テストの場合、これはNUnit / Xunit、MSTestなどの場合です。次に、MOQなどが役立ちます。統合テストとは、ファイルシステム、WCF、データベースなど、「モック」されていない、接続されたシステムを使用したアプリケーション全体のテストです。

それらはすべて長所と短所があり、どれも完璧ではありませんが、ほとんどの人は、ユニットテストが最も価値があると言ってしまいます。

于 2012-05-03T23:44:19.610 に答える
1

MVC テスト用に Ivonna (http://ivonna.biz) を試すこともできます。クライアント側はテストしませんが、Asp.Net サーバー側のコードをテストできます。

しかし、まず第一に、あなた自身 (またはあなたの経営陣) に質問をする必要があります: 何をテストしたいですか? クライアント/サーバー側の検証? あなたのサービス?アクション方法?

于 2012-05-03T17:48:01.563 に答える
1

UI のアクションをテストしていますか、それとも実際の UI をテストしていますか。

アクションと、アクションがビューに送信するデータをテストしている場合は、NUnitxUnitなどを使用して単体テストを実行し、 MOQRhino Mocksなどの moq フレームワークを使用するのが適切です。

実際の UI (Web サーバーによって返される HTML) をテストする場合は、 Seleniumなどの自動テスト フレームワークを使用するのが適切なツールです。

于 2012-05-03T16:43:37.927 に答える
1

Visual Studio 2010 Ultimate には、コード化された UI テストと呼ばれるものがあります。基本的には、Internet Explorer でアクションを記録し、アサーションを追加する C# コードに変換してから、別のブラウザーでアクションを再生します。

ただし、新しく追加された行がどれであるかをほとんど把握できないため、データベースに基づく Web アプリケーションに対してテストすることは非常に困難です。簡単にするために、テスト スイートを順番に実行する前に初期状態にリセットされるサンプル データベースをセットアップすることができます。

コード化された UI テストの使用方法については、さまざまな TechEd ビデオをご覧ください。例http://www.youtube.com/watch?v=rZ8Q5EJ2bQM

于 2012-05-03T16:34:10.823 に答える