谷本 心 in せろ部屋

はてなダイアリーから引っ越してきました

アノテーションから、テストケースを自動生成する。

[BOF-4554]From Annotations to Unit Test Code Generation
Hibernate Validatorのアノテーションから、JUnitのテストケースを自動生成するBOF
結論として、もし「Funniest Session」を選ぶなら、これを選びたいっていうぐらい
おかしかったセッション。


話を聞きながら、そもそも、バリデータのアノテーションを元にして
テストケースを自動生成することに、どれだけ意味があるのかな・・・と思っていたら
次々と席を立ってオーディエンス。みんな僕と同じことを思ったのかな。
一気に10人ぐらい席を立ったこともあった。


そんな疑問を意に介さず、発表者はデモなど交えながら、発表を終えた。
Q&Aでも「ビジネスロジックのテストは自動生成できるのか? → それは出来ない」とか
「自動生成後にアノテーションを修正したらどうするのか? → 再生成する」とか
割と当たり前の問答を、発表者は自信たっぷりに回答しつつ、セッションはつつがなく終了した


ように、見えた。


本番は、ここから。


こんな質問が出た。
「そもそも、このテストに、どんな意味があるんですか?」


みんな、うなづいた。
「俺もそう思う!」なんて声も飛ぶ。


凄い会場の一体感。


回答「よく聞こえない! マイクに近づいて、もっとちゃんと話してくれ!」
質問「アノテーションからテストコードを生成しても、必ず通るテストができるだけでしょう?」
回答「おー、お前は何を言ってるんだ。誰か他の人が、俺に無断でアノテーションを変えたら、困るだろ?」
質問「そうか、分かったよ」
別の質問「最初のテストコードが正しいって、誰が正しいって言えるの? 変えた人の方が正しいかも知れんだろ?」
回答「だから、お前の声が聞こえないって!」(話者、壇上から降りてきて、質問者の前へ)
回答「そうなったらWikiなどでコミュニケーション取れば良いじゃないか」
質問「そもそも、テストというものは正しい仕様があってこその・・・」


発表者を含め、4〜5人が集まって揉めている。
面白くて仕方ない。


観客A「この自動生成には、何のツールを使ってるんだ?」
発表者「はぁ? お前はこのセッションをちゃんと見てたのか?」
観客B「自作のツールでしょ」
観客A「あぁ、自作か。それは何をベースにしてるんだ?」
発表者「質問の意味が分からない。見せてやろうか?」
観客A「APTを使ってるのか?」
発表者「APT? お前はAPTを勉強したことがあるのか?」
観客A「え?」
発表者「お前は、APTを勉強したことがあるのか、って聞いてるんだ」
観客A「あぁ、APTは知ってるよ。このツールはAPTを使ってるのか?」
発表者「使ってるわけないだろ」
観客A「そうだよね。(APTが使えないツールだと)知ってればいいんだ」(立ち去る)
発表者(不満顔で壇上に戻って片付け始める)


その後も会場内で、「テストの自動生成に価値はあるのか」という点について、
観客7〜8人で集まって、発表者を抜きにして、話し合った(もちろん、僕も話に参加した)


ほとんどの意見は「原則、無意味である」という所で一致していたが、
1人だけ「インタフェース部分のテストを自動生成しておいて、
(契約的な位置づけで)利用することには、一定の意味があるかも知れないね」
という内容のことを話しており、その可能性は否定されなかった。


一通り盛り上がった帰り際、一人の観客がこんなことを言っていた。
「それにしても、こんな滑稽なセッションは初めてだ。あのタイトルでこの内容かよ」
「そうだ、Java Storeに、このツールを出せば良いんだ。
 自動テストツールってことで、きっと興味を惹くぜ!!」


もう散々に言ってた。


もう少し発表者が、「できること」と「できないこと」とか、
「適用可能箇所」と「課題」なんかを自分で明確にしていれば、こんなに揉めなかったのにね。


自信たっぷりに「このアイデアは素晴らしいぜ」
というような口ぶりだったのか、災いしたんだと思う。


数あるセッションの中には、こんなのも、あるんだね。