web-dev-qa-db-ja.com

Microsoft Stackで利用できる行動駆動型開発(BDD)ツール/フレームワークは何ですか?

行動駆動開発(BDD) に興味がある

.Netプラットフォーム(できればC#とASP.Net)で利用できる優れたフレームワークやツールはありますか?

そして、BDDが実際のシナリオでの使用に最も適切であることが証明されたのはいつですか? (補助質問)

34

グーグルで私は SpecFlowとASP.NET MVCを使用したBehavior Driven Development(BDD) を見つけました。役に立つかもしれませんので、ご覧ください。 SpecFlowとWatiNを使用した行動駆動型開発

BDDの長所と短所 に関する素晴らしいプレゼンテーション

チャンネル9のビデオ 現実世界の行動主導型開発

最後に、InfoQの記事をお読みください 。NETの動作駆動開発

29
Haris Hasan

シナリオに対するSpecFlowの人々の推奨に対して+1。使用したことはないが、多くの良いことを聞いた。私は this のような小さなDSLで単純な古いNUnitを使用しています。 MSTestも同様に機能します。

また、can単位空間でBDDを実行できます。これは、MSpecが行うように設計されています。私は個人的にMSpecを嫌っていますが、ここのチームの他のメンバーはMSpecが大好きです。彼らは、コードがどのように機能するかの例を書くのが好きです。私はその振る舞いがなぜ価値があるのか​​を示すのが好きです。これは微妙な違いであり、ユニットレベルでこれを行うことを心配していなければ、それは当たりません。

他のフレームワークには、Concordion、Fitnesse.NET(FitSharpを置いてください!)、およびTickSpecが含まれます。

現実の世界では、BDDの最も価値のある部分は会話であり、自動テストではありません。これを機能させるための簡単なヒントとヒントを次に示します。

  • 流動的なものに対して自動化されたテストを書かないでください。間違ったものにコミットするだけです。 UIが少し落ち着くまで待ってから実行してください。

  • UIについてはあまり気にせず、データの整合性については気にする場合は、コントローラー/プレゼンターレイヤー上でシナリオを記述します(例:管理画面用)。

  • ログインから始めないでください。ログインする可能性のあるアプリケーションの重要な部分を説明することから始めます。最初にそれを行います(ユーザーが1人しかいないと仮定します)。危険な部分については、より迅速なフィードバックが得られます。

  • 危険なビットについては、通常、これまでにやったことのない小さなビットについて迅速なフィードバックを求めてください。シナリオを使用して、周囲の会話を交わします。あなたが発見した興味深いことを書き留めてください。しかし、明らかなシナリオは忘れてください-明らかです!最初から自動化することを心配しないでください。会話を書き留めることは、会話を自動化することよりも重要です。

幸運を! BDDについて詳しく知りたい場合は、関連リンクのページを作成します here

32
Lunivore

LightBDD は、読みやすいだけでなく、プロジェクトが大きくなったときに維持および拡張しやすいBDDテストを作成できるオープンソースフレームワークです。

主な機能は次のとおりです。

  • 読みやすいシナリオ、
  • テストの簡単なメンテナンス、
  • よく知られているテストフレームワークとの統合( NUnit / MbUnit / MsTest / xUnit )、
  • シナリオステップの実行追跡と実行時間の測定、
  • hTML( レポートの例 )、XMLおよびプレーンテキスト形式でのテスト実行概要レポートの生成。

これは、純粋にコードで記述されたテストに基づいています。つまり、リファクタリング、コード分析、テスト実行、およびVisual Studio/Intellisense/Resharperが提供する他のすべての機能のネイティブサポートを意味します。

このフレームワークで記述されたサンプルテストは次のようになります。

[TestFixture]
[FeatureDescription(
@"In order to access personal data
As an user
I want to login into system")] //feature description
[Label("Story-1")]
public partial class Login_feature //feature name
{
    [Test]
    [Label("Ticket-1")]
    public void Successful_login() //scenario name
    {
        Runner.RunScenario(

            Given_user_is_about_to_login, //steps
            Given_user_entered_valid_login,
            Given_user_entered_valid_password,
            When_user_clicked_login_button,
            Then_login_is_successful,
            Then_welcome_message_is_returned_containing_user_name);
    }
}

フレームワークの詳細については、 プロジェクトwikiページ および プロジェクトメインページ を参照してください。

7

MSpec も良いフレームワークです。

あなたが言及したMicrosoftスタック(C#、ASP.Net、MVC)で使用し、彼の構文が気に入っています。

BDDは、コードだけでなくビジネス/機能指向の方法で考えるのに役立ちます。したがって、ビジネス価値に最も焦点を合わせています。

また、ユーザー受け入れテストで、あなたと顧客の間に信頼を築くのに役立ちます。

5
Be.St.

SpecFlow と呼ばれる素晴らしいツールがあります。 SpecFlowは、Cucumber(Ruby on Railsのよく知られているBDDフレームワーク)に触発されています。そして、多くの利点があります。

ぜひチェックしてみてください。

2
Maksim Gladkov

Spec4Net( https://bitbucket.org/fthomsen/spec4net/ )も素敵なフレームワークです。職場で広く使用しています。学習曲線はほとんど存在せず、自然な流れは直感的に思えます。

0

興味深いBDDフレームワークの1つは、 Concordion.NET です。 NUnitを使用してConcordion.NETテストを実行するMicrosoftスタック用のオープンソースBDDフレームワーク: https://github.com/concordion/concordion-net Concordion仕様は単純なHTMLで記述されているため、それは生きている文書システムの良い基盤を提供します。 BlueGriffonのような見た目(WYSIWYG)エディターを使用して、ソフトウェアの意図する動作を単純なHTMLドキュメントで記述し、それらをインストルメントしてテスト対象のシステムを検証できます。 BDDツールの優れた分類 によれば、Concordion.NETはビジネスで読み取り可能な入力に焦点を当てています(ビジネスで読み取り可能な出力にも到達します)。 BDDを超えて移動し、ATDDをサポートします: http://assertselenium.com/2012/11/05/difference-between-tdd-bdd-atdd/

0
user3632158