このセクションでは、SOAtest/Virtualize で Parasoft 変更アドバイザーを使用する方法について説明します。テスト資産またはサービス仮想アセットが送信するリクエスト/レスポンス メッセージの更新方法について説明します。
このセクションの内容:
Table of Contents | ||
---|---|---|
|
変更アドバイザーとは
変更アドバイザーは、サービスの変更によって、既存のテスト 資産またはサービスの仮想アセットから送信されるメッセージがどのような影響を受けるかを自動的に識別します。たとえば、名前変更の操作、要素や型の追加、名前空間の変更などです。また、既存のテスト スイートの更新や新規のテスト スイートの作成のために、影響のあったツールを個別にまたはまとめて、変更テンプレートに基づいて自動でリファクタリングします。変更テンプレートは、「元の定義の要素/操作/リソースとスキーマ」が「現在の定義の要素/操作/リソースとスキーマ」にどのように関連するかを表す自動定義されたマッピングをレビューおよび改良することで作成されます。これによって、ユーザーはできる限り早く、正確に、そしてインテリジェントにテスト資産を更新できます。
Info | ||||
---|---|---|---|---|
| ||||
変更アドバイザーは、 EMF Compare と呼ばれる Eclipse プラグインに依存します。このプラグインは、SOAtest をフル インストールした場合には一緒にインストールされます。しかし、SOAtest を更新サイトやプラグイン インストーラーからインストールした場合には一緒にインストールされません。 EMF Compare プラグインは Eclipse の更新サイトを使用してインストールできます。更新サイトの URL はこちらです:https://archive.eclipse.org/modeling/emf/compare/updates/releases/2.0 |
ワークフロー
サービスが変更されたと推測される場合の一般的なワークフローは、以下のとおりです。
- [Parasoft 変更アドバイザー] パースペクティブから変更影響度分析を実行します。
- 変更テンプレートを作成します。
変更テンプレートを適用し、既存のテスト スイートを更新するか、新規テスト スイートを作成します。変更テンプレートの適用方法は 2 通りあります。 1 つは、変更影響度分析でレポートされた特定の変更影響度を解決するために、ケース バイ ケースで適用します。もう 1 つは、プロジェクトやスイート中で影響があったすべてのツールを早急に更新するために、バッチのリファクタリングに適用します。
SOAtest は、予期しないサービスの変更が起こると直ちにそれをキャッチできます:
- テスト実行時に変更影響度分析を実施する、テスト実行用のテスト コンフィギュレーションを更新します。
- 変更の影響がレポートされた場合:
- 変更テンプレートを作成します。
- 変更テンプレートを適用し、既存のテスト スイートを更新するか、新規テスト スイートを作成します。変更テンプレートの適用方法は 2 通りあります。 1 つは、変更影響度分析でレポートされた特定の変更影響度を解決するために、ケース バイ ケースで適用します。もう 1 つは、プロジェクトやスイート中で影響があったすべてのツールを早急に更新するために、バッチのリファクタリングに適用します。
変更影響度分析
変更影響度分析が実行されるとき、変更アドバイザーはどのようにアセットのメッセージが関連する定義ファイル (例: OpenAPI/Swagger、RAML、WADL、WSDL、スキーマ) の変更による影響を受けたかをレポートします。次のいずれかを分析します。
現在設定されているサービス定義に対してアセットのメッセージを比較します。
異なるサービス定義に対してアセットのメッセージを比較します。
この分析結果は、アセットのメッセージの更新に必要な変更のスコープや性質を評価しやすくします。
リファクタリング
更新の対象が明確になったら、変更テンプレートを適用して、変更されたサービス定義に合うようにメッセージを自動的にリファクタリングできます。このリファクタリングは、色々な方法で適用できます。
- テスト単位またはレスポンダー単位
- 選択されたテストまたはレスポンダ
- スイート中のすべての適用可能なテストまたはレスポンダー
変更テンプレートの定義
変更テンプレートはサービス カタログから自動生成されます。サービス カタログは変更影響度分析の実行中にデータ投入されます。
変更テンプレートを作成したら、自動定義されたマッピングをレビューして調整することを推奨します。自動定義されたマッピングは、元の定義の要素/操作/リソース/スキーマが現在の定義のものとどのように関係するかを表します。
- ある定義のアイテムが他の定義のアイテムと関連している可能性が高いと測定した場合、自動分析はそのことを指摘します。そして準備ができたら変更を適用するよう自動的に設定します。このようなマッピングは、「可能性の高い一致」とされます。
- 元のサービスと現在のサービスの間に一致の可能性があると識別した場合、自動分析はマッピングを事前設定します。しかし同時に、レビューが必要な一致としてハイライトします。
自動定義されたマッピングのレビューや更新は、変更テンプレート エディターでグラフィカルに実施されます。
生成した変更テンプレートは、(変更影響度分析でレポートされた特定の変更影響度を解決するために) ケース バイ ケースで適用するだけでなく、(プロジェクトやスイート中で影響があったすべてのツールを早急に更新するために) バッチのリファクタリングで適用できます。
変更の範囲
SOAtest では、SOAP Client、 REST Client、 EDI Client、 Fixed Length Client、 Message Stub といったメッセージング ツール変更アドバイザーを適用できます。Virtualize ではメッセージ レスポンダーにも適用できます。ツールが WSDL または スキーマに従うよう設定されている場合、またはサービス定義に OpenAPI/Swagger、RAML、または WADL (SOAtest) が指定されている場合、変更アドバイザーはフォーム入力を介して指定されたメッセージに作用します。サービス定義に OpenAPI/Swagger、RAML、または WADL が指定されている場合、変更アドバイザーはフォーム JSON を介して指定されたメッセージに作用します。 ツールのメッセージがサポート外のフォーマットで指定されていた場合、そのメッセージは分析やリファクタリングの際にスキップされます。サポート外のフォーマットの値、メッセージ以外のフィールドの値、または変更アドバイザーがサポートしていないツールの値を更新するには、Parasoft の「検索と置換」を使用します「Updating Tool Values with Search and Replace」を参照してください。
要素の並び替えや型の変更など、定義ファイルの簡単な変更は、SOAtest が自動的に更新します。
変更アドバイザーの UI
[変更アドバイザー] パースペクティブは、変更影響度を識別し、対処するために明確に設計されています。
[変更アドバイザー] パースペクティブを開くには、[ウィンドウ] > [パースペクティブ] > [パースペクティブを開く] > [Parasoft 変更アドバイザー] をクリックします。
このパースペクティブは次の要素から構成されています:
- 標準のアセット エクスプローラー: どのアセットを分析するか、またはリファクタリングするかを選択します。
ツールバーボタン: 次の 3 つのボタンが追加されています。[実行] ボタン (アセットが適切にリファクタリングされたかを確認するために、変更影響度分析を再実行するために使用)、[変更影響度分析の実行] ボタン (後で説明)、および [変更テンプレートを使用してリファクタリング] ボタン (後で説明) です。
- [サービス カタログ] ビュー: 各サービスの各バージョンの情報、および、あるバージョンのサービス構成と他のバージョンのサービス構成との比較を定義する「変更テンプレート」を格納します。
- [プロパティ] ビュー: 変更テンプレート エディターで選択されたアイテムの詳細を表示します。
- [変更影響度分析の進捗] ビュー: 変更影響度分析の進捗と結果をレポートします。
- [品質タスク] ビュー: 変更影響度をレビューし、利用可能な変更テンプレートを使用して関連するツールをリファクタリングできます。
Anchor | ||||
---|---|---|---|---|
|
変更影響度分析について
変更影響度分析は、ツールのメッセージを作成するのに元々使用していたサービス定義を、次のいずれかと比較します。
- 同じサービス定義のライブ版 (元の定義ファイルと同じ URL)。
- 異なるサービス定義 (元の定義ファイルと異なる URL)。
変更影響度分析は、ユーザーが分析しているツールに関係のある変更だけをレポートします。たとえば、ツールで使われることのなかったオプション要素がサービスから除外された場合、変更影響度にはレポートされません。
SOAtest での変更影響度分析の実行の一般的な使用事例は、次のとおりです。
- サービスに変更があったと疑われる場合、変更アドバイザーから変更影響度分析を実行し、何が変更されたかを識別します。そして、変更に対処するために必要な更新のスコープや性質を確認します。
- 変更を予期していない場合、通常のテスト実行と一緒に変更影響度分析を実行します。テストが失敗した場合、失敗がサービスの変更に関係しているか即座に確認できます。
変更アドバイザーからの変更影響度分析の実行
変更アドバイザーから変更影響度分析を実行するには、次の操作を行います。
- [エクスプローラー] で、分析するアセットを指定します。個別のツール、スイート、プロジェクトなどを選択できます。SOAtest と Virtualize の両方をインストールしている場合、 .tst または .pva のいずれかのファイルを選択します。
- 変更アドバイザーのツールバーで [変更影響度分析の実行] をクリックします。
- [変更影響度分析の実行] ダイアログで、次の項目を入力します。
- 既存の定義に対して分析するには: 選択したすべてのアセットを、対応するサービス定義のライブ バージョンに対して分析する場合は、1 番目のオプションをオンにして [終了] をクリックします。
- 異なる定義に対して分析するには: 選択したアセットを、対応するサービス定義の異なるバージョンに対して分析する場合は、2 番目のオプションをオンにし、現在のサービス定義と更新されたサービス定義の両方の場所を指定して [終了] をクリックします。
たとえば、3 つの異なるサービス定義に基づいたアセットを含むスイートを選択したものとします。[現在のサービス記述に対して選択されたアセットをスキャン] オプションを使用した分析では、これらのすべてのアセットを、対応するサービス定義の現在のバージョンに対して比較します。[指定されたサービス記述に対して選択されたアセットをスキャン] を選択し、それらのアセットで使用される 3 つのサービス定義のうち 1 つの既存および更新バージョンの場所を指定すると、その指定されたサービス記述を使用するアセットだけが分析されます。他の 2 つの定義に基づくアセットは分析されません。
通常のテスト実行中での変更影響度分析の実行
通常のテスト実行中に変更影響度分析を実行すると、サービスの変更を反映するためにテストを更新する必要がある時を特定するのに役立ちます。通常のテスト実行中に変更影響度分析を実行するには (現行バージョンのアセットの既存のサービス定義に対して):
- 変更影響度分析を実行するように、任意の実行用テスト コンフィギュレーションを構成します。変更影響度分析の有効/無効は、[実行] > [変更影響度] タブで設定できます。
- ユーザー インターフェイスまたはコマンドライン インターフェイスを使用して、そのテスト コンフィギュレーションでテストを実行します。
分析結果の参照
変更影響度分析を実行すると、分析の進捗が [進捗] ビューおよび [コンソール] ビューに表示されます。アセットが「スキップ」されたと表示された場合、サポートされている形式 (たとえばフォーム入力など) で指定されたメッセージがないことを示します。
分析の結果は [品質タスク] ビューにレポートされます。変更の影響をレビューするために、変更インパクト レイアウトが用意されています。[品質タスク] ビューがこのレイアウトではない場合、ビューのツールバーで [変更インパクト レイアウト] をクリックして有効にできます。
ビューのドロップ ダウン メニューからもこのレイアウトを開くことができます。
分析結果は、サービス、スイート/場所、変更のタイプから構成されています。
関連する HTML レポートで報告されます。ただし、テスト結果が DTP にアップロードされる場合、変更影響度分析の結果は表示されないことに注意してください。
[品質タスク] ビューに加えて、分析結果は変更影響度の検索
メッセージを更新する必要があるツールを開くには、変更影響度メッセージを右クリックし、[関連エディターの表示] をクリックします。
プロジェクト内のツールの場所を確認するには、変更影響度メッセージを右クリックし、[テスト ケース エクスプローラーでソースを表示] をクリックします。
変更テンプレートを使用してリファクタリング
変更テンプレートは、 「Defining a Change Template」で説明するように作成されます。変更テンプレートは 2 つの方法で適用できます。
- 変更影響度レベルで適用: 変更影響度分析によってレポートされた特定の変更影響度に適用します。この方法は、変更影響度分析を実行し、レポートされた影響を 1 件ずつレビューして対処したい場合に使用されます。
- プロジェクトまたはスイート レベルで適用: エクスプローラーで選択したスイート、ツール、プロジェクト全体を一括で処理します。この方法は一般的に、アセットのグループに急速に変更テンプレートを適用したい場合に使用されます。
変更テンプレートを適用するには、次の操作を行います:
- 次のいずれかの方法でリファクタリング ウィザードを開きます:
- 結果のビューから影響を右クリックし、[変更テンプレートを使用してリファクタリング] をクリックします。
- エクスプローラーで、更新したいアセットのノードを選択し、[変更テンプレートを使用してリファクタリング] ツールバー ボタンをクリックします。SOAtest と Virtualize の両方をインストールしている場合、 .tst または .pva のいずれかのファイルを選択します。
- ウィザードの最初のページで必要項目を記入し、[次へ] をクリックします。
- サービス名: メッセージをリファクタリングするサービスの名前を指定します。
- バージョン: メッセージをリファクタリングするサービスのバージョンを指定します。ここに表示されるバージョン名は、[サービス カタログ] ビューに表示されるバージョン名です。
- Parasoft アセットを更新してサービス バージョンを使用: 更新されたメッセージが関連するサービスのバージョンを指定します。ここに表示されるバージョン名は、[サービス カタログ] ビューに表示されるバージョン名です。
- 変更テンプレートの適用によって: 上記の項目に指定したサービス バージョンのメッセージを更新するために適用する変更テンプレートの名前を指定します。
- サービス名: メッセージをリファクタリングするサービスの名前を指定します。
ウィザードの 2 ページ目で、更新したアセットの保存先を指定します。デフォルトでは、更新したアセットは新しい場所に保存します。そのため、元のアセットを上書きするのではなく、新しいテストまたはレスポンダーのセットが作成されます。
リファクタリングは、変更テンプレートの定義に従ってメッセージを更新します。取り除かれた操作のツールは無効になりますが、削除はされません。
Anchor | ||||
---|---|---|---|---|
|
変更テンプレートの作成
変更テンプレートは要素/操作/リソース/スキーマ (XML または JSON) を、あるサービスのバージョンから別のバージョンへどのようにマッピングするかを指定します。変更テンプレートを定義したら、適用してサービスの変更によって影響を受けたアセットを更新できます。変更影響度分析後にレポートされた特定の変更影響度に対処するために、あるいは選択したツール、スイート、プロジェクトに一括更新を実行するために適用できます。たとえば、変更テンプレートで FundPrepaid が FundPrepaidRequest へマッピングされた場合、この変更テンプレートを適用すると選択したツールのメッセージで FundPrepaid が FundPrepaidRequest に更新されます。
変更テンプレートは、[Parasoft 変更アドバイザー] パースペクティブから作成、レビュー、修正します。
変更テンプレートを作成するには、以下の操作を行います。
- 変更影響度分析をまだ実行していない場合は、「Identifying Changes with Change Impact Analysis」に従って実行します。
- [サービス カタログ] ビューは変更のあったサービスを表示します。また、古いサービス定義と現在のサービス定義の「バージョン」を含みます。
- カタログにサービスを追加するには、[サービス カタログ] ビューで右クリックをし、[カタログにサービスを追加] をクリックします。表示されたダイアログの項目 (選択した成果物のタイプによって異なります) を入力し、[終了] をクリックします。
- カタログにバージョンを追加するには、関連するサービスを右クリックして [カタログにバージョンを追加] を選択し、バージョンの詳細を指定します。
サービスまたはバージョンの名前を変更するには、サービス カタログ ノードを右クリックし、適切な 名前の変更 コマンドを選択します。ここで指定した名前は、[変更テンプレートを使用してリファクタリング] ウィザードで使用されます。
Info icon false title サービス カタログに 2 つの操作ノードがある理由 SOAtest と Virtualize の両方をインストールしている場合、 [操作] ノードは 2 つのノードに分けられています。
• クライアント ビュー: SOAtest メッセージング クライアント用です (リクエスト パラメーターをカバーしています)。
• レスポンダー ビュー: Virtualize メッセージ レスポンダー用です (レスポンダー パラメーターをカバーしています)。
- 次のいずれかを実施します。
- [ファイル] > [新規] > [変更テンプレート] を選択します。
- サービス カタログで、元のバージョンのノードと新しいバージョンのノードを選択し、右クリックします。適切な [変更テンプレートの追加] オプションを選択します。
- サービス カタログで、元のバージョンの 変更テンプレート ノードを右クリックし、[変更テンプレートの追加] をクリックします。
- ウィザードが開くので、次の操作を行います。
- 変更テンプレートの基本情報を指定します。
- SOAtest と Virtualize の両方をインストールしている場合、クライアントやレスポンダー用の変更テンプレートを作成するオプションが表示されます。SOAtest メッセージング クライアント ツールのリクエストの更新方法を変更テンプレートに定義させる場合、[クライアント] を選択します。Virtualize メッセージ レスポンダー ツールのレスポンスの更新方法を変更テンプレートに定義させる場合、[レスポンダー] を選択します。
- [次へ] をクリックします。
- 作成する変更テンプレートのファイル名と場所を指定します。
- [終了] をクリックします。
- 変更テンプレートの基本情報を指定します。
変更テンプレートが作成され、[変更テンプレート エディター] に表示されます。
変更テンプレートの参照と変更
変更テンプレートは、Parasoft の経験値に基づいて、要素/操作/リソース/スキーマを元のサービス定義から新しいサービス定義へ自動的にマッピングします。
- 元のバージョンと新しいバージョンの間に完璧な一致、または可能性の高い一致がある場合、関連するアイテムはマッピングされ、緑色にマークされます。
- 元のバージョンと新しいバージョンの間に近い一致 (しかし完全一致ではない) がある場合、関連するアイテムはマッピングされ、黄色にマークされます。アイテムは、変更テンプレートを承認し、適用する前にレビューするべきです。
- 元のバージョンのアイテムに近い一致が検知されなかった場合はマッピングされません。
要素/操作/リソースは [マップ要素/操作/リソース] タブにマッピングされます。
各要素のスキーマは [スキーマのマップ] タブにマッピングされます。
マッピングをレビューする際、エディターの上部にあるフィルターを使用できます。フィルターは [可能性の高い一致]、[レビューが必要な一致]、[一致しない] に絞り込むことができます。
変更テンプレートをレビューする際、次の操作を実行できます。
目的 | 操作 |
---|---|
マッピングされていない 2 つのアイテムが相関関係にあることを指定する。 | 両方のアイテムを選択し、[接続] をクリックする。 |
マッピングされた 2 つのアイテムは相関関係にないことを指定する。 | 両方のアイテムを選択し、[切断] をクリックする。 |
一致のないアイテムのデフォルト値を指定する。 | アイテムを右クリックし、[追加された<アイテム名>にデフォルト値を設定] をクリックする。ダイアログに適切な値を入力する。 |
「レビューが必要な一致」のレビューが完了したことを 指示する (黄色のマッピングを緑色に変更する)。 | マップを右クリックし、[<マップ>をレビュー済みとしてマーク] または [<マップ>および子をレビュー済みとしてマーク] をクリックする。 |
一致のないアイテムのレビューが完了したことを指示する。 | 要素を右クリックし、[<アイテム名>をレビュー済みとしてマーク] または [<アイテム名>および子をレビュー済みとしてマーク] をクリックする。 |
マッピング中にプロパティを確認
要素/操作/リソース/スキーマをマッピングする際、[プロパティ] ビューでマッピングするアイテムの詳細を参照できます。例:
XML 用変更テンプレートのアイコン説明
変更テンプレート エディターでは、次のアイコンが XML アイテムのマークとして使用されます。
アイコン | 説明 |
---|---|
すべて | |
任意の型 | |
属性 | |
選択肢 | |
複合型 | |
要素 | |
列挙型 | |
操作 | |
シーケンス | |
単純型 |
JSON 用変更テンプレートのアイコン説明
変更テンプレート エディターでは、次のアイコンが JSON アイテムのマークとして使用されます。
アイコン | 説明 |
---|---|
任意の型 | |
配列 | |
配列のアイテム | |
Boolean | |
列挙型 | |
列挙型の値 | |
Integer/数値 | |
アイテムのコンテナ | |
Null | |
オブジェクト | |
オブジェクト プロパティ | |
選択肢 | |
プロパティのコンテナ | |
String |
変更テンプレートの共有
チームで変更テンプレートを共有する場合、テンプレートを含むプロジェクトを共有するか、ワークスペース間でテンプレートをコピーします。
チュートリアル
変更アドバイザーの使用に関するチュートリアルについては「Updating Tests as Services Change」を参照してください。