38
エンドツーエンド検証 Jenkinsで回す話 2013.10.16 at shibuya.rb @iR3 131016日水曜日

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

Embed Size (px)

DESCRIPTION

・エンドツーエンド検証自動化の波を! ・Gherkin+Capybaraという検証DSLをTurnipで使うのがよさげ ・Jenkinsでエンドツーエンド検証を回す

Citation preview

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

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

2013.10.16 at shibuya.rb @iR3

13年10月16日水曜日

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

ルビールビールビーRuby大好き

福井修@iR3

2012 Rubykaja

sendagaya.rb

#七輪life

Ruby関西cofounder2009Ruby会議スタッフ

&スポンサー13年10月16日水曜日

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

結論を先に

•エンドツーエンド検証自動化の波を!

• Gherkin+Capybaraという検証DSLをTurnipで使うのがよさげ

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

13年10月16日水曜日

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

カジュアルにテストして、フォーマルに検証する

2013.9.21 toRuby 福井修@iR3

13年10月16日水曜日

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

開発Dev

運用Ops

検証Ver

設計→実装→テスト↓↑

ここを俊敏に繰り返し

やるのがAgile

経営Biz

評価リーン

フォーマルに検証

カジュアルにテスト

13年10月16日水曜日

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

開発Dev

運用Ops

検証Ver

開発Dev

運用Ops

正しいということを検証するという

ベリフィケーション を経て受け渡し13年10月16日水曜日

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

開発Dev

運用Ops

検証Ver

設計→実装→テスト↓↑

ここを俊敏に繰り返し

やるのがAgile

経営Biz

評価リーン

フォーマルに検証

カジュアルにテスト

13年10月16日水曜日

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

DevOps

DevOpsBiz

DevVerOpsBizVerfication

13年10月16日水曜日

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

Andreas Spillner:“The W-MODEL – Strengthening the Bond Between Development and Test” STAREAST2002

13年10月16日水曜日

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

高信頼性ソフトウェアのための開発手法ハンドブックより13年10月16日水曜日

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

http://www.ipa.go.jp/files/000005144.pdf

13年10月16日水曜日

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

「継続的デリバリー」より

13年10月16日水曜日

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

13年10月16日水曜日

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

開発Dev

運用Ops

検証Ver

設計→実装→テスト↓↑

ここを俊敏に繰り返し

やるのがAgile

回帰テスト受け入れテストシステムテスト

経営Biz

評価リーン

13年10月16日水曜日

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

エンドツーエンド検証TurnipとCapybara

13年10月16日水曜日

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

Turnipとは?feature ファイルと step_definitions ファイルの構成 (Gherkin 書式) を RSpec 内で実行することができるツール(Cucumberを使わないでRspec一本化できる)

Cucumber の面倒さである正規表現を使用しないという改善(代わりにプレースフォルダ)

13年10月16日水曜日

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

13年10月16日水曜日

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

gherkin書式システムの振る舞いを記述するための自然言語に近い書式のこと。

Business Readable DSLとも呼ばれ、ベタなテストコードにメタな説明 (機能・シナリオ・ステップ) の層 (レイヤ) を付加し、プログラムの実装者でなく第三者や受け入れ者が記述し理解できる (日本語でも記述できる) 道が開かれました。

13年10月16日水曜日

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

demoサイト関西Ruby会議05用Rails4 demoサイト

高速郵便番号検索

http://kanrk05.ruby.iijgio.com/zipcodes

MOGOKは速い!

mogokでRails4は使える!mogok無料枠美味しい!!!

13年10月16日水曜日

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

# encoding: utf-8# language: ja機能: 1.画面表示確認 シナリオ: 1.トップページ確認 前提 対象ページを表示する ならば 'ようこそ 関西Ruby会議05' が表示されていること

view01.feature

13年10月16日水曜日

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

# encoding: utf-8

require 'capybara/rspec'Capybara.javascript_driver = :webkit

step 'kanrk05サイトにアクセスする' do

Capybara.app_host = "http://kanrk05.ruby.iijgio.com/" Capybara.current_driver = :webkitend

step 'トップページを表示する' do

visit '/'end

step '対象ページを表示する' do

send 'kanrk05サイトにアクセスする'

send 'トップページを表示する'

end

step ":hoge が表示されていること" do |hoge|

expect(page).to have_content hogeend

common_steps.rb

13年10月16日水曜日

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

エンドツーエンド検証の実行

エンドツーエンド検証スクリプトを個別に実行

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

13年10月16日水曜日

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

Turnip入門のソースコード

https://github.com/ir3/e2etest

13年10月16日水曜日

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

Jenkins

検証コンテンツGherkin書式

RSpec

Turnip

xx.feature

xx_steps.rb

Capybara

Spork

Capybara-webkit

Polterguist

selenium

systemu

expect本番サーバ

ステージングサーバ

エンドツーエンド検証

13年10月16日水曜日

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

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日水曜日

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

Jenkins稼動Mac で都度起動$ java -jar /usr/local/opt/jenkins/libexec/jenkins.war

CentOSで常時起動環境変数に追加export JENKINS_HOME=/var/lib/jenkins

自動起動# chkconfig jenkins on

13年10月16日水曜日

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

新規作成

13年10月16日水曜日

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

命名

13年10月16日水曜日

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

13年10月16日水曜日

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

設定

13年10月16日水曜日

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

13年10月16日水曜日

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

13年10月16日水曜日

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

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

オプションは.rspecで指定できるがあえて個別指定する。 ビルド(テスト)を並列実行する場合はsporkのポート番号を変える為。

13年10月16日水曜日

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

出来上がり13年10月16日水曜日

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

spork でRailsをプレロード

~/e2etest $ spork rspecUsing RSpec, UnknownLoading Spork.prefork block...Spork is ready and listening on 8989!

Jenkinsビルド要求前に

13年10月16日水曜日

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

実行要求

13年10月16日水曜日

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

Rails,sinatraはWebのDSLRSpecはテストのDSL

ChefはシステムアドミストレーションのDSLFluentdはマシン間配送のDSL

+Gherkinは仕様記述DSL

Capybaraはe2e検証のDSL

おまけ DSL 7レンジャー

13年10月16日水曜日

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

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

•エンドツーエンド検証自動化の波を!

• Gherkin+Capybaraという検証DSLをTurnipで使うのがよさげ

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

13年10月16日水曜日