Gws in fukuoka
Upcoming SlideShare
Loading in...5
×
 

Gws in fukuoka

on

  • 1,221 views

G*ワークショップ in 福岡の資料です。

G*ワークショップ in 福岡の資料です。

Statistics

Views

Total Views
1,221
Views on SlideShare
1,181
Embed Views
40

Actions

Likes
4
Downloads
7
Comments
0

2 Embeds 40

https://twitter.com 39
https://si0.twimg.com 1

Accessibility

Categories

Upload Details

Uploaded via as Apple Keynote

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n
  • \n

Gws in fukuoka Gws in fukuoka Presentation Transcript

  • Java のコードを 1/4 にするグルービーなテストを導入しよう!2012/09/01 G* ワークショップ in 福岡綿引 琢磨
  • 自己紹介綿引琢磨(わたびきたくま)株式会社デライトテクノロジーズ 代表取締役JGGUG運営委員/ぐるーびーたん原作ダークサイドの人twitter : @bikisuke
  • 今どきのテスト事情xUnit、TDD(BC) の普及書籍、情報の充実エンジニアの意識の変化それでも... テストツールの利用率は3割弱 http://itpro.nikkeibp.co.jp/article/COLUMN/20110512/360286/?ST=develop
  • そのテストは何のため?目的が曖昧なテストパターン網羅できていないリファクタリングの足かせになっているテスト共通化のしすぎ or 冗長なコードMock が大変
  • 幸せになるためには・・・テストの基礎を学ぶテスト戦略、テスト計画、テスト技法テストコードのリファクタリング不要なテストコードを捨てる簡潔にテストを書けるツールを採用する
  • そこで グルービー ですよ
  • グルービーなテストをしよう!
  • グルービーなテストGroovy を利用する Power AssertSpock Framework を利用する Mock, Data Driven Testing, Functional TestingGeb + テストフレームワーク を利用する Page Object with Spock
  • Groovy を利用する
  • Power Assert によるテストimport org.junit.Testclass CampaignRateTest {! private CampaignRate testee = new CampaignRate()! @Test! public void testGetRateWithBook_Assert() {! ! Cart cart1 = createCart true, 5, 3000! ! assert testee.getRateWithBook(cart1) == 5! }! def createCart(existBooks, itemCount, totalPrice) {! ! Cart cart = new Cart()! ! cart.setExistBooks existBooks! ! cart.setItemCount itemCount! ! cart.setTotalPrice totalPrice! ! cart! }}
  • Spock Framework を利用する
  • Spock Framework とはGroovy ベースのテストフレームワーク プログラマに焦点を当てたBDDツールJUnit 互換で IDE 統合も容易ノイズの少ないテストコードユニットテストも機能テストも対応可能
  • Spock による Mock テストimport spock.lang.Specificationclass CampaignRateMockSpec extends Specification {! CampaignRate testee = new CampaignRate()! def "Mockを用いて、カート内にキャンペーン商品が存在するかを確認する。"() {! ! setup:! ! ItemCheck cart = Mock()! ! cart.existBooks() >> true! ! expect:! ! testee.hasCampaignItem(cart) == true! }}
  • Spock によるデータドリブンテストimport spock.lang.Specificationimport spock.lang.Unrollclass HelloFukuokaSpec extends Specification {! @Unroll! def "稚加榮のランチメニューの文字数を確認する" () {! ! expect:! ! menu.size() == length! ! where:! ! menu | length! ! "和定食" |3! ! "そば定食" | 4! }}
  • Spock による機能テストimport spock.lang.Specificationclass StackSpec extends Specification { def stack = new Stack()! def "push したものは、peek により取り出せる" () {! ! when:! ! stack.push "something"! ! then:! ! stack.size() == 1! ! stack.peek() == "something"! }}
  • Geb + テストフレームワークを利用する
  • Geb とはGroovy で実装された自動化ライブラリWebDriver をラップし、jQuery 的な記述が可能 Page Object パターンで画面を構造化すると さらに使いやすい様々なテストフレームワークと連携可能 JUnit, Spock, Easyb, TestNG, Cuke4Duke
  • Geb + Spock によるWebテストimport geb.spock.GebReportingSpecimport org.jggug.demo.pages.*class WebTestSpec extends GebReportingSpec { def "Hello画面で[JGGUG]と入力しgreetボタンを押すと Greet画面に遷移し[Hello, JGGUG]と表示する。"() { when: to HelloPage username = JGGUG and: greetButton.click() then: at GreetingPage and: h1Text == Hello, JGGUG! }}
  • 参考URLSpock http://code.google.com/p/spock/ https://github.com/spockframework/spockGeb http://www.gebish.org/ https://github.com/geb/gebSpock開発環境 http://d.hatena.ne.jp/absj31/20120806/1344272593
  • Java のコードを 1/4 にするグルービーなテストを導入しよう!2012/09/01 G* ワークショップ in 福岡綿引 琢磨