Skip to content

Lincheck ガイド

Lincheckは、JVM上で並行アルゴリズムをテストするための実用的で使いやすいフレームワークです。これは、並行テストを記述するためのシンプルかつ宣言的な方法を提供します。

Lincheckフレームワークを使用すると、テストの実行方法を記述する代わりに、検査するすべての操作と必要な正当性プロパティを宣言することで、_何をテストするか_を指定できます。その結果、一般的な並行Lincheckテストはわずか約15行になります。

操作のリストが与えられると、Lincheckは自動的に以下を行います。

  • ランダムな並行シナリオのセットを生成します。
  • ストレス テストまたは有界モデル検査のいずれかを使用してそれらを検査します。
  • 各呼び出しの結果が、要求される正当性プロパティ(線形化可能性がデフォルトです)を満たしていることを検証します。

プロジェクトにLincheckを追加する

Lincheckのサポートを有効にするには、対応するリポジトリと依存関係をGradle設定に含めます。build.gradle(.kts)ファイルに以下を追加します。

kotlin
repositories {
    mavenCentral()
}
 
dependencies {
    testImplementation("org.jetbrains.lincheck:lincheck:3.0")
}
groovy
repositories {
    mavenCentral()
}

dependencies {
    testImplementation "org.jetbrains.lincheck:lincheck:3.0"
}

Lincheckを使ってみる

このガイドは、Lincheckフレームワークに親しみ、例を交えながら最も役立つ機能を試すのに役立ちます。Lincheckの機能をステップバイステップで学びましょう。

  1. Lincheckで最初のテストを作成する
  2. テスト戦略を選択する
  3. 操作引数を設定する
  4. 一般的なアルゴリズムの制約を考慮する
  5. アルゴリズムの非ブロッキング進行保証を確認する
  6. アルゴリズムのシーケンシャル仕様を定義する

その他の参考資料

  • Nikita Kovalによる「Kotlinコルーチンにおける並行アルゴリズムのテスト方法」: 動画。 KotlinConf 2023
  • Maria Sokolovaによる「Lincheck: JVM上での並行性テスト」ワークショップ: パート1パート2。 Hydra 2021