yr-learning Vol40に参加してきた
今週もこちらのイベントに参加してきたので、会の様子と感想を書いていこうと思います。
雑談
今日も(??)雑談からスタートしていきました。
- 直近やっている仕事
- 来週ありそうな面白いイベントの話
直近やっている仕事の話で割と生々しい話をしていたのでほとんどブログに書けないのは申し訳ないのですが、とても楽しかったです。
テストコード
今回はテストに関する章ですが、clojureに関するテストコードが書かれているのかなにかのファイルをもとに自動生成しているようなテストコードなのか?という話をしていきました。
Property-based testingの話だったので、これまで見慣れなかったコードではあるものの、どちらかというと前者(何かを自動生成するコードというよりはシンプルなテストコード)という理解が合っているのではないか?という話をしました。
関数型言語におけるProperty-based testing
Property-based testingと相性が特に良いのが関数型言語だという話をしていきました。
本書はClojureの例でテストがされていましたが、契約プログラミング的な要素が多く合ったこともあって、特に相性が良さそうな例になっているという理解をしました。
縮小作業
Property-based testingがバグの匂いを検知して(Failしたinputを検知して)どういう値だとバグが出るのかを縮小していくような動作をする箇所は非常に面白いし、Example-based testingにはない強みなんだろうね、という話をしていきました。
オブジェクト指向におけるProperty-based testing
Javaでも普通にProperty-based testingはサポートされていますし、オブジェクト指向言語であっても普通に実行できそうではありますが、現場ではやられている印象がないので、それはなんでだろう?どういうときに使えるんだろう?という話をしていきました。
使えるタイミングとしてはオブジェクト指向言語だから、というのはないんだろうという話で、それが現場で実践されていないのは、Property-based testingの発祥が関数型言語だからあんまりプログラマーにとって馴染みがなくて今みたいな状態になっているんじゃないか?という話がありました。
全体を通した感想
テストというタイトルだったのに、Property-based testingの話しかないのは笑いました。
実務ではProperty-based testing書いたことがないので、書いてみないと使い分けとかのリアルな悩みはなかなか出てこないんだろうなあと思いました。