『実践プロパティベーステスト ― PropErとErlang/Elixirではじめよう』

テストケースはコンピューターで書くべき! でもどうやって? その答えが「プロパティベーステスト」です

従来のユニットテストでは、人間が「入力に対してコードが返すべき値」を考えて、その通りの結果が得られるかどうかをテストします。 これに対してプロパティベーステストでは、数万にも及ぶ多様なテストケースをコンピューターで自動生成し、その大量のテストを水面下で実行することによって、どんな入力に対してどんな問題が起きるかをテストします。 人間には思いもつかない入力まで網羅できることから、単に手間をかけずにテストケースを増えせるだけでなく、場合によっては仕様に潜むバグさえもあぶり出せる強力なテスト手法です。

プロパティベーステストで人間が記述するのは、「入力に対してコードが返すべき値」ではなく、「入力に対するコードの振る舞い」そのものを表す実行可能なコード(プロパティ)です。プロパティを書くためのアプローチとして、本書では次のような考え方を学びます。

  • 通常のユニットテストで人間が書くようなテストケースをランダムに自動生成する
  • より単純な機能を使った別の実装を作って比較する
  • 不変条件や対称的な操作を見つけてそれを利用する

これらのアプローチ自体は言語に依存しませんが、表現力や実行方法はさまざまな言語で実装されているプロパティベーステストのためのフレームワークに依存します。 本書では、Erlang/Elixirで利用可能なPropErというフレームワークを利用し、上記のような基本的なアプローチによるプロパティベーステストはもちろん、生成したいテストケースが互いに独立でない場合のプロパティベーステストや、状態に依存するシステムに対するプロパティベーステストなど、高度な応用事例についても紹介します。

本格的なアプリケーション開発を通して、プロパティベーステストの基礎から極北までを体験できる、唯一無二の解説書です。

2 冊 発売中