第15章. イベント駆動マイクロサービスをテストする
この作品はAIを使って翻訳されている。ご意見、ご感想をお待ちしている:translation-feedback@oreilly.com
イベント駆動マイクロサービスをテストすることの素晴らしい点の1つは、非常にモジュール化されていることだ。サービスへの入力は、イベント・ストリームまたはリクエスト/レスポンスAPIからのリクエストによって提供される。ステートは独自の独立したステート・ストアにマテリアライズされ、出力イベントはサービスの出力ストリームに書き込まれる。マイクロサービスは小規模で目的に応じて構築されるため、大規模で複雑なサービスよりもテストがはるかに容易だ。可動部分が少なく、I/Oとステートを扱う比較的標準的な方法論があり、他のマイクロサービスではテストツールを再利用する機会が多い。この章では、単体テスト、統合テスト、パフォーマンステストを含む、テストの原則と戦略をカバーする。
一般化テストの原則
イベント駆動型マイクロサービスは、すべてのアプリケーションに共通するテストのベストプラクティスを共有する。単体テスト、統合テスト、システムテスト、リグレッションテストなどの機能テストは、マイクロサービスが想定されたことを実行し、すべきでないことを実行しないことを保証する。パフォーマンステスト、負荷テスト、ストレステスト、リカバリーテストなどの非機能テストは、さまざまな環境シナリオのもとで、マイクロサービスが期待通りに動作することを保証する。
さて、これ以上先に進む前に、この章はテストの原理やハウツーに関する、より広範な著作に付随するものであることに注意することが重要である。結局のところ、多くの書籍、ブログ、ドキュメントがテストについて書かれており、私はそれらと同程度にテストを網羅することはできない。この章では、主にイベントドリブンに特化したテストの方法論と原則、そしてそれらがどのようにテス トの全体像に統合されるかを見ていく。言語固有のテストフレームワークやテストのベストプラクティスについては、この章を補完するために、各自 の情報源を参照されたい。
トポロジー関数の単体テスト
単体テストは、アプリケーションの中で最も小さなコードの断片をテストし、それらが期待通りに動作する ことを保証するために使用される。これらの小さな単体テストは、アプリケーションのより高い機能をテストするために、より大きな、より包括的な テストを記述するための基礎を提供する。イベント駆動型トポロジは、しばしばイベントに変換、集約、マッピング、リダクション関数を適用し、これらの関数を単体テ ストの理想的な候補とする。
チップ
各関数について、ヌル値や最大値などの境界条件を必ずテストすること。
ステートレス関数
ステートレス関数は、以前の関数呼び出しからの永続的な状態を必要としないので、独立したテストが非常に容易である。次のコードは、Map-Reduceスタイルのフレームワークで見られるようなEDMトポロジーの例を示している:
myInputStream.filter(myFilterFunction).map(myMapFunction).to(outputStream)
myMapFunction と は独立した関数であり、どちらも状態を保持しない。各関数は単体テストを行い、想定される入力データの範囲、特にコーナーケースを正しく処理できることを確認する必要がある。myFilterFunction
ステートフル関数 ...
Become an O’Reilly member and get unlimited access to this title plus top books and audiobooks from O’Reilly and nearly 200 top publishers, thousands of courses curated by job role, 150+ live events each month,
and much more.
Read now
Unlock full access