狠狠撸

狠狠撸Share a Scribd company logo
RSPEC 勉強会
@gaooh
実践 RSPEC
文法はわかっているけど何をかくべきかピンときてない
ぶっちゃけ実はなんで書く必要があるかはわかってない
TDDとかわかるけど、そんなうまくいかないよねとおもっ
ている
AGENDA
BDDとは
よい厂笔贰颁とは、ダメなSPECとは
上達するためのステップ
Rspecあるある
WHAT, BDD
振る舞い駆動開発
TDDから派生
重視するものが違う
Dan North (http://dannorth.net/) が提唱
WHY, BDD
アプリケーション開発における仕様は複雑である
テストの目的は設計だけではない
IMPORTANT
我々はRspecを採用しているのではない、開発手法として
BDDを採用してて、その実装手段としてRspecを採用して
いる
テスティングフレームワークを考える際に重要
なぜBDD推しなのか
TDDするのはいいけどテスト何書いていい変わらないんだ
けど
搁蝉辫别肠勉强会
あ、うん、わかる。でも実際のサービスでどう書けばいい
の?
そんな単純じゃないよね?
いやライブラリ作るんだったらわかるんだけどさ
しっくりこない感
JUnit4 , StrutsTestCase期, そのそもテスタブルな設計じゃない
....SeleniumeでE2Eしたほうが.....
Spring ( DI ) 期、いやまだつらい、セットアップ処理を書くのに
一番時間がかかるよ
Rails 期、やっと楽に書けるようになった!!!!
TDD習得
周りを見よう見まねで書いてみる
書かないとRails Updateできない。メンテできない。
「いやテストなんて面倒だよ」って人を3ヶ月、テストのな
いプロジェクトにアサイン→色々やらかす→テスト信者にな
る
TDDからBDDへ
Webアプリケーションだと前提やコンテキストの説明が多い
もう日本語で書きたい。JUnitはかけたのに( 当時は無理やり
Rubyでもできたけど)
私が書きたいのはテストだったのだろうか、いや振る舞いだっ
た
BDDで重視するもの
ドキュメントとしてのテスト
例示としての仕様
よい厂笔贰颁
振る舞いの記述がテスト対象の詳細仕様書変わりとなって
いる
よい厂笔贰颁
悪い厂笔贰颁
よい厂笔贰颁
使い方がSPECから読み取れる
よい厂笔贰颁
悪い厂笔贰颁
その他よい厂笔贰颁
振る舞いがかわったらテストが落ちる or 落ちるテストを書
いてから振る舞いを変える
他のテスト対象の振る舞いに影響を及ぼさない
上達するためのSTEP
必読
Better Spec ( http://betterspecs.org/jp/ )
Everyday Rails - Rspec によるRailsテスト入門
中級
The Rspec Book
( http://www.shoeisha.co.jp/book/detail/9784798121932)
上級
Dan Northのブログとか .... ?
RSPECあるある
describe と context の使い分けがわからないよ!
これ内部実装は同じ。どうつかい分けるかは実装者に委ね
られている
describe: テスト対象を表現、 context : テスト状況を表現
「xxxの時」って書きたくなったらcontext
RSPECあるある
letとlet!の使い分けがわからないよ
letは定義しても呼び出されるまで実体化されないよ、let!
は定義した時に実体化されるよ。
基本はletでlet!でないと困る場面でのみlet!を使うといい
よ
RSPECあるある
1箇所変更したら五月雨に色々テストが落ちたよ
テストリファクタリングしないといけないアラート出て
るよ
テストが他のテストに影響を与えているのは良くない兆
しだよ
RSPECあるある
繰り返しが多いのでDRYに書きたいよ
ちょっと冷静になろうよ
テストのテストはないんだよ
後から見て振る舞いとしてわかりやさがないと困るんだ
よ
RSPECあるある
変換ボタン押すのが面倒だから英語で書きたいよ
コンテキストを説明するには母国語が一番だよ
君が英語ネイティブなら考えるよ
RSPECあるある
E2Eが難しいよ
うん、わかる。別途Capybara勉強会は必要だよね

More Related Content

搁蝉辫别肠勉强会