概要

Protobuf は、Google が開発した、言語に依存しないスキーマベースのデータシリアル化システムです。Protobuf メッセージ形式はバイナリで、JSON や XML などの他の形式よりも効率的であると考えられています。Protobuf 拡張機能により、SOAtest と Virtualize は Protobuf メッセージ形式をサポートできるようになります。

この拡張機能をインストールすると、SOAtest 用の Protobuf クライアントと Virtualize 用の Protobuf メッセージ レスポンダーが追加されます。

要件

  • SOAtest/Virtualize 2023.2 以降
  • Java 11 以降

インストール手順

このアーティファクトは UI またはコマンドラインからインストールできます。

UI からのインストール

  1. [Parasoft ] > [設定] を選択し、[システム プロパティ] をクリックします。
  2. [JAR の追加] をクリックし、com.parasoft.soavirt.messages.protobuf-<version>.jar を選択します。
  3. [適用] をクリックします。
  4. SOAtest/Virtualize を再起動します。

コマンドラインからのインストール

設定プロパティ ファイルの system.properties.classpath プロパティに com.parasoft.soavirt.messages.protobuf-<version>.jar ファイルを追加します。例:

system.properties.classpath=<path to jar>/com.parasoft.soavirt.messages.protobuf-1.3.0.jar

Protobuf ファイルの場所の設定

Protobuf ファイルの場所は、.proto ファイルを含むローカル ディレクトリへのパスを指定する Java システム プロパティによって設定されます。

-J-Dcom.parasoft.soavirt.messages.protobuf.files=<PATH_TO_PROTO_FILES>

使用方法

Protobuf クライアントの追加

[テストの追加] ウィザードを使用してスタンドアロンの Protobuf クライアントをスイートに追加したり、[出力の追加] ウィザードを使用して既存のツールのペイロード出力として Protobuf ツールを連結したりできます。 詳細については、「プロジェクト、.tstファイル、テスト スイートの追加」 を参照してください。

設定と使用方法

Protobuf クライアントは他のメッセージング クライアントと同様に機能しますが、デフォルトでは Protobuf 形式を使用するように構成されています。 さらに、Protobuf クライアント固有の設定オプションがいくつかあります。

XML 変換オプション

  • Send XML instead of Protobuf when in Form Input or Form XML mode: このオプションを有効にすると、例えば、使用されないリクエストでの変換エラーを回避するためだけに Protobuf クライアントをコンシューマーとして使用する場合などに、リクエストをバイナリ Protobuf としてシリアル化することをスキップできます。

フォーム入力を使用してリクエスト ペイロードをモデル化するためのスキーマ

  • Message type: protobuf-extension.jar に組み込まれているスキーマで利用可能な型定義から選択します。

Protobuf メッセージレスポンダーの追加

[レスポンダーの追加] ウィザードを使用して、Protobuf メッセージ レスポンダーをスイートに追加できます。 詳細については「メッセージ レスポンダーを手動で作成」を参照してください。 

設定と使用方法

Protobuf メッセージ レスポンダーは、他のレスポンダーと同様に機能します。 レスポンダーの設定と使用については「メッセージ レスポンダーの概要」を参照してください。  Protobuf メッセージ レスポンダー固有の設定オプションがいくつかあります。

XML 変換オプション

  • Respond with XML instead of Protobuf when in Form Input or Form XML mode: 他のツールを連結して Protobuf メッセージを XML 形式で処理する場合は、このオプションを有効にします。 

フォーム入力を使用してリクエスト ペイロードをモデル化するためのスキーマ

  • Message type: protobuf-extension.jar に組み込まれているスキーマで利用可能な型定義から選択します。

受信リクエストに別の Protobuf メッセージ タイプを使用するようにレスポンダーを構成することもできます。操作手順は以下のとおりです。

  1. メッセージレスポンダーで、[オプション] タブをクリックし、[リクエストの処理] を選択します。
  2. [レスポンスと異なるメッセージ形式を使って受信リクエストを XML に変換する] を有効にします。
  3. ショートカット メニューの [Protobuf] をクリックします。
  4. 表示される [メッセージ タイプ] メニューから、仮想アセットに受信されると予想されるメッセージ タイプを選択します。

変換オプションの指定

Protobuf メッセージ形式では、オプションが空の場合、オプションのデフォルト値を使用して変換が行われます。値が選択または入力されている場合、変換時にその値が使用されます。無効な値が手動で入力された場合、フォーム入力/フォーム XML ビューとリテラル ビューの間で切り替えを行ったときやテストを実行したときにエラーが発生する可能性があることに注意してください。

[変換オプション] タブでは、次の変換オプションを設定できます。

  • Package: ネイティブ Protobuf メッセージを解析するために使用するオプションのパッケージ名。
  • Message: ネイティブ Protobuf メッセージを解析するために使用するオプションのメッセージ タイプ名。
  • Format: Protobuf メッセージを標準バイナリ形式と ProtoJSON 形式のどちらで受け取るかを制御します。デフォルトでは、メッセージはバイナリ形式で生成されます。ネイティブ メッセージを解析するためのメッセージ形式は、指定しない限り自動的に検出されます。
  • Log Level: コンソールに表示する情報の量を指定します。デフォルトは 2 (警告) です。

パッケージとメッセージの使用

Protobuf クライアントでは、[Message type] フィールドにタイプを指定して送信リクエストを構成します。デフォルトでは、受信レスポンスはこのメッセージタイプを使用して解析されますが、パッケージ変換およびメッセージ変換オプションを使用して、受信レスポンスの解析に使用するメッセージタイプを指定できます。

Protobuf レスポンダーでは、[Message type] フィールドにタイプを指定して送信レスポンスを構成します。デフォルトでは、受信リクエストはこのメッセージタイプを使用して解析されますが、リクエスト処理オプションを使用して、受信リクエストの解析に使用するメッセージタイプを指定できます。 詳細については「リクエストの処理」を参照してください。 パッケージとメッセージの変換オプションは空白のままにしてください。

トラフィックウィザードでは、各リクエストとレスポンスのメッセージタイプが自動的に検出されます。パッケージとメッセージの変換オプションは空白のままにしてください。ただし、状況によっては、バイナリ Protobuf メッセージを正しく識別できるメッセージタイプが複数存在する場合があります。そのような曖昧さがある場合、パッケージとメッセージの変換オプションを使用して、期待されるメッセージタイプを強制的に選択できます。

XML コンバーターツールでは、[メッセージタイプ] フィールドを使用して、期待されるメッセージタイプを選択します。メッセージタイプが選択されていない場合は、実行時に互換性のあるタイプが自動的に選択されます。パッケージとメッセージの変換オプションは空白のままにしてください。

トラフィックビューアーでは、Protobuf メッセージは自動的に解析され、[Tree] タブと [Element] タブに表示されます。Protobuf メッセージはバイナリであり、実際には名前付きフィールドが含まれていないため、各フィールドに表示されるラベルは不自然なものになっています。フィールド名は、メッセージを解析するために自動的に選択される互換性のあるメッセージタイプの定義に基づいています。

ProtoJSON の使用

Protobuf 拡張機能は、ProtoJSON 形式または標準バイナリ形式でメッセージを生成および使用できます。[XML Conversion Options] タブの [Format] フィールドで形式を指定します。デフォルトでは、メッセージはバイナリ形式で生成されます。ネイティブ メッセージを解析するためのメッセージ形式は、指定しない限り自動的に検出されます。

Protobuf Client と Protobuf Responder ツールでは、送信メッセージを ProtoJSON で初期化できます。

  1. [Input mode] を Literal に設定し、テキストエリアに Protobuf メッセージの JSON バージョンを入力します。
  2. [フォーム入力] ビューに切り替えます。[Message type] フィールドと [Form Input] フィールドには、JSON メッセージが自動的に入力されます。実行時には、[フォーム入力] ビューから生成される Protobuf メッセージは、デフォルトでバイナリ形式になります。

Protobuf Client ツールと Protobuf Responder ツールには、ペイロードを XML に変換した出力があり、これを使用すると、受信メッセージを XML 形式で検証できます。検証には、通常、XML Assertor ツールまたは XML モードの Diff ツールを使用します。メッセージを ProtoJSON として検証する場合は、まず XML Converter ツールを連結します。XML Converter ツールのツールオプションで、[Format] を Protobuf に、[Conversion direction] を XML からネイティブに設定します。[Message type] は XML から推測されるため、空白のままにしておきます。[Options] で、[Format] を JSON に設定します。これで、例えば JSON Assertor を XML Converter ツールに連結できます。

gRPC で Protobuf の使用

Protobuf 拡張機能を使用する利点の 1 つは、gRPC Transport と組み合わせて使用​​することで、ある形式でメッセージを送信し、別の形式でメッセージを受信できることです。

変更ログ

1.3

  • Protobuf と gRPC の両方の拡張機能がロードされている場合、grpc-status-details-bin ヘッダーを JSON にデコードします

1.2

  • 誤ったメッセージタイプを検出することがある問題を解決しました
  • スキーマ生成におけるさまざまな問題を解決しました
  • ProtoJSON を自動的に検出して使用します

1.0

  • 初回リリース
  • No labels