質問

しています。 BDD-行動を主導の開発 (段北の視点として、機構の記録ユーザーの承認テスト駆動開発のプロジェクトも成功。日付いていない実際の自動化の試験です。

かみを自動化の試験にかける行動枠組みます。これまでNBehaveうに先駆けではありまってくるのを見なければ?が明確に"勝者"のろうか。

役に立ちましたか?

解決

クイックアンサー

立ち上げるための非常に重要なポイントは、行動駆動開発の2つのフレーバーがあることです。 2つのフレーバーは、 xBehave xSpec

xBehave BDD:SpecFlow

SpecFlow(Rubyスタックの cucumber に非常に似ています)は、xBehave BDDテストの促進に優れています。受け入れ基準として。ただし、ユニットレベルで動作テストを記述する良い方法は提供していません。他にもいくつかのxBehaveテストフレームワークがありますが、SpecFlowは多くの注目を集めています。

xSpec BDD:MSpec

客観的に言えば。使用可能なコンテキスト仕様フレームワークを考えると、MSpecは最も長く使用されており、.Netコミュニティで最も広く使用されているコンテキスト/仕様フレームワークです。

他のxSpec BDDフレームワーク:NSpec

個人的には NSpec をお勧めします( RSpec (Rubyの場合)。完全な開示、私はNSpecの著者の一人です。 NUnitまたはMSTestを使用するだけでBDDを実現できますが、それらは少し不足します(コンテキストを段階的に構築するのは非常に困難です)。 MSpec もオプションであり、の最も成熟したコンテキスト/仕様フレームワークです。ネット。 しかし、NSpecにはもっとシンプルなものがいくつかあります。

ロングアンサー

BDDの2つのフレーバーは、主にそれらが提供する直交的な利点のために存在します。

xBehaveの長所と短所(GWT構文)

長所

  • と呼ばれる一般的な方言を通じてビジネスとの会話を促進するのに役立ちます(例:Given ....、And Given ....、When ......、And When .....、Then .. ..、And Then)
  • 共通の方言を実行可能なコードにマッピングすることで、完了したことを実際に完了したことをビジネスに証明できます
  • 方言はくびれているので、ビジネスは要件を明確にし、文章に合わせる必要があります。

短所

  • xBehaveアプローチは高レベルの承認基準を推進するのに適していますが、属性を介して英語を実行可能コードにマッピングするために必要なサイクルにより、ユニットレベルでドメインを追い出すことは実行不可能になります。
  • 一般的な方言をテストにマッピングすることは、PAINFUL(正規表現でランプアップ)です。ビジネスが作成する各文は、属性を介して実行可能なメソッドにマップする必要があります。
  • マッピングの管理が手に負えないように、一般的な方言を厳密に制御する必要があります。文を変更するたびに、その文に直接関連するメソッドを見つけて、正規表現の一致を修正する必要があります。

xSpecの長所と短所(コンテキスト/仕様)

長所

  • 開発者がコンテキストを段階的に構築できるようにします。テスト用にコンテキストを設定し、そのコンテキストに対していくつかのアサーションを実行できます。その後、さらにコンテキストを指定して(既存のコンテキストに基づいて構築)、さらにテストを指定できます。
  • 言語を制限しません。開発者は、システムの特定の部分がどのように動作するかについてより表現力豊かになります。
  • 英語と一般的な方言の間のマッピングは必要ありません(ないため)。

短所

  • ビジネスが親しみにくい。それに直面しましょう、ビジネスは彼らが望むものを明確にすることを好みません。 BDDにコンテキストベースのアプローチを与えた場合、その文は単に「機能させるだけ」と読みます。
  • すべてがコードに含まれています。コンテキストドキュメントはコード内に絡み合っています(そのため、英語からコードへのマッピングを心配する必要はありません)
  • 制限が緩和されているため、読みにくい

他のヒント

SpecFlow をご覧ください。

Cucumberに触発されたツールであり、今日の.NETプロジェクトの受け入れテスト駆動開発および行動駆動開発に実用的かつ摩擦のないアプローチを提供することを目的としています。

VisualStudioの統合は特に有望と思われます。

StoryQ は、Fluentインターフェイスを備えたNBehaveの優れた代替手段のように見えます。私は間違いなくチェックします。

本当に「勝者」があるとは思わない。他のフレームワークには、 SpecUnit.NET プロジェクトと MSpec は、 Gallio アダプターの始まり。技術的には、IronRubyが近づいているため、 rSpec 最先端を行く準備ができている人にとってはオプションかもしれません。 NBehave + NSpecは、最高の自動化を備えた最古のフレームワークかもしれませんが、私は過度に冗長な構文と戦っています。

すべてをチェックして、プロジェクトのスタイルに最適なフレームワークを選択します。それらはすべてOSSであるため、失うのは難しく、真の利点はBDDに移行することです。

個人的には BDDfy をお勧めします。オープンソースであり、慣習と流basedなシナリオ記述をサポートし、受け入れテストと単体テストの両方をカバーします。 GitHub で見つけることができます。

ロボットフレームワークは、 IronPython でも使用できます。 .NetのATDDまたはBDD。 Robot Frameworkの表現機能は、たとえばより優れていると思います。 SpecFlow または NSpec 。特定の構文の使用を強制するのではなく、キーワード駆動型のアプローチを使用します。 Webアプリケーションをテストしている場合、Selenium WebDriverへのバインドを提供する Selenium2Library があります。

スペクターもあります。これは、BooでDSLを定義してより自然なものにします。

私は一般にNBehaveを支持し、MbUnitおよび必要なDI /モックフレームワークと組み合わせます。 NBehaveは非常に冗長であることがJim Burgerによる公正なコメントであり、私は時々カットアンドペーストを使用しています。それでも、うまく機能します-GallioのReSharperプラグインを使用しているので、余分なウィンドウが表示されます。ただし、まだccnetで試したことはありません。

刺激的なアイデアについては、このブログ投稿とそのコメントを確認してください: http ://haacked.com/archive/2008/08/23/introducing-subspec.aspx/

Concordion.NET は、BDDだけでなくATDDもサポートしています: http://assertselenium.com/2012/11/05/difference-between-tdd -bdd-atdd / 仕様は英語で書かれています HTMLを使用します。私見これはConcordion.NETの利点の一つです。 HTMLドキュメントをナビゲート可能な構造に編成して、リビングドキュメントシステムを構築できます。また、テストはシステムに対して実行されるため、ドキュメントは常に最新のものであると確信できます。

私から私の初めてのお出かけるBDD少ない申請するしかありません。のツールを選択するには:Specflowと セレンWebdriver のためのxBehave話MSpecと 機です。偽物です。Moq たautomockingコンテナ当社のxSpecユニット。と簡単に、ios、androidとmac用にc#されますので当社の物語のランナーの仕様にランナーとを組み合わせよSpecflowとMSpec.有するネイティブ組み込みスクリプトR#特長とします。

当社のデザインはすべてのMVC3にしたいと思いますの応用 オーケストレータの分離パターンに当社のMVCコントローラ.これまでの仕様書に対する直接のオーケストレータ.そのために書き語りに対する直接弊社のアプリケーションの使用状況.

現在、安全性が重要なアプリケーションのシステムテストでBDDを扱っているため、「自然言語で書かれたテスト」の力を過小評価してはいけないという経験しか共有できません。 " code"の代わりに。

私たちは常に、プログラミングの技術的背景や経験がなくても誰でも理解できる機能言語を提供することに集中しました(上記のspecflowの例を参照)。構文を誰にも説明したことがないという事実に加えて、誰もがテスト、開発者、マネージャー、さらにはテスターの意味をすぐに理解しました。

上記のMSpecの例のようなプログラミング言語で書かれたテストは、どうしても避けたいと思います。マネージャーのオフィスでこのようなテストを見せたら、彼は私を追い出します。しかし、彼はGherkin-Syntaxベースのテストを読むことに興味があります。テストを読んだり修正したりできる人が多いほど良い。

最後になりましたが、これらのテストは、他のプログラミング言語、プラットフォーム、テスト自動化ツールに変更なしで移植可能です。

もう一度、答えはもう一度です:

ツールとその機能自体は気にせず、情報を失うことなくいつでも別のツールに簡単に切り替えることができるツールを選択します。ツールが出入りするので、私のテストは長持ちするはずです。 :-)

SpecFlowの使用をお勧めします。完全な.Netライブラリとそのすべての機能に完全にアクセスでき、テストの移植性を維持できます。これは、移植性を気にしない場合、Robot Frameworkのような完全にポータブルなソリューションよりも有利になる可能性があります。ただし、開発およびテスト用のさまざまなツールを使用することで、システムの安定性と移植性をいつでも改善できます。したがって、PythonベースのBDDアプローチを使用して.Netソフトウェアをテストすることは、場合によっては良い(またはさらに良い)アイデアかもしれません。

ただし、SpecFlowは、中規模プロジェクトでの夜間ビルドテストなど、毎日のテストで安定しており、防弾であることがわかりました。さらに、Microsoft単体テスト環境にうまく統合されています。

UATに固有のUBADDASも確認してください。

https://github.com/KernowCode/UBADDAS

ここに説明付き

http://kernowcode.wordpress.com/ (2014年6月)

このようなテストを書くことができます

[Test]
public void IWantToRegisterANewUser()
{
  var user = new User();
  ICustomer customer = new Customer();

  SoThat(MyBusinessValue.IncreaseCustomerBase)
    .As(user)
    .Given(customer.Register)
    .When(customer.Confirm_Registration)
    .Then(customer.Login);
}

これを生成

I want to register a new user
  so that Increase customer base
       as user
    given Register customer
     when Confirm customer registration
     then Login customer
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top