Skip to content
Latchkey

テストマトリックスとは何か?

テストマトリックスは、オペレーティングシステムや言語バージョンなど、多数の環境の組み合わせをまたいで同じテストを実行し、環境固有のバグを捕捉します。

ソフトウェアは複数の環境で動作しなければならないことがよくあります。複数のOS、複数の言語バージョン、異なる依存関係のセットです。テストマトリックスは、気にかけるすべての組み合わせをまたいでスイートを実行し、「自分のマシンでは動く」を「サポートするすべてのマシンで動く」に変えます。マトリックスの各セルは独立した実行です。

マトリックスがカバーするもの

マトリックスは、気にかける次元によって定義されます。たとえばOS(Linux、macOS、Windows)とランタイムバージョン(18、20、22)の掛け合わせです。セルの数は次元の積であり、3×3のマトリックスは9つの実行を生み出し、それぞれがその特定の環境で完全なスイートを実行します。

重要な理由

  • パスや改行コードの問題など、OS固有のバグを捕捉する。
  • 各言語またはランタイムバージョンのサポートを検証する。
  • 複数の依存関係バージョンに対してテストする。
  • サポートするすべての設定でソフトウェアが動作することを証明する。

簡単な例

CIマトリックスは、1つのjob定義を、列挙された次元の組み合わせごとの実行へと展開します。

A 2x2 test matrix
strategy:
  matrix:
    os: [ubuntu, macos]
    node: [18, 20]
# expands to 4 jobs: ubuntu/18, ubuntu/20, macos/18, macos/20

マトリックスの爆発に注意

すべての次元がセル数を掛け合わせるため、マトリックスは数百のjobと長いキューに膨れ上がることがあります。意味のある組み合わせだけをテストし、すべてではなく最も古いものと最も新しいサポートバージョンをテストし、起こりえない組み合わせを除外することで削減しましょう。

CIにおけるテストマトリックス

各マトリックスのセルは独立したjobであるため、すべて並列に実行され、総wall-clock時間はおおよそ最も遅いセルの時間であり、合計ではありません。この利点は、セルを同時に実行するのに十分な高速runnerが利用可能な場合にのみ現実のものとなります。Latchkeyは、幅広いマトリックスをキューに並ばせるのではなく同時に実行できる高速runnerを提供します。

重要なポイント

  • テストマトリックスは、多数の環境の組み合わせをまたいでスイートを実行する。
  • 見逃しがちなOS固有・バージョン固有のバグを捕捉する。
  • セルは並列に実行されるため、十分な高速runnerがあればマトリックスは素早く終わる。

関連ガイド