テストの最適化
Pestは、開発者が効率的で高性能なテストを作成するためのいくつかの最適化テクニックを提供しています。最も重要なものの1つは並列テストであり、これは`--parallel`オプションを使用して複数のプロセスで同時に複数のテストを実行することを可能にします。これにより、テストの実行にかかる時間を大幅に短縮し、テストスイート全体の性能を向上させることができます。
さらに、Pestは`--profile`フラグを提供して、実行速度の遅いテストを迅速に特定し、実行の最適化を可能にします。
最後に、テストスイートの失敗にのみ焦点を当てることが役立つことがよくあります。これを行うには、Pestの実行時に`--compact`プリンタを使用できます。これにより、Pestはテストスイートの失敗したテストに関する情報のみを表示するように指示されます。
並列テスト
Pest 2の並列テストは、最大80%高速化されました。この素晴らしい結果は、並列テストコアシステムの完全な再構築によってのみ実現しました。新しいコアには、テストケース実行間のプロセス再利用のための高度な技術が組み込まれています。
デフォルトでは、Pestは単一のプロセス内でテストを順次実行します。ただし、`--parallel`オプションを使用して複数のプロセスで同時にテストを実行することにより、テストの実行に必要な時間を大幅に短縮できます。
1./vendor/bin/pest --parallel
並列でテストを実行する場合、Pestはマシンの使用可能なCPUコアごとにプロセスを作成します。ただし、`--processes`オプションを使用してプロセスの数を手動で変更できます。
1./vendor/bin/pest --parallel --processes=10
並列実行されるテストを作成する際の考慮事項を以下に示します。
- データベースリソースはテスト間で共有されない可能性があります:各テストは、他のテストから独立して分離されている必要があります。
- テストの順序は保証されません:テストは、特定の実行順序に依存するべきではありません。
- テストは競合状態の影響を受ける可能性があります:複数のプロセスまたはスレッドが共有リソースにアクセスする場合、競合状態が発生する可能性があります。潜在的な競合状態を処理し、可能な限りそれらを回避するようにテストを設計してください。
プロファイリング
数分かかる大規模なテストスイートがあるとします。いくつかのテストが他のテストよりも大幅に時間がかかっていることに気づきましたが、どのテストが最も遅いか、または遅延の原因が何かはわかりません。
最も遅いテストを特定し、その実行を最適化するには、Pestの`--profile`オプションを使用できます。このフラグを有効にしてテストスイートを実行すると、Pestは各テストの持続時間を収集し、最も遅いテストを強調表示するレポートを提供します。
1./vendor/bin/pest --profile
たとえば、テストスイートを実行して次の出力があるとします。

`UserTest > create user`と`OrderTest > create order`テストが他のテストよりも大幅に時間がかかっていることがわかります。このテストを分析することで、いくつかの非効率的なデータベースクエリを実行したり、実行時間を短縮するために最適化できる他の高価な操作を実行していることがわかります。
コンパクトプリンタ
多数のテストを使用している場合、失敗したテストのみに集中すると役立つ場合があります。`--compact`プリンタを使用して、Pestにテストの失敗のみを表示するように指示し、成功したテストのノイズなしに問題を特定して解決しやすくします。

さらに、`--compact`プリンタはより単純な出力を生成するため、各テストに必要な入出力量が少なくなるため、テスト速度を数ミリ秒向上させることができます。
テストスイートを実行するたびに`--compact`オプションを指定する必要がないように、Pestを常にコンパクトプリンタを使用するように構成することもできます。
1// tests/Pest.php2pest()->printer()->compact();3 4//
テストスイートの高速化について学習したので、継続的インテグレーションについて説明しましょう:継続的インテグレーション