Skip to content
Latchkey

RSpec vs Cucumber: Rubyのテストアプローチ

RSpecはユニットテストと統合テスト向けの開発者志向のBDDフレームワークです。Cucumberはステークホルダーとの協働のために、平易な言語のGherkinシナリオからテストを駆動します。

RSpecは、Rubyでのユニット、統合、requestのspecに理想的な、表現力豊かで開発者向けのdescribe/it構文を提供します。Cucumberは、非開発者でも読めて書くことさえできる平易な言語のGiven/When/Thenシナリオとして振る舞いを表現し、その下にRubyのstep definitionを持ちます。両者は異なるレイヤーを解決し、しばしば併用されます。

RSpecCucumber
対象者開発者開発者 + ステークホルダー
構文describe / it (Ruby)Gherkin (平易な言語)
テストレイヤーユニット / 統合受け入れ / 振る舞い
オーバーヘッド低い高め (step defs)
最適な用途大半のRubyテスト読みやすい受け入れspec

CIでは

どちらもRubyのツール(多くはRake)経由で実行され、CIできれいにレポートされます。RSpecは書くのが速く、大半のテストニーズをカバーします。Cucumberは、ビジネスが読める受け入れシナリオがstep definitionのオーバーヘッドに見合う場合に価値を加えます。多くのチームは大半をRSpecで、薄い受け入れレイヤーをCucumberで実行します。

高速化

bundle (gems) をcacheし、specを複数のjob間で並列化しましょう。どちらもCI runner上で実行されます。より高速なマネージドrunnerはテストフェーズを短縮します。

結論

高速で開発者中心のユニットテストと統合テストが欲しいなら: RSpec。ステークホルダーと共有する平易な言語の受け入れシナリオが欲しいなら: Cucumber。両者は互いを補完します - 大半のテストにはRSpec、読みやすい受け入れテストにはCucumber。

関連ガイド