開発プロキシと単体テストは、テスト戦略のさまざまな目的に対応します。 どちらも重要ですが、基本的に異なる方法でアプリケーションをテストします。 それらを組み合わせて使用すると、アプリケーションの動作を包括的にカバーできます。
さまざまなテスト方法
単体テストでは 、モックされた依存関係を使用して分離されたコードをテストします。 API を呼び出すコードの単体テストを記述するときは、通常、HTTP クライアントをモックして定義済みの応答を返します。 この方法では、コードが特定のシナリオを正しく処理することを確認できます。
開発プロキシは 、シミュレートされた API 動作を使用して実行中のアプリケーションをテストします。 開発プロキシは、コードをモックする代わりに、実際の HTTP 要求をインターセプトし、エラー、調整、待機時間などの実際の状態をシミュレートします。 この方法では、コードと API の間のすべてのレイヤーを含め、アプリケーション全体をテストします。
それぞれをいつ使用するか
次の場合に 単体テスト を使用します。
- 特定の関数の動作とエッジ ケースをテストする
- 分離してビジネス ロジックを確認する
- 開発中に迅速なフィードバックを得る
- 高いコード カバレッジを実現する
- 特定のエラー処理パスをテストする
次の場合は 、開発プロキシ を使用します。
- 実行中のアプリケーションをエンド ツー エンドでテストする
- 調整やネットワークの問題など、再現が困難な条件をシミュレートする
- すべてのレイヤーで実際の再試行ロジックとエラー処理をテストする
- ランダムなエラーが発生した状態でアプリケーションを読み込み中に実行する
- コードを変更せずに回復性を確認する
開発プロキシの利点
開発プロキシには、従来のモック作成アプローチよりもいくつかの利点があります。
- コードの変更は必要ありません。 開発プロキシを使用するようにアプリケーションを変更する必要はありません。 ネットワーク レベルで動作し、HTTP 要求を透過的にインターセプトします。
- 任意の HTTP ライブラリで動作します。 一部の HTTP ライブラリは、モックするのが難しいことで知られている。 開発プロキシでは、使用するライブラリ (RestSharp、HttpClient、Axios など) は関係ありません。 開発プロキシは、ライブラリに関係なく、すべての HTTP トラフィックをインターセプトします。
- 実際のアプリケーションをテストします。 モック HTTP クライアントを使用した単体テストでは、実際の再試行ロジック、接続処理、またはタイムアウト動作はテストされません。 開発プロキシは、すべての依存関係を使用して実際のアプリケーションをテストします。
- エラーを理解しやすくなります。 実行中のアプリケーションで必要に応じてエラーをトリガーできる場合は、アプリケーションでエラーを処理する方法を理解してデバッグする方が簡単です。
- 複雑な条件をシミュレートします。 開発プロキシは、負荷がかかっているランダムな障害、段階的な調整、断続的なネットワークの問題など、モックを使用して再現できない条件をシミュレートできます。
補完的なテスト戦略
最も効果的な方法は、両方のテスト方法を組み合わせたものです。
- ロジックには単体テストを使用します。 ビジネス ロジック、データ変換、および特定のエラー処理コード パスを確認するための単体テストを記述します。
- 回復性のために開発プロキシを使用します。 開発プロキシを使用して、アプリケーションが実際の API 条件 (調整、エラー、低速応答) を正しく処理することを確認します。
- CI/CD で両方を使用します。 コミットごとに高速なフィードバックを得るための単体テストを実行します。 デプロイ前に回復性の問題をキャッチするには、統合テストで開発プロキシを使用します。
単体テストでは、コードが正しいかどうかを確認できます。 開発プロキシは、アプリケーションに回復性があるかどうかを通知します。 両方が必要です。
次のステップ
- ランダム エラーでアプリをテスト する - 5 分
- CI/CD で開発プロキシを使用 する - パイプラインで単体テストと開発プロキシの両方を実行する
Dev Proxy