『JUnit実践入門』写経・実践会 in 横浜 #4 を開催してきた #junitbook


前回第3回からほぼ1ヶ月後の開催となった第4回。対象は『第12章 データベースのテスト』。

JUnit実践入門 ~体系的に学ぶユニットテストの技法 (WEB+DB PRESS plus)

JUnit実践入門 ~体系的に学ぶユニットテストの技法 (WEB+DB PRESS plus)


会場は毎度お馴染み横浜タネマキ。引き続き今回も貸切開催です。回を重ねていく毎に、参加人数も徐々に増えて来ている感じですね。

そして開催に前乗りする形でタネマキに訪れる人も地味〜に増えて来ている模様です。お目当ては…やはり『ジョジョ』でした!w 事前に、または休憩時間にジョジョを携え、読み耽る人も増え始めています。

進行資料

"DB"と言う事で、若干勘違いした方向のままのテイストで今回は突っ走ってみました...まぁ大目に見てやってください。|ω・`)

座席表


作ってみました。台紙はタネマキさんの公式HPから拝借w 参加メンバーは14/17名。座席数的には20名近くは(スペース的にも)行けそうなので、いずれどこかでその辺りまで増えてくれると嬉しいですね。

書籍対象範囲ディスカッション【第12章 データベースのテスト】

本編メインのこのコーナー。ページ数的にもそこまで多く無さそうなので割とサクッと終わっちゃうのかな?とも思いましたが、予想に反してディスカッションは盛り上がりを見せておりました。特に12.1の項等は1時間弱位はテーマを変えつつ話し込んでいたような感じでした。以下流れをメモ。

12.1. データベースに依存するユニットテスト
  • P.200にある『Web3層構造』から:この辺りを意識したテスト、やっている&出来ているか?
    • Seasar2では意識しているが、Playframeworkではそうでは無い。
  • 『スローテスト』について
    • データベース周りのテストを行なっていく上で、場合によっては『スローテスト』問題に絡んで来る事も多い。
    • パフォーマンスが要求される場合はガリガリSQLを書かなければならないケースも。
    • 単体ではH2 Databaseを使うなど対処している。
    • CRM製品を使っているのだが、色々事情があってテスト実行(等)に7時間位掛かるw
      • カバレッジ率75%以上じゃないとデプロイ出来ない、また単体環境でテスト実行が出来ない、等の制限もある模様。

    • 実際にこのような状況(スローテストが問題化するような状況)で、テストを分割して実践している人は居る?
      • 個人アプリでは実践している、と言う人も。しかし職場ではそこまで問題になるほどテストを書いていない…という声も多かった。
  • 開発DBが共有されていると、喧嘩になる件
    • 割とちょいちょい良くある。
    • あぁ…自分も昔あったなぁ...(トオイメ
    • 片方がデバッグしてたが為にロックされ、喧嘩・不穏な空気に...
    • フレームワークによっては設定値切り替えで対応することも出来る。
  • マイグレーションツールについて:DBテストから話題が移り、この辺りの情報を管理するツール等の話にも言及されていました。
    • FlyWay



DBに纏わるテストを行う上では、マイグレーションやバージョン管理等の問題も絡んでくることでそうそう簡単に深入り出来る状況でも無い(コストとの兼ね合い)、というコメントもちらほらと聞かれてました。そうなってくるとやはり『データベースリファクタリング』辺りに着手して行く事になるのでしょう。今回学んだ事によりこの本にもより一層興味が湧いて来ました。

データベース・リファクタリング

データベース・リファクタリング

  • 作者: スコット W アンブラー,ピラモド・サダラージ,梅澤真史,越智典子,小黒直樹
  • 出版社/メーカー: ピアソンエデュケーション
  • 発売日: 2008/03/26
  • メディア: 単行本
  • 購入: 10人 クリック: 211回
  • この商品を含むブログ (53件) を見る

12.2. ユニットテストの自動化とH2 Database

分量的に1ページに満たないボリュームのこの項。写経を進めて行く上で動かない事象が発生していたので、その辺りの問題解決にちなんだトークが展開されてました。

12.3. DbUnitによるデータベースのテスト

この辺については、『Seasar2やPlay、またはその他のフレームワークで割とサクッと導入出来ているので、(それに対して)DbUnitの準備の手間が掛かる感があった』『この辺アーキチームが用意してくれるものだから個別にはあんま書かないよね(書くような状況では逆に問題)』『(写経を進めて行く心が折れたw』等のコメントが。なので実際の場でもここはざっくり割愛w この後行ったLT発表のコーナーにぬるっとシフト。

LT

今回LT的な発表をして頂けたのは総勢4名。それぞれ今回の対象範囲にちなんだものでした。

SnakeYAMLの便利な使い方とかGroovyコードの解説とか / @grimrose


とーます (TwitterID:@grimrose)さんによる写経コード発表。SnakeYAMLを用いており、その辺りの詳細解説等も交えた感じでした。

ソースコード資料はこちら。

Seasar2/Railsによる対象範囲写経コードの解説とか / @sue445

sue445 (TwitterID:@sue445)さんによる写経コード発表。

Rspecによる結果出力実演もあり、この辺については『おおっ』という声も。


ソースコード資料はこちら。

JavaYAMLを扱うのも簡単!? / @aeg


という事で、Eiji Ito (TwitterID:@aeg)さんによる飛び込み参戦。でも…

ソースコード資料はこちら。

Db unitを使って なれる! レガシーコードメンテナー / @PoohSunny

LT最後はスライド資料を用意して臨んで頂いた、Yotaro TAKAHASHI (TwitterID:@PoohSunny)さんによる発表。

次回開催(#5)について

第4回も内容盛り沢山な形で進めることが出来ました。写経なりフリータイムな時間を設ける事が出来れば...と思っているのですが、前々回、前回と(良い意味で)その時間が無くなってしまった(ディスカッション等が盛り上がった事により)形になったのかなと言う気がしています。回を追う毎にディスカッションの熱量も総量を増している感が。


そして第5回。以下の予定で開催したいと思います。

  • 開催日時:2013/04/14(日) 13:00 〜 19:00
  • 開催場所:横浜タネマキ
  • 対象範囲:第17章 BDD(振舞駆動開発)


現在想定している内容としては、これまで通り書籍の内容(第17章 振舞駆動開発)の写経及びディスカッション。

また併せて、書籍で採り上げているcucumber-junit以外にも最近はBDD関連でキーワード的に興味深い・盛り上がっているものも幾つかありますので(Spockやjnario等)、その辺りの学びも行いつつ、BDD実践・ペアプロ(またはチームでプログラミング)的な事も行えればな〜と。

その為、開催時間も13:00 〜 19:00と長目に確保、前半を書籍の写経やディスカッション、後半を書籍以外のBDD実践に充てる方向で詳細検討中です。BDD(振舞駆動開発)に興味をお持ちの方、また『BDDなら俺に聞け!』と言う方がいらっしゃいましたら是非ともご参加頂ければと思います。


イベント告知ページもエントリに先駆けて公開しました。皆様の参加をお待ちしております!


そして今回ご参加頂いた皆様、ありがとうございました!次回もまた、宜しくお願い致します。