136

Rails アプリケーションと Cucumber (以前の rspec-stories) の仕様はいつ使用する必要がありますか? もちろん、スペックの仕組みと積極的な使用方法の両方を知っています。しかし、Cucumber を使用するのはまだ奇妙に感じます。これに関する私の現在の見解は、クライアント用のアプリケーションを実装していて、システム全体がどのように機能するのかまだ理解していない場合、Cucumber を使用すると便利だということです。

しかし、自分のプロジェクトを行っている場合はどうなりますか? ほとんどの場合、システムの各部分がどのように相互作用するかを知っています。私がする必要があるのは、一連の単体テストを作成することだけです。キュウリが必要な場合、どのような状況が考えられますか?

そして、対応する 2 番目の質問として、Cucumber のストーリーを書く場合、仕様を書かなければなりませんか? 同じことの二重検査ではないでしょうか?

4

6 に答える 6

114

まだお読みでない場合は、Dan North の優れた記事What's in a Story?をご覧になることをお勧めします。出発点として。

Cucumber ストーリーには主に 2 つの用途があります。まず、ストーリー形式が非常に具体的であるため、製品所有者が構築したい機能の明確化に集中するのに役立ちます。これは、ストーリーの「会話のトークン」の使用であり、コードでストーリーを実装するかどうかにかかわらず、価値があります。第二に、プロセスが十分に機能しており、機能の作成を開始するに完全なストーリーを作成できる場合 (日々の現実というよりも、私たちが目指している理想に近いものです)、受け入れ基準が明確に綴られており、何をどのように行うかを正確に把握できます。構築することがたくさん。

Rails の作業では、Cucumber のストーリーは rspec 単体テストの代わりにはなりません。二人は手を取り合って行きます。実際には、単体テストはモデルとコントローラーの開発を促進する傾向があり、ストーリーはビューの開発を促進する傾向があり (ビューの rspec を作成しない傾向があります)、アプリケーション全体の優れたテストを提供します。ユーザーの視点。

一人で作業している場合、コミュニケーションの側面はそれほど興味がないかもしれませんが、Cucumber から得られる統合テストは興味深いかもしれません。webratを利用すれば、Cucumber の作成は、多くの基本機能に対して高速かつ簡単に行うことができます。

于 2009-01-09T22:19:02.023 に答える
26

それをサイクルと考えてください:

Cucumber の機能を書き、その機能の部品を開発しながら仕様を書き、個々のコンポーネントを完成させます。機能が合格するのに十分な機能を記述するまで、仕様の完成を続けてから、次の機能を記述します。

于 2010-03-02T23:17:33.527 に答える
21

私の見解では、Cucumber の構文がもたらす生産性のコストのために、ほとんどの状況で Cucumber を使用するのは悪い考えです。このトピックについては、なぜキュウリのテストに悩まされるのかというトピックについて詳しく書きました。

于 2011-09-27T09:10:49.743 に答える
8

Cucumber のストーリーは、コードの個々の部分 (つまり、単体テスト) が機能するかどうかというよりも、アプリケーションが解決しようとしている問題全体の説明です。

Abie が説明しているように、これはアプリケーションが満たすべき要件のリストに近いものであり、クライアントとのコミュニケーションに非常に役立ち、直接テストすることもできます。

于 2009-07-01T13:11:23.593 に答える
6

最近では、Capybara と Selenium Webdriver で rspec を使用できるので、Cucumber のストーリー パーサーをすべて構築して維持する必要がなくなります。これが私がお勧めするものです:

  1. あなたのストーリーを書き出す
  2. RSpec を使用して、統合テスト ex を作成します: spec/integrations/socks_rspec.rb
  3. 次に、新しい説明を含む統合テストを作成し、シナリオごとにブロックします
  4. 次に、統合テストを取得するために必要な最小限の機能を実装し、さらに深く (コントローラーやモデルなどに) 戻りながら、コントローラーとモデルで TDD を実行します。
  5. 統合テストに戻ると、統合テストに合格し、引き続き統合テストにステップを追加できます。
  6. 繰り返す

ただし、注意すべきことは、コントローラーと統合テストには不要な重複がある可能性があるため、時間を無駄にしないように最善の判断を下す必要があるということです。

また、自分の溝を見つけたら、BDD を使用して開発するのが最も楽しいことに気付くでしょう。君ならできるさ!

于 2011-08-09T06:23:13.253 に答える
2

しかし、自分のプロジェクトを行っている場合はどうなりますか? ほとんどの場合、システムの各部分がどのように相互作用するかを知っています。私がする必要があるのは、一連の単体テストを作成することだけです。キュウリが必要な場合、どのような状況が考えられますか?

キュウリはまだ必要です。システムがどのように機能しているかを文書化するために必要であり、何かを変更したときに機能が壊れていないことを確認するためにも必要です。

つまり、単体テストが必要なのと同じ理由で、Cucumber ストーリーが必要です。より高いレベルの抽象化で機能するだけです。

于 2010-12-15T15:51:29.877 に答える