イバコの生存記録

いまは競プロ(AtCoder)記事がメインです。

79. ライブラリにはランダムテストを追加したい話

一週間ほどプライベートの用件で競プロから離れていましたが、日常に戻ったので再開しています。

 

最近、ライブラリの不具合を疑う WA や RE に時々遭遇するようになりました。ただ、競プロではテストケースを見られないことも多いので、どのようなケースで落ちているのか分からないことも多々あります。

そこで、ランダムテストを追加するという手法をよく取ります。ランダムテストでは、乱数でクエリを生成しながらテストを進めていきます。

たとえば、二分探索ライブラリをテストすることを考えます。0~2を取る乱数でクエリの種類を決定し、

  • 0: ある乱数を基準に二分探索を実行し、答えとして返ってきたインデックスとその前後が指定した条件を満たしているか確認する
  • 1, 2: 乱数をリストに追加する

という感じに書きます。これで、33%で二分探索テストを行い、66%でリストに乱数を追加するランダムテストになります。