概要
Protobuf は、Google が開発した、言語に依存しないスキーマベースのデータシリアル化システムです。Protobuf メッセージ形式はバイナリで、JSON や XML などの他の形式よりも効率的であると考えられています。Protobuf 拡張機能により、SOAtest と Virtualize は Protobuf メッセージ形式をサポートできるようになります。
この拡張機能をインストールすると、SOAtest 用の Protobuf クライアントと Virtualize 用の Protobuf メッセージ レスポンダーが追加されます。
要件
- SOAtest/Virtualize 2023.2 以降
- Java 11 以降
インストール手順
このアーティファクトは UI またはコマンドラインからインストールできます。
UI からのインストール
- [Parasoft ] > [設定] を選択し、[システム プロパティ] をクリックします。
- [JAR の追加] をクリックし、com.parasoft.soavirt.messages.protobuf-<version>.jar を選択します。
- [適用] をクリックします。
- 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 メッセージ タイプを使用するようにレスポンダーを構成することもできます。操作手順は以下のとおりです。
- メッセージレスポンダーで、[オプション] タブをクリックし、[リクエストの処理] を選択します。
- [レスポンスと異なるメッセージ形式を使って受信リクエストを XML に変換する] を有効にします。
- ショートカット メニューの [Protobuf] をクリックします。
- 表示される [メッセージ タイプ] メニューから、仮想アセットに受信されると予想されるメッセージ タイプを選択します。
変換オプションの指定
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 で初期化できます。
- [Input mode] を Literal に設定し、テキストエリアに Protobuf メッセージの JSON バージョンを入力します。
- [フォーム入力] ビューに切り替えます。[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
- 初回リリース