コンテンツにスキップ

ホワイトボックステスト@マイクロサービスアーキテクチャ

はじめに

本サイトにつきまして、以下をご認識のほど宜しくお願いいたします。


01. ユニットテスト

ユニットテストとは

ユニットテストは、マイクロサービスアーキテクチャの文脈であってもなくても同じである。

マイクロサービスのクラスや構造体のメソッドが、それ単体で正しく動作するかを検証する。


ユニットテストツール例

▼ 自前

言語によっては、ビルトインのコマンド (例:go testコマンド) でユニットテストを実装できる。

▼ フロントエンド系ツール

記入中...

▼ バックエンド系ツール

記入中...


02. コンポーネントテスト

コンポーネントテストとは

マイクロサービスがそれ単体で正しく動作するかを検証する。

アップストリーム側マイクロサービスは検証対象ではないため、モックサービスとする。


コンポーネントテストツール例

▼ 自前

言語によっては、ビルトインのコマンド (例:go testコマンド) でコンポーネントテストを実装できる。

▼ ツール

記入中...


03. CDCテスト:Consumer-Driven Contracts Testing

CDCテストとは

送信元マイクロサービス (コンシューマー) と宛先マイクロサービス (プロデューサー) の連携のテストを実施する。

この時、一方のマイクロサービスに他方のマイクロサービスのモックの定義するのではなく、モックの定義を『契約 (Contract) サービス』として切り分ける。

これを双方のマイクロサービス間で共有する。

契約サービス上で、双方のリクエスト/レスポンスの内容が期待値に合致するかを検証する。

cdc-test


Contractサービス

送信元マイクロサービス (コンシューマー) と宛先マイクロサービス (プロデューサー) の双方のモックとして機能する。

例えば、Pactは契約サービスをPact Brokerとして提供する。

cdc-test_contract-service


結合テストツール例

▼ ツール

  • Pact


04. E2Eテスト (機能テストも兼ねる)

E2Eテストとは

マイクロサービスアーキテクチャの文脈では、E2Eテストが機能テストも担う。

実際のユーザーを模した一連の操作 (フロントエンドへのリクエスト) を実施し、特定の機能に関する全てのコンポーネント間 (フロントエンド、各マイクロサービス、外部API、など) の連携のテストを実施する。

フロントエンドに対してリクエストを送信し、一連のマイクロサービスの処理を検証する。


結合テストツール例

▼ 手動

手動でフロントエンドを操作し、E2Eテストを実施する。

▼ ツール

実際のユーザーを模した一連の操作 (フロントエンドへのリクエスト) を実施する。

  • Autify
  • Cypress
  • Mabl
  • Selenium
  • Puppeteer
  • TestCafe