Diese Präsentation wurde erfolgreich gemeldet.
Wir verwenden Ihre LinkedIn Profilangaben und Informationen zu Ihren Aktivitäten, um Anzeigen zu personalisieren und Ihnen relevantere Inhalte anzuzeigen. Sie können Ihre Anzeigeneinstellungen jederzeit ändern.
テスト自動化のアプローチ拡張トレンド
∼e2eはExcel項目定義手動テスト
からTurnip自動テストへ∼

2014.2.12 DevLove #157
福井修 @iR3
ルビールビールビー
Ruby大好き
福井修@iR3
2012 Rubykaja
sendagaya.rb
#七輪life

Ruby関西cofounder

2009Ruby会議スタッフ

&スポンサー
2002年KOFにて Matzを囲む
エンドツーエンドにはTurnip
from 2009.11
刻言道場「まいトレ」
http://maitore.net/
販売管理・在庫管理システム

株式会社 iRubySystems
世間の動向
ドメイン特化言語
(DSL:Domain Specific Language)

DSLのLをLibraryと広義に解釈すると…
Rails,sinatraはWebのDSL
ChefはシステムアドミストレーションのDSL
Fluentdはマシン間配送のDSL
RSpecはテストのDSL
Gherkinは仕様記述DSL
Capybaraはe2e検証のDSL
結論を先に
• Rubyの進んだテストツールを使うと自動
テストも美味しくええとこ取りできる

• エンドツーエンド(e2e)テスト自動化に
は Gherkin+Capybara +Turnip   
ライブラリが有利

• 外部テスト管理ツー...
CucumberとTurnipを
利用するメリットの
本質は
Gherkinにあり
時代の流れの背景

テスト自動化のうねり
Andreas Spillner:	

“The W-MODEL – Strengthening the Bond Between Development and Test” STAREAST2002
http://www.ipa.go.jp/files/000005144.pdf
高信頼性ソフトウェアのための開発手法ハンドブックより
テストの種類
1.単体テスト、Unit-Test
2.結合テスト、Integration-Test,Component-Test
3.システムテスト、System-Test,e2e-Test
4.受け入れテスト、Acceptance-Test
...
内部テスト
内部テストは「ホワイトボックステスト」
プログラマが意図したとおりにプログラムが
動作することを確認するテストのこと
具体的には、プログラマが変数の値を変えな
がらコードを直接実行して、期待する結果が
得られるかどうかを検証
外部テスト
外部テストは「ブラックボックステスト」
プログラムのコードに立ち入ることなくプログラムの外部イ
ンターフェース (画面 etc.) を介して評価
→

エンドツーエンドテスト

 エンドツーエンドは略して e2e
経営


評価

リーン

Biz
開発


検証


運用


Dev

Ver

Ops

設計→実装→テスト
↓
↑
ここを俊敏に繰り返し

やるのがAgile,TDD/BDD

(回帰テスト)

システムテスト

受け入れテスト

e2...
経営


評価

リーン

Biz
開発


検証


運用


Dev

Ver

Ops

設計→実装→テスト
↓
↑
ここを俊敏に

繰り返し

やるのがAgile

フォーマル

に検証

カジュアル

にテスト
『自動テストのニーズはベタからメタへ』
!

 ベタ ←――――――――――――――→ メタ
Unit Test → Integration Test       
         → System Test、e2eTest
→ 回帰テスト
...
Unitテスト自動化
↓
e2eテスト自動化
『テストツールもベタからメタへ』
!

 ベタ ←――――――――――――――→ メタ
!

 Test::Unit → RSpec
→ Gherkin (Cucumber/Turnip)
るびま42号 「エンドツーエンドテストの自動化は Cu...
CucumberとTurnip
・featureファイルと step_definitionsファイル

の構成 (Gherkin 書式) を 実行するのは同じ
・Cucumberは独立なプログラム(2本立て)
・TurnipはRSpec内で実行す...
検証項目列挙方式
単体テスト項目積み上げ

ボトムアップアプローチ

TDD/BDDの


機能仕様書から掘り下げ

トップダウンアプローチ

Excelシート


成果物

テスト設計
出典:るびま42号
gherkin書式
システムの振る舞いを記述するための自然言語に近い
書式
Business Readable DSLとも呼ばれ、ベタなテストコー
ドにメタな説明 (機能・シナリオ・ステップ) の層 (レ
イヤ) を付加し、プログラムの実装者で...
Gherkin書式の導入で
プログラマ以外の
関係者による日本語
テストシナリオの記述
が可能に
そこが画期的!!
Gerkin書式は
 1.機能feature
 2.シナリオ
 3.ステップ
の3階層で記述
具体的な.featureファイルへ
view01.feature
# encoding: utf-8

# language: ja

機能: 1.画面表示確認

シナリオ: 1.トップページ確認

前提 対象ページを表示する

ならば 'ようこそ 関西Ruby会議05' が表示...
view02.feature
## encoding: utf-8

# language: ja

機能: 2.検索動作確認

シナリオ: 2.一覧確認

前提 対象ページを表示する

かつ 郵便番号一覧 をクリックする

ならば Zipco...
xx_steps.rbは
featureファイルでステップ
に記述した具体的な操作を
RSpecとCapybaraの
ライブラリの仕様にて
Rubyスクリプトで実装
具体的なsteps.rbファイルへ
# encoding: utf-8

!
require 'capybara/rspec'

Capybara.javascript_driver = :webkit

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

Capyba...
view2_steps.rb

#encoding: utf-8

!

step '郵便番号一覧 をクリックする' do

#click_link '郵便番号一覧'

first(:link, '郵便番号一覧').click

end
自動化の肝は、.featureファイルとxx_step.rbファイルの作成
この2種類のファイルさえ作成すれば、ツール群で自動実行可能!
ただしxx_step.rbに記述できない処理は当然実行できない

Excelテストケース

.featur...
環境構築
Turnip入門
http://magazine.rubyist.net/?0042-FromCucumberToTurnip#l36
Turnipインストール
Gemfileでturnip..を組み込み指定 2014.2.12時点では
Turnipは1.2.0, capybaraは2.1.0, capybara-webkitは1.1.1, gherkinは2.12.2
(Rai...
エンドツーエンド検証の実行
エンドツーエンド検証スクリプトを個別に実行

$ rspec -r turnip/rspec --drb
spec/features/xxxxx.feature
demoサイト
関西Ruby会議05用Rails4 demoサイト

高速郵便番号検索 

http:/
/kanrk05.ruby.iijgio.com/zipcodes
MOGOKは速い!
mogokでRails4は使える!(一部制約あり)...
Turnip入門のソースコード
https:/
/github.com/ir3/e2etest
次なるテーマ

テストコンテンツの
管理へ
再びまとめ
• Rubyの進んだテストツールを使うと自動
テストも美味しくええとこ取りできる

• エンドツーエンド(e2e)テスト自動化に
は Gherkin+Capybara +Turnip   
ライブラリが有利

• 外部テスト管理ツー...
おまけ
RSpec自体はテストを記述するためのドメイン特
化言語(DSL:Domain Specific Language)を提
供するフレームワークなので、まさに「言語」と
して広い範囲をカバー
feature spec、request specs、c...
20140212 develove テスト自動化のアプローチ拡張トレンド 〜Excel項目定義手動テストから自動テストへ〜
20140212 develove テスト自動化のアプローチ拡張トレンド 〜Excel項目定義手動テストから自動テストへ〜
20140212 develove テスト自動化のアプローチ拡張トレンド 〜Excel項目定義手動テストから自動テストへ〜
20140212 develove テスト自動化のアプローチ拡張トレンド 〜Excel項目定義手動テストから自動テストへ〜
Nächste SlideShare
Wird geladen in …5
×

20140212 develove テスト自動化のアプローチ拡張トレンド 〜Excel項目定義手動テストから自動テストへ〜

5.662 Aufrufe

Veröffentlicht am

Veröffentlicht in: Technologie
  • Als Erste(r) kommentieren

20140212 develove テスト自動化のアプローチ拡張トレンド 〜Excel項目定義手動テストから自動テストへ〜

  1. 1. テスト自動化のアプローチ拡張トレンド ∼e2eはExcel項目定義手動テスト からTurnip自動テストへ∼ 2014.2.12 DevLove #157 福井修 @iR3
  2. 2. ルビールビールビー Ruby大好き 福井修@iR3 2012 Rubykaja sendagaya.rb #七輪life Ruby関西cofounder 2009Ruby会議スタッフ &スポンサー
  3. 3. 2002年KOFにて Matzを囲む
  4. 4. エンドツーエンドにはTurnip
  5. 5. from 2009.11 刻言道場「まいトレ」 http://maitore.net/ 販売管理・在庫管理システム 株式会社 iRubySystems
  6. 6. 世間の動向
  7. 7. ドメイン特化言語 (DSL:Domain Specific Language) DSLのLをLibraryと広義に解釈すると…
  8. 8. Rails,sinatraはWebのDSL ChefはシステムアドミストレーションのDSL Fluentdはマシン間配送のDSL RSpecはテストのDSL Gherkinは仕様記述DSL Capybaraはe2e検証のDSL
  9. 9. 結論を先に • Rubyの進んだテストツールを使うと自動 テストも美味しくええとこ取りできる • エンドツーエンド(e2e)テスト自動化に は Gherkin+Capybara +Turnip    ライブラリが有利 • 外部テスト管理ツールもそろそろExcel からWebDBに
  10. 10. CucumberとTurnipを 利用するメリットの 本質は Gherkinにあり
  11. 11. 時代の流れの背景 テスト自動化のうねり
  12. 12. Andreas Spillner: “The W-MODEL – Strengthening the Bond Between Development and Test” STAREAST2002
  13. 13. http://www.ipa.go.jp/files/000005144.pdf
  14. 14. 高信頼性ソフトウェアのための開発手法ハンドブックより
  15. 15. テストの種類 1.単体テスト、Unit-Test 2.結合テスト、Integration-Test,Component-Test 3.システムテスト、System-Test,e2e-Test 4.受け入れテスト、Acceptance-Test (5.回帰テスト、regression-Test) テストは、視点や範囲の違いでベタからメタ方向に 守備範囲の違いで区別があり 当然自動テストにもこの区別は該当
  16. 16. 内部テスト 内部テストは「ホワイトボックステスト」 プログラマが意図したとおりにプログラムが 動作することを確認するテストのこと 具体的には、プログラマが変数の値を変えな がらコードを直接実行して、期待する結果が 得られるかどうかを検証
  17. 17. 外部テスト 外部テストは「ブラックボックステスト」 プログラムのコードに立ち入ることなくプログラムの外部イ ンターフェース (画面 etc.) を介して評価 → エンドツーエンドテスト  エンドツーエンドは略して e2e
  18. 18. 経営 評価 リーン Biz 開発 検証 運用 Dev Ver Ops 設計→実装→テスト ↓ ↑ ここを俊敏に繰り返し やるのがAgile,TDD/BDD (回帰テスト) システムテスト 受け入れテスト e2eテスト 2013.9.21toRuby「カジュアルにテストして、 フォーマルに検証する」に加筆
  19. 19. 経営 評価 リーン Biz 開発 検証 運用 Dev Ver Ops 設計→実装→テスト ↓ ↑ ここを俊敏に 繰り返し やるのがAgile フォーマル に検証 カジュアル にテスト
  20. 20. 『自動テストのニーズはベタからメタへ』 !  ベタ ←――――――――――――――→ メタ Unit Test → Integration Test                 → System Test、e2eTest → 回帰テスト るびま42号 「エンドツーエンドテストの自動化は Cucumber から Turnip へ」を編集
  21. 21. Unitテスト自動化 ↓ e2eテスト自動化
  22. 22. 『テストツールもベタからメタへ』 !  ベタ ←――――――――――――――→ メタ !  Test::Unit → RSpec → Gherkin (Cucumber/Turnip) るびま42号 「エンドツーエンドテストの自動化は Cucumber から Turnip へ」より
  23. 23. CucumberとTurnip ・featureファイルと step_definitionsファイル の構成 (Gherkin 書式) を 実行するのは同じ ・Cucumberは独立なプログラム(2本立て) ・TurnipはRSpec内で実行することができる    (RSpec一本化) ・Cucumberは正規表現を使用(結構面倒) ・Turnipは代わりにプレースフォルダ
  24. 24. 検証項目列挙方式 単体テスト項目積み上げ ボトムアップアプローチ TDD/BDDの 機能仕様書から掘り下げ トップダウンアプローチ Excelシート 成果物 テスト設計
  25. 25. 出典:るびま42号
  26. 26. gherkin書式 システムの振る舞いを記述するための自然言語に近い 書式 Business Readable DSLとも呼ばれ、ベタなテストコー ドにメタな説明 (機能・シナリオ・ステップ) の層 (レ イヤ) を付加し、プログラムの実装者でなく第三者や受 け入れ者が記述し理解できる (日本語でも記述できる) https://github.com/cucumber/cucumber/wiki/ Gherkin
  27. 27. Gherkin書式の導入で プログラマ以外の 関係者による日本語 テストシナリオの記述 が可能に そこが画期的!!
  28. 28. Gerkin書式は  1.機能feature  2.シナリオ  3.ステップ の3階層で記述
  29. 29. 具体的な.featureファイルへ
  30. 30. view01.feature # encoding: utf-8 # language: ja 機能: 1.画面表示確認 シナリオ: 1.トップページ確認 前提 対象ページを表示する ならば 'ようこそ 関西Ruby会議05' が表示されて いること
  31. 31. view02.feature ## encoding: utf-8 # language: ja 機能: 2.検索動作確認 シナリオ: 2.一覧確認 前提 対象ページを表示する かつ 郵便番号一覧 をクリックする ならば Zipcode が表示されていること !
  32. 32. xx_steps.rbは featureファイルでステップ に記述した具体的な操作を RSpecとCapybaraの ライブラリの仕様にて Rubyスクリプトで実装
  33. 33. 具体的なsteps.rbファイルへ
  34. 34. # encoding: utf-8 ! 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
  35. 35. view2_steps.rb #encoding: utf-8 ! step '郵便番号一覧 をクリックする' do #click_link '郵便番号一覧' first(:link, '郵便番号一覧').click end
  36. 36. 自動化の肝は、.featureファイルとxx_step.rbファイルの作成 この2種類のファイルさえ作成すれば、ツール群で自動実行可能! ただしxx_step.rbに記述できない処理は当然実行できない Excelテストケース .feature ファイル xx_step.rb ファイル Excelから文言を抜き出 して.featureの骨組みを 作るツールは作成可能 step.rbファイルを記述するには Capybara,Rspecのmatcherや Web操作仕様の詳細を理解し ておく必要があり習熟コストは かかる
  37. 37. 環境構築
  38. 38. Turnip入門 http://magazine.rubyist.net/?0042-FromCucumberToTurnip#l36
  39. 39. Turnipインストール Gemfileでturnip..を組み込み指定 2014.2.12時点では Turnipは1.2.0, capybaraは2.1.0, capybara-webkitは1.1.1, gherkinは2.12.2 (Rails4ではプレロードはsporkからspringに) group :development, :test do gem 'capybara-webkit' gem 'headless' gem 'rspec-rails' gem 'spork', ' > 1.0.0rc4' gem 'turnip' end
  40. 40. エンドツーエンド検証の実行 エンドツーエンド検証スクリプトを個別に実行 $ rspec -r turnip/rspec --drb spec/features/xxxxx.feature
  41. 41. demoサイト 関西Ruby会議05用Rails4 demoサイト 高速郵便番号検索 http:/ /kanrk05.ruby.iijgio.com/zipcodes MOGOKは速い! mogokでRails4は使える!(一部制約あり) mogok無料枠美味しい!!!
  42. 42. Turnip入門のソースコード https:/ /github.com/ir3/e2etest
  43. 43. 次なるテーマ テストコンテンツの 管理へ
  44. 44. 再びまとめ • Rubyの進んだテストツールを使うと自動 テストも美味しくええとこ取りできる • エンドツーエンド(e2e)テスト自動化に は Gherkin+Capybara +Turnip    ライブラリが有利 • 外部テスト管理ツールもそろそろExcel からWebDBに
  45. 45. おまけ
  46. 46. RSpec自体はテストを記述するためのドメイン特 化言語(DSL:Domain Specific Language)を提 供するフレームワークなので、まさに「言語」と して広い範囲をカバー feature spec、request specs、controller spec の使い分け feature spec : システムテスト,e2eテスト request specs : インテグレーションテスト controller spec : ユニットテスト

×