RubyKaigiで発表しないけどスライド書いた

speakerdeck.com

RBSをテストコードにする - スペクトラム で紹介したRaaPがいい感じに育ってきた。

RubyKaigiごっことして紹介スライドを作った。とくにしゃべる予定はない。

Coverage

大きなアップデートとしては、Coverage機能を追加し、デフォルトで有効にしたことだ。

CoverageはRubyの方ではなく、RBSのほうのCoverageだ。

引数

RaaPではランダムな挙動をベースにしているので、1回の動作につき引数生成に様々な選択がなされる。

  • オプション引数はランダムにあったりなかったりする。
  • rest引数は0個〜3個をランダムに生成する。
  • Union型(Integer | Stringみたいなやつ)は1つだけをランダムに選択する。
  • Optional型(Integer?みたいなやつ)はInteger?(つまりnil)かをランダムに選択する。

これらの条件が複数重なったとき、本当に記述したRBSが使われているのか、書く意味があったのか、不安になってくる。

そこで、どの型を使用したのかCoverageを表示することによって安心感を得ることができる。

もしなかなか使用されないなら、試行回数を増やして確率を上げることもできる。

返り値

また、返り値はランダムではないにせよ、以下のような判定になる。

  • Union型ならどれか一つにあてはまっていればよい
  • Optional型なら、とある型かnilかのどちらかであればよい

RaaPでは型が間違っていたら失敗として教えてくれるが、範囲が広すぎて緩すぎる型になっていても失敗はしない。

返り値に書いた型が本当に意味のあるものだったか、全く使われていないなら削除も検討できる。