2013/05/12 『JUnit実践入門』写経・実践会 in 横浜 #6 (特別編)に参加してきた #junitbook
というわけで、行ってまいりました!
- 『JUnit実践入門』写経・実践会 in 横浜 #6 (特別編) - connpass
- 2013/05/12 『JUnit実践入門』写経・実践会 in 横浜 #6 (特別編) #junitbook - Togetter
著者の渡辺さんにきていただき、「幻の章」の紹介・実践をするという会です。わーい。
connpassの紹介分には下記のような文章が。
Unitによるユニットテストを実践していますか?
JUnit実践入門では、ユニットテストの概念から基本的なテストの書き方を中心に、テスト駆動開発や継続的インテグレーションといった範囲まで紹介しています。しかしながら、分量の関係と直接的にJUnitとは関係がないため、削ることにした幻の章があるのです。
Seleniumは、ウェブアプリケーションの受け入れテストを自動化する超クールなツールです。Selenium単体だとイマイチ使いにくい部分があるのですが、JUnit実践入門で紹介したCucumber-junitと組み合わせると、
とてもとてもスマートに、そして楽しく、テストを進める事ができるようになります。この勉強会では、JavaEEで実装した簡単なアプリケーションを対象に、Cucumber-junitとSeleniumを組み合わせ受け入れテストを実践するためのコツをお伝えします。
実際に手を動かしながら、CucumberとSeleniumを繋ぐステップ定義を作成し、可憐なドライバーを作成しましょう。また、シナリオを記述するときのコツ、シナリオを綺麗にメンテナンスするコツ、そもそも外部設計から仕込むことの重要性、おまけにJenkins/Mavenでの自動化まで全てを1日でやっちゃいますよ。
わくわくが止まりません。
事前準備
今回の勉強会の私の問題意識
まず、今回の勉強会に際して、私が解決したかった問題意識は下記でした。
受け入れテストに使えないか!?
最近、開発業務を部分的にアウトソースしはじめています。
その受け入れテストが結構しんどい、という現場の声があったので、この勉強会で得たものでなんとかできないか、と思いました。
予習
環境準備
@shinyaa31さんのブログに、事前のお知らせがありました。
これに基づいて環境構築を進めます。
例によって直前にバタバタと準備をしたのですが、下記のエントリーも参考にさせていただき、
無事環境構築が終わりました。感謝。
明日の基礎準備だん。 #junitbook / “『JUnit実践入門』写経・実践会 in 横浜 #6 (特別編) の準備。 - memoメモ @atotto” htn.to/EcPqKc
— atottoさん (@atotto) 2013年5月11日
内容の予習
そして、当日に扱われそうな話題と、お初にお目にかかるirofさんの予習のため、下記をチェックしていました。
今日の内容と、いろふさんについて少し予習。 「自動受け入れテスト」を考えてみる - 日々常々 (id:irof / @irof) d.hatena.ne.jp/irof/touch/201…
— Yotaro TAKAHASHI さん (@PoohSunny) 2013年5月12日
これで、準備万端です。多分。
当日の状況
全体の詳細レポートは、@shinyaa31さんによる公式レポートをご覧頂くと良いと思います。
『JUnit実践入門』写経・実践会 in 横浜 #6 (特別編) を開催してきた #junitbook - Shinya’s Daily Report
著者の方だけでなく、レビュアーの方も複数名いらっしゃるという豪華な会でした。
全体を通してみると、
『JUnit実践入門』写経・実践会 というよりは、渡辺さんがおっしゃっていたように
Pre Cucumber Boot Campって感じでした。
JUnit実践入門 特別編 at 横浜タネマキ 著者+レビューアーが4人って…。恐るべきJUnit実践入門濃度 #junitbook
— Eiji Itoさん (@aeg) 2013年5月12日
私は勉強会開始直後は、下記のような状態でした。
今日は仕事より早い家を出て、仕事より遠出して、仕事より時間にパソコンを開いているので、まだ全然頭が動いている気がしない。 #junitbook
— Yotaro TAKAHASHI さん (@PoohSunny) 2013年5月12日
文意はなんとかわかるものの意味はまったく通じていないあたりが、頭の働かなさを如実に反映していますね。かっこ悪いw
自己紹介タイム
強く感じたのは、以下二つ。
- Cucumber,Seleniumに興味ある人すげー多い。
- レガシーコードと戦ってる人多い。
ということでかなりシンパシーでしたね。
まぁこういう勉強会なので、問題意識が近い人が集まっているということでしょうか。
irofさんの講演
- テストの価値は失敗にある
- 「失敗」を「あたりまえ」に扱い、当たり前に対処しよう。
というところに感銘を受けました。
この本の一説思い出しました。
緊急時に安心して守れるような規律を選ぼう。そして、それを常に守ろう。規律を守ることが緊急時から逃れる最善の方法である。
ピンチに陥っても行動を変えてはいけない。規律が最善の方法であれば、緊急時になっても守るべきである。
自分のことについて省みると、会社ではJenkinsをまわして、ビルドこけたら通知してるわけですが、
それで通知くらったときに、「大問題」って受け止めていないかがちょっと心配になりました。
テストがこけたら役立って良かった、って伝えてるようにしてるつもりですが、果たしてうまくいっているか。
というわけで、
会社のメンバに基調講演の内容は必ず持って帰らなくては #junitbook
— Yotaro TAKAHASHI さん (@PoohSunny) 2013年5月12日
社内ブログがあるので、それにガリガリ書こうと思います。
渡辺 修司(@shuji_w6e)さんの講演
『受け入れテストの自動化とユースケース駆動開発 -Pre Cucumber Boot Camp-』
ドキドキ・わくわくの内容でした。
詳細な内容は、前述の@shinyaa31さんのブログにあるので、私はグサッときたことを羅列します。
- TDDは開発手法 良いものを作ったことは保証できない。
確かにそうですよね。上流が間違っていないことを担保して安心して開発したいものです。
というわけで、「ユースケースにどう落とすか!」というのが次の課題になったので、今回紹介していただいた下記の本を読んでみたいと思っています。
ロバネスト分析とか全く知らなかったので、超やってみたいです。
お昼休み
私はカレーもぐもぐ。おいしかったー。
カレーなしでは生きられません #junitbook twitter.com/PoohSunny/stat…
— Yotaro TAKAHASHI さん (@PoohSunny) 2013年5月12日
で、その後会場では、例のステッカーたちが振る舞われていたので、私ももれなく恩恵にあずかりました。
装着完了! #junitbook twitter.com/PoohSunny/stat…
— Yotaro TAKAHASHI さん (@PoohSunny) 2013年5月12日
大事にします。@sue445さんありがとうございました!
実践タイム
こちらも、ざっくりとした感想だけ。
- なかなかついていくのが大変。
みんなスピードが速く、アップアップしながら追いついていました。
でも資料がわかりやすくてなんとかついていけました。よかったよかった。
- データをどう放り込むかについて
渡辺さんがおっしゃっていたのは、「事故らず、楽する」
画面上から入れてしまう、というのがベストですよね。
今回はユニットテストの存在している部分を起点にJPAでデータを投入しました。
全体のバランスを見て、戦略を決めるところがすごく参考になりました!!
- Seleniumはうまく使えば超強力
私、基本的にSeleniumはキャプチャリプレイツールで作成してるのですが、
それだとどうしても使いにくい部分があったり、変更にかなり脆かったりで悩んでいました。
あと、やっぱり一目見たときにどういう意図でテストを書いているのかがわかりにくい。
それが、Cucumberのシナリオとマッピングされることで、綺麗に解決されることがわかって目からうろこでした。
あと、たとえばログイン処理とかの共通処理の使い回しもこっちの方が楽ですよね。
というわけで、これはぜひ会社に導入しなくちゃ、と思ってもろもろ準備を始めています。
- サインもいただいた!
私、ミーハーなことに、会社用と自分用の2冊にいただいてしましました。
ありがたや。
会社用と自分用にいただきましたッ! ありがたや。 #junitbook twitter.com/PoohSunny/stat…
— Yotaro TAKAHASHI さん (@PoohSunny) 2013年5月12日
懇親会
振り返り込みで行われました。
私個人の振り返りとしては、重複になってしまいますが、
というあたりでしょうか。
@irofの部屋
懇親会後半は、@irofさんオンステージ!
次々浴びせられる質問にドキドキしながら答えます。
とりあえず、これの復習しとかなきゃ、と思いました。
あと、やっぱりインプットを大量にすることは大事だな。と。
それを活かせないと意味がない、という考え方はその通りだけど、まずちゃんと引き出しと材料をそろえないとな、と思いました。
あと、@irofさんが、締めLTとして、TABOKについてをしてくれました。
紹介していただいたサイトを巡回し、メーリングリストを発見。
参加申し込みさせていただきました。(ホントは勉強会直後にしたつもりだったのだけど、できてなかったので再度申し込み。ブログが後手後手になったけがの功名。。。)
楽しかった
というわけで今回は、体験して楽しい、実入りも大きい、知識が増えて、今後につながり、渡辺さんや@irofさんにも会えて、という大満足の会でした。
というわけで、渡辺さん、いろふさん、@shinyaa31さん、ありがとうございました!!