rspecによるrailsアプリケーションbdd事例

39
RSpecによる Railsアプリケーション BDD事例 Yugui 1 2008623日月曜日

Upload: yuki-sonoda

Post on 28-May-2015

3.180 views

Category:

Technology


4 download

DESCRIPTION

日本Ruby会議2008における発表資料

TRANSCRIPT

Page 1: RSpecによるRailsアプリケーションBDD事例

RSpecによるRailsアプリケーション

BDD事例Y u g u i

12008年6月23日月曜日

Page 2: RSpecによるRailsアプリケーションBDD事例

今日のお題Ruby on Rails

RSpec

BDD

Selenium統合

「こんな開発をしたチームがあるよ」

22008年6月23日月曜日

Page 3: RSpecによるRailsアプリケーションBDD事例

今日のお題

すごく、普通ですギーク → @ujihisa

32008年6月23日月曜日

Page 4: RSpecによるRailsアプリケーションBDD事例

まず42008年6月23日月曜日

Page 5: RSpecによるRailsアプリケーションBDD事例

自己紹介

Yugui (園田 裕貴)

http://yugui.jp

Ruby Issue Tracking System管理者

『初めてのRuby』

52008年6月23日月曜日

Page 6: RSpecによるRailsアプリケーションBDD事例

Ruby ITS

Redmineを採用

独自拡張あり (Githubで公開)

http://redmine.ruby-lang.org

62008年6月23日月曜日

Page 7: RSpecによるRailsアプリケーションBDD事例

初めてのRuby

オライリー・ジャパン

224ページ

定価2,310円

多目的ホールで先行販売中

72008年6月23日月曜日

Page 8: RSpecによるRailsアプリケーションBDD事例

宣伝了82008年6月23日月曜日

Page 9: RSpecによるRailsアプリケーションBDD事例

では92008年6月23日月曜日

Page 10: RSpecによるRailsアプリケーションBDD事例

Agenda

舞台

状況

ツール

お話

102008年6月23日月曜日

Page 11: RSpecによるRailsアプリケーションBDD事例

舞台

時に、2007年

今は亡き某社

公称30万PV/日の動画配信サイト

元はCOM+ASP.NET

112008年6月23日月曜日

Page 12: RSpecによるRailsアプリケーションBDD事例

舞台

Tさん: 長老

id:faultier

新人Yさん

テスター/サポート Aさん, Bさん

122008年6月23日月曜日

Page 13: RSpecによるRailsアプリケーションBDD事例

状況

大幅に機能を追加予定

毎日バグが出る

テストされていないコード

前回の機能追加は1ヶ月→3ヶ月

132008年6月23日月曜日

Page 14: RSpecによるRailsアプリケーションBDD事例

初期対応

Subversion, Trac

BuildとDeployの自動化

モジュールごとの差し換え

Seleniumの導入

142008年6月23日月曜日

Page 15: RSpecによるRailsアプリケーションBDD事例

初期対応: 反応

Subversion: 共有フォルダ代わりに

Trac: すぐ慣れた

Deploy自動化: 難航

Selenium: Selenium IDEですぐに慣れた

152008年6月23日月曜日

Page 16: RSpecによるRailsアプリケーションBDD事例

Selenium IDE

162008年6月23日月曜日

Page 17: RSpecによるRailsアプリケーションBDD事例

だが172008年6月23日月曜日

Page 18: RSpecによるRailsアプリケーションBDD事例

匙を投げる

事業方針上の加速要請

まだ毎日出るバグ

→ 対応でベテランが1名必要

複雑怪奇な依存関係

182008年6月23日月曜日

Page 19: RSpecによるRailsアプリケーションBDD事例

WEwLC

Working Effectivelywith

Legacy Code

192008年6月23日月曜日

Page 20: RSpecによるRailsアプリケーションBDD事例

要件

1ヶ月後のイベント

1ヶ月でリプレース + 機能追加

サイト構成の試行錯誤への追随

202008年6月23日月曜日

Page 21: RSpecによるRailsアプリケーションBDD事例

候補

Seasar2

Seasar2(.NET)

Ruby on Rails

212008年6月23日月曜日

Page 22: RSpecによるRailsアプリケーションBDD事例

決定要因1

そこにソースがあったから

パンがないならパンを焼けばいいじゃない

文句があるならバザールにいらっしゃい

222008年6月23日月曜日

Page 23: RSpecによるRailsアプリケーションBDD事例

決定要因2

RSpec

RSpec on Rails

モック/スタブの充実

慣れてるし

232008年6月23日月曜日

Page 24: RSpecによるRailsアプリケーションBDD事例

結果

phase 1 - リプレース - テストケース

phase 2 - Specの徹底 - 普及

phase 3 - BDD - 実践

242008年6月23日月曜日

Page 25: RSpecによるRailsアプリケーションBDD事例

phase 1

Selenium資産の活用

id:faultierとペアプロ

Coverage低め

1ヶ月でリプレース完了

252008年6月23日月曜日

Page 26: RSpecによるRailsアプリケーションBDD事例

SeleniumRC Spec

Motivation

Seleniumを使いたいがGUIは嫌

Selenium on Railsはなんか違う

RSpecの表現力が欲しい

262008年6月23日月曜日

Page 27: RSpecによるRailsアプリケーションBDD事例

リモートプログラムから

多様な言語で

ブラウザを操作

RSpecからも簡単

SeleniumRC =

272008年6月23日月曜日

Page 28: RSpecによるRailsアプリケーションBDD事例

SeleniumRC Specrequire File.dirname(__FILE__) + ‘/../spec_helper’

story "A reader visits our site" do senario "The reader", "views our toppage" do # You can use "he", "she" or "ve" she.opens "/" she.gets_title; it.should == "Hello, World!" endend

http://coderepos.org/share/wiki/SeleniumRcSpec

282008年6月23日月曜日

Page 29: RSpecによるRailsアプリケーションBDD事例

phase 2

Unspecified classesを端から処理

Coverage 100%へ

コードの7割はSpecに

292008年6月23日月曜日

Page 30: RSpecによるRailsアプリケーションBDD事例

phase 2

302008年6月23日月曜日

Page 31: RSpecによるRailsアプリケーションBDD事例

phase 2

「どういう風にSpecを書けばいいか分からない」

ペアプロによる勇気

適宜ペアを組み替え

Conventionによる強制

312008年6月23日月曜日

Page 32: RSpecによるRailsアプリケーションBDD事例

phase 3厳密なBDDへ

機能決定

スケジュール

Selenium

models, controllers, views, helpers

322008年6月23日月曜日

Page 33: RSpecによるRailsアプリケーションBDD事例

phase3: 機能決定

332008年6月23日月曜日

Page 34: RSpecによるRailsアプリケーションBDD事例

phase 3: スケジュール

342008年6月23日月曜日

Page 35: RSpecによるRailsアプリケーションBDD事例

phase 3: BDD

Red

Green

Refactor

352008年6月23日月曜日

Page 36: RSpecによるRailsアプリケーションBDD事例

結果

phase 1 - 先行実施

phase 2 - 真似ながら試行

phase 3 - 消化完了

362008年6月23日月曜日

Page 37: RSpecによるRailsアプリケーションBDD事例

結果

BDDの浸透

エラーはnilが問題

動的型付けのリスクは排除

「Specがあると安心できる」

372008年6月23日月曜日

Page 38: RSpecによるRailsアプリケーションBDD事例

おしまい

382008年6月23日月曜日

Page 39: RSpecによるRailsアプリケーションBDD事例

ご静聴ありがとうございました

392008年6月23日月曜日