Upload
fukui-osamu
View
1.508
Download
0
Embed Size (px)
DESCRIPTION
・エンドツーエンド検証自動化の波を! ・Gherkin+Capybaraという検証DSLをTurnipで使うのがよさげ ・Jenkinsでエンドツーエンド検証を回す
Citation preview
エンドツーエンド検証をJenkinsで回す話
2013.10.16 at shibuya.rb @iR3
13年10月16日水曜日
ルビールビールビーRuby大好き
福井修@iR3
2012 Rubykaja
sendagaya.rb
#七輪life
Ruby関西cofounder2009Ruby会議スタッフ
&スポンサー13年10月16日水曜日
結論を先に
•エンドツーエンド検証自動化の波を!
• Gherkin+Capybaraという検証DSLをTurnipで使うのがよさげ
• Jenkinsでエンドツーエンド検証を回す
13年10月16日水曜日
カジュアルにテストして、フォーマルに検証する
2013.9.21 toRuby 福井修@iR3
13年10月16日水曜日
開発Dev
運用Ops
検証Ver
設計→実装→テスト↓↑
ここを俊敏に繰り返し
やるのがAgile
経営Biz
評価リーン
フォーマルに検証
カジュアルにテスト
13年10月16日水曜日
開発Dev
運用Ops
検証Ver
開発Dev
運用Ops
正しいということを検証するという
ベリフィケーション を経て受け渡し13年10月16日水曜日
開発Dev
運用Ops
検証Ver
設計→実装→テスト↓↑
ここを俊敏に繰り返し
やるのがAgile
経営Biz
評価リーン
フォーマルに検証
カジュアルにテスト
13年10月16日水曜日
DevOps
DevOpsBiz
DevVerOpsBizVerfication
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日水曜日
開発Dev
運用Ops
検証Ver
設計→実装→テスト↓↑
ここを俊敏に繰り返し
やるのがAgile
回帰テスト受け入れテストシステムテスト
経営Biz
評価リーン
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日水曜日
# encoding: utf-8# language: ja機能: 1.画面表示確認 シナリオ: 1.トップページ確認 前提 対象ページを表示する ならば 'ようこそ 関西Ruby会議05' が表示されていること
view01.feature
13年10月16日水曜日
# 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日水曜日
エンドツーエンド検証の実行
エンドツーエンド検証スクリプトを個別に実行
$ rspec -r turnip/rspec --drb spec/features/xxxxx.feature
13年10月16日水曜日
Turnip入門のソースコード
https://github.com/ir3/e2etest
13年10月16日水曜日
Jenkins
検証コンテンツGherkin書式
RSpec
Turnip
xx.feature
xx_steps.rb
Capybara
Spork
Capybara-webkit
Polterguist
selenium
systemu
expect本番サーバ
ステージングサーバ
エンドツーエンド検証
13年10月16日水曜日
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日水曜日
spork でRailsをプレロード
~/e2etest $ spork rspecUsing RSpec, UnknownLoading Spork.prefork block...Spork is ready and listening on 8989!
Jenkinsビルド要求前に
13年10月16日水曜日
実行要求
13年10月16日水曜日
Rails,sinatraはWebのDSLRSpecはテストのDSL
ChefはシステムアドミストレーションのDSLFluentdはマシン間配送のDSL
+Gherkinは仕様記述DSL
Capybaraはe2e検証のDSL
おまけ DSL 7レンジャー
13年10月16日水曜日
ご清聴ありがとうございました
•エンドツーエンド検証自動化の波を!
• Gherkin+Capybaraという検証DSLをTurnipで使うのがよさげ
• Jenkinsでエンドツーエンド検証を回す
13年10月16日水曜日