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