2

Visual Studio 2008のASP.Netアプリケーションユニットテスト - ユーザアカウント

私はユニットテストを作成して、ウェブアプリケーションの有効なログインをテストしています。私はAuthenticate(User、Pass)boolメソッドを持っています。 nullの場合と無効なパスワードテストが正常に動作しています。

私の質問は、有効なログインをテストする方法です。私はウェブアプリケーションに有効なアカウントを持っていますが、ユーザー名とパスワードのハードコーディングが最善の解決策ではないように感じます。

私は私がしなければならない場合があり思っています: テストユーザー を作成するには、Webアプリケーション へのユーザーアクセスを許可し、私のテストを実行

がより良いアプローチがありTESTUSERを削除しますか?

答えて

5

まず、実際のWebアプリケーションや実際のデータベースと話している場合は、単体テストを行っていないため、統合テストを行っています。

ここでテストしようとしているのは正確ですか?

こと:ユーザーのログインではないだろう間違ったユーザー名および/またはパスワードを渡す

  • 正しいユーザー名またはパスワードを渡すと、ユーザーはログインしますか?
  • 実際にアカウントがActive Directoryにあることを確認しますか?それは何を証明するでしょうか?あなたのIT管理者は自分の仕事をやったのですか?

事実を主張するべきではないことを覚えておいてください。行動を主張するべきです。そのため、特定のアカウントがADにあるかどうかを確認するのではなく、正しいユーザー名とパスワードが与えられたら、コードが期待どおりに動作し、間違ったユーザー名やパスワードが与えられたときにも同様に動作します。 Active Directoryを使用しないでください。上記の最初の2つのケースでは

、関連する複数のコードがあります:そのユーザー名とパスワード で既存のアカウントを検索しようと、ユーザー名とパスワード

  • コードを取り込んで

    • コード格納
    • コードは、実際に「不正なユーザ名またはパスワード」のエラーに応答
    • コード「を今すぐログインしている」

    あなたのデータベースが動作することをテストしていますか?または、有効性をチェックするコードが機能するかどうかを確認します。

    既存のアカウントを取得するコードを偽造し、あるユニットテストでは「ここにアカウントデータ」があり、別のユニットテストでは「一致するアカウントがありません」と応答して、ログインコードが正しいユーザーにログインしたり、エラーで応答したりして、それに対してアサートします。

    Active Directoryを照会するコードが正しく機能するようにするため、実際の統合テストを行う必要がありますが、Active Directoryを使用せずにできるだけ多くの動作をテストする必要があることに注意してください。 (Active Directoryにログインして新しいテストデータを作成する必要はありません)、信頼性が高くなります(Active Directoryを台無しにした場合、ユーザーフレンドリー、削除されたソフトウェア、アップグレードされたソフトウェアなど)。私はあまりにも多くの「ユニットテスト」を見てきました

    は、外部依存関係のために失敗し、私のアドバイスは、理想的には全く何を持っていない、可能な限りそれらを最小化しようとすることです。あなたのユニットテストの場合はです。

  • +0

    この特定の方法のデータベースはありません。このメソッドは、ユーザー名とパスワードを取得するWebフォームによって呼び出されます。この方法では、AD内のグループをチェックしてアクティブディレクトリに対してこれを検証し、ユーザーが特定のグループに属していることを確認します。ただし、他のグループには存在しません。私は、その場でユーザーを作成し、合格した(そして失敗した)グループのシーケンスに追加してからテストを実行する必要があると考えています。 – Rob

    +0

    私が言ったように、これにはあなたのライブActive Directoryのインストールを使用すべきではありません。代わりに、ユーザーがどのグループにいるかを示すデータプロバイダを偽造し、プログラムが正しく動作することを確認します。 Active Directoryサーバーと話している場合は、単体テストではなく、統合テストを行っています。 –

    +0

    大丈夫です。データプロバイダを偽造する最良の方法は何ですか? – Rob

    0

    実際のユーザー名とパスワードが取得された実際の場所ではなく、模擬データソースを使用できませんか?

    あなたがテストしたいのはデータではなく認証手順なので、これが私の推奨する方法です。

    +0

    問題は、アカウントがActive Directoryにあることです。私はD'oh – Rob

    +0

    質問に言及しなかったかもしれませんローカルのテストLDAPサーバーですか? – queen3