この記事は Property-Based Testing Advent Calendar 2018 1日目の記事です。

このアドベントカレンダーでは、最近実用的なシステムで導入されている話もしばしば耳にする、Property-Based Testing (PBT) というソフトウェアテスト手法についての記事を書きます。

想定読者は何かしらのテストを書いたことがある人です。

このアドベントカレンダーのはじめの5日は、筆者(@spinute)が PBT の概要を説明します。 テストケースをいい感じに自動生成し、もりもりバグを取りながらも可読性・メンテナンス性の高いテストが書けるという噂を聞いて、最近 PBT のことが頭から離れない筆者が調べた内容をまとめます。

主な参考文献は Property-Based Testing with PropEr, Erlang, and Elixir です。ただし、Erlang が出てくると脱落者が続出する未来が見えたので、まずはコード無しで説明します(ちなみにメジャーな言語にはだいたい PBT ライブラリがあります)。

そのため、最初の5日は特定の言語やフレームワークの話はせず、PBT とはなにか、何が嬉しいのか、どういう場面で有効なのか、どういうコードをどんなバグが見つかるのか、などを書く予定です。

そのあとの日程では、Erlang 言語と PBT ライブラリ PropEr を使って、PBT を使ったプログラム開発フローを紹介したり、実際に動くコードで PBT の効果を検証しようと思っています。

また、みんなのデータ構造という本に出てくるデータ構造をGolang で実装したもの に PBT でテストをつけていこうと思っています。PBT ライブラリとしては gopter を使います。

私一人では25日分のカレンダーは埋めきれず、まだまだ空いている日程もあるため、執筆者も募集中です! 12/12, 13, 22 には、Java, Rust, Scala の PBT についての記事を書いていただけるようで楽しみです:):)

==> Day2: Property-Based Testing とは