SlideShare a Scribd company logo
エンドツーエンド検証
をJenkinsで回す話
2013.10.16 at shibuya.rb @iR3

13年10月16日水曜日
ルビールビールビー
Ruby大好き
福井修@iR3
2012 Rubykaja
sendagaya.rb
#七輪life

Ruby関西cofounder
13年10月16日水曜日

2009Ruby会議スタッフ
&スポンサー
結論を先に
• エンドツーエンド検証自動化の波を!
• Gherkin+Capybaraという検証DSLを
Turnipで使うのがよさげ

• Jenkinsでエンドツーエンド検証を回す

13年10月16日水曜日
カジュアルにテストして、
フォーマルに検証する

2013.9.21 toRuby
福井修@iR3
13年10月16日水曜日
経営

評価

Biz

リーン

開発

検証

運用

Dev

Ver

Ops
フォーマル

設計→実装→テスト
↓
↑
ここを俊敏に
繰り返し
やるのがAgile
13年10月16日水曜日

に検証

カジュアル
にテスト
開発

運用

Dev

Ops

開発

検証

運用

Dev

Ver

Ops

正しいということを検証するという
ベリフィケーション を経て受け渡し
13年10月16日水曜日
経営

評価

Biz

リーン

開発

検証

運用

Dev

Ver

Ops
フォーマル

設計→実装→テスト
↓
↑
ここを俊敏に
繰り返し
やるのがAgile
13年10月16日水曜日

に検証

カジュアル
にテスト
DevOps
DevOpsBiz

DevVerOpsBiz
Verfication
13年10月16日水曜日
Andreas Spillner:
“The W-MODEL – Strengthening the Bond Between Development and Test” STAREAST2002

13年10月16日水曜日
高信頼性ソフトウェアのための開発手法ハンドブックより
13年10月16日水曜日
http://www.ipa.go.jp/files/000005144.pdf
13年10月16日水曜日
「継続的デリバリー」より

13年10月16日水曜日
13年10月16日水曜日
経営

評価

Biz

リーン

開発

検証

運用

Dev

Ver

Ops

設計→実装→テスト
↓
↑
ここを俊敏に
繰り返し
やるのがAgile
13年10月16日水曜日

回帰テスト
受け入れテスト
システムテスト
エンドツーエンド検証
TurnipとCapybara

13年10月16日水曜日
Turnipとは?
feature ファイルと step_definitions ファイル
の構成 (Gherkin 書式) を RSpec 内で実行す
ることができるツール(Cucumberを使わない
でRspec一本化できる)
Cucumber の面倒さである正規表現を使用し
ないという改善(代わりにプレースフォルダ)

13年10月16日水曜日
13年10月16日水曜日
gherkin書式
システムの振る舞いを記述するための自然言
語に近い書式のこと。
Business Readable DSLとも呼ばれ、ベタなテ
ストコードにメタな説明 (機能・シナリオ・ス
テップ) の層 (レイヤ) を付加し、プログラム
の実装者でなく第三者や受け入れ者が記述し
理解できる (日本語でも記述できる) 道が開か
れました。
13年10月16日水曜日
demoサイト
関西Ruby会議05用Rails4 demoサイト
高速郵便番号検索
http:/
/kanrk05.ruby.iijgio.com/zipcodes
MOGOKは速い!
mogokでRails4は使える!
mogok無料枠美味しい!!!
13年10月16日水曜日
view01.feature
# encoding: utf-8
# language: ja
機能: 1.画面表示確認
シナリオ: 1.トップページ確認
前提 対象ページを表示する
ならば 'ようこそ 関西Ruby会議05' が表示されて
いること

13年10月16日水曜日
# encoding: utf-8

common_steps.rb

require 'capybara/rspec'
Capybara.javascript_driver = :webkit
step 'kanrk05サイトにアクセスする' do
Capybara.app_host = "http:/
/kanrk05.ruby.iijgio.com/"
Capybara.current_driver = :webkit
end
step 'トップページを表示する' do
visit '/'
end
step '対象ページを表示する' do
send 'kanrk05サイトにアクセスする'
send 'トップページを表示する'
end
step ":hoge が表示されていること" do |hoge|
expect(page).to have_content hoge
end
13年10月16日水曜日
エンドツーエンド検証の実行
エンドツーエンド検証スクリプトを個別に実行

$ rspec -r turnip/rspec --drb
spec/features/xxxxx.feature

13年10月16日水曜日
Turnip入門のソースコード
https:/
/github.com/ir3/e2etest

13年10月16日水曜日
エンドツーエンド検証
検証コンテンツ
Gherkin書式
xx.
feature

xx_steps
.rb

本番サーバ
expect

systemu
Turnip
Polterguist

Capybara

selenium

Jenkins

RSpec

Spork

13年10月16日水曜日

Capybarawebkit

ステージング
サーバ
Jenkinsインストール
Mac
$ brew install jenkins
CentOS
まずJava
$ sudo yum -y install java-1.7.0-openjdk
次にJenkins
$ sudo yum install -y jenkins
13年10月16日水曜日
Jenkins稼動
Mac で都度起動
$ java -jar /usr/local/opt/jenkins/libexec/jenkins.war
CentOSで常時起動
環境変数に追加
export JENKINS_HOME=/var/lib/jenkins
自動起動
# chkconfig jenkins on
13年10月16日水曜日
新規作成

13年10月16日水曜日
命名

13年10月16日水曜日
13年10月16日水曜日
設定

13年10月16日水曜日
13年10月16日水曜日
13年10月16日水曜日
sporkにてRailsをプレロードしている前提でdrb経由
rspec からfeatureファイルの実行を指示

オプションは.rspecで指定できるがあえて個

別指定する。 ビルド(テスト)を並列実行す
る場合はsporkのポート番号を変える為。
13年10月16日水曜日
出来上がり
13年10月16日水曜日
Jenkinsビルド要求前に

spork でRailsをプレロード
$ spork rspec

~/e2etest
Using RSpec, Unknown
Loading Spork.prefork block...
Spork is ready and listening on 8989!

13年10月16日水曜日
実行要求

13年10月16日水曜日
おまけ DSL 7レンジャー
Rails,sinatraはWebのDSL
RSpecはテストのDSL
ChefはシステムアドミストレーションのDSL
Fluentdはマシン間配送のDSL
+
Gherkinは仕様記述DSL
Capybaraはe2e検証のDSL
13年10月16日水曜日
ご清聴ありがとうございました
• エンドツーエンド検証自動化の波を!
• Gherkin+Capybaraという検証DSLを
Turnipで使うのがよさげ

• Jenkinsでエンドツーエンド検証を回す

13年10月16日水曜日

More Related Content

20131016 エンドツーエンド検証をJenkinsで回す話 #shibuyarb