このセクションの内容:
Azure DevOps へのテスト データの送信
次の図は、Azure DevOps 環境に Parasoft DTP および Parasoft テスト実行ツールを統合するための自動インフラストラクチャの実装方法を示しています。
テスト計画を立てる
Azure ユーザー設定要件:Parasoft DTP がテスト結果を Azure DevOps に送信できるようにするには、ユーザー アクセス レベルに Azure DevOps の「テスト計画」を含める必要があります。この設定は、Parasoft DTP がテスト結果を Azure DevOps に送信する際にテスト計画を作成するために必要です。
Azure DevOps のテスト計画を設定するには、次のいずれかを実行します。
ローカル版の Azure DevOps でテスト計画を設定するには、次のことを行う必要があります。
- Azure DevOps サイトで [Access levels] をクリックします。
- Basic + Test Plans を選択します。
- [+ Add] をクリックします。
- [User or Group] フィールドにユーザー名を入力し、返されたリストからその名前を選択します。
- [Save changes] をクリックします。Basic + Test Plan のアクセス権限を持つユーザーが [Display name] 列に追加されます。
Azure DevOps でクラウド用のテスト計画を設定するには、次のことを行う必要があります。
- Azure DevOps サイトで [Organization settings] をクリックします。
- [Billing] を選択します。
- Basic + Test Plans を選択します。
- [Users] を選択します。
- ユーザーのアクセス レベルを変更します。
- アクセス レベルとして [Basic + Test Plans] を選択します。
Azure DevOps へのテスト データの送信
テスト データを Azure DevOps に送信するには:
- Azure DevOps で、Parasoft ツールで実行されるテストと関連付けることができる要件を作成します。
テストファイルで、以下のアノテーション形式を使用して、Azure DevOps システムの要件 ID をテストにマッピングします。
Azure DevOps でトレーサビリティ結果を見るために独自のテストケース定義を作成していないユーザーの場合は、@req
を使用します。* 次のアノテーションは、テストを要件にマッピングします。
*
@req
<<Azure DevOps ID> >
@TEST
...
Parasoft で
@req
を使用し、Parasoft DTP から Azure DevOps への結果の送信をトリガーします。Azure DevOps で独自のテストケース定義を作成したユーザーには、
@test
を使用します。* 次のアノテーションは、テストを要件にマッピングします。
*
@test
<<Azure DevOps ID> >
@TEST
...
各テストケース定義を、Azure DevOps でテストした要件に関連付けます。
@test <Azure DevOps Test ID> アノテーションを使用して、テストを Azure DevOps のテスト実行に関連付けます。
@test
を使用する場合は、Parasoft DTP から Azure DevOps に送信する予定の実行ステータスのテストに、テストケースのステップが定義されていないことを確認してください。Parasoft DTP は、ステップが定義されているテストケースのテストケース実行を更新できません。- @req <Azure DevOps ID> アノテーションを使用して、テストを Azure DevOps のストーリーに関連付けます。
@req
を使用するときは、結果を送信する予定の Azure DevOps プロジェクトで次の関係タイプが定義されていることを確認してください。"verified by"。このような関係は、Parasoft DTP が Azure DevOps でテストケースを作成し、Azure DevOps 要件に関連付けるときに必要になります。
テストにアノテーションを付けると、テストが Azure DevOps のエンティティにリンクされ、DTP レポートで可視化できるようになります。アノテーションは、Parasoft 言語ツール (C/C++test、dotTEST、Jtest) の単体テスト ファイルに追加されます。SOAtest で実行される機能テストの場合、アノテーションは .tst ファイルに追加されます。アノテーションの追加方法の詳細については、ご使用のツールのドキュメントを参照してください。UI で生成された ID ではなく、Azure DevOps URL からの ID を使用する必要があります。
- CI プロセスの一部としてテストを実行します。IDE からテストを手動で実行することもできます。
- テスト実行の一環として、Parasoft テスト実行ツールはフィルターとビルド ID でテスト結果をタグ付けし、データを DTP に送信します。DTP ダッシュボードに テスト ウィジェット を追加し、フィルターとビルド ID を設定することにより、DTP で結果を確認できます。開発者は、テスト実行データを DTP から IDE にダウンロードして、失敗したテストに対処できます。
Sending Test Data to External System フローをデプロイした場合 (「特定の DTP プロジェクトの結果を送信する」を参照)、Data Collector が Parasoft ツールからデータを受信すると、単体テストと機能テストの結果が Azure DevOps Connect に自動的に送信されます。デフォルトでは、フローは Data Collector が受信した任意のプロジェクトの単体テストおよび機能テストの結果をフォワードしますが、特定のプロジェクトのデータだけを送信するようフローを設定できます (「Sending Results from a Specific DTP Project」を参照)。
また、DTP REST API エンドポイントに POST リクエストを手動で送信して、DTP データベースから Azure DevOps Connect に結果を送信することもできます。API 呼び出しの URL パラメーターとして、DTP フィルターとビルドの ID、および一連の Azure DevOps テスト ケースの ID を渡します。curl -X POST -u <username>:<password> "http://<host>:<port>/grs/api/v1.7/linkedApps/configurations/1/syncTestCases?filterId=<filterID>&buildId=<buildID>
フィルター ID とビルド ID は、テスト エクスプローラーの URL で確認できます。
次の表で、エンドポイント パラメーターについて説明します。パラメーター 値 説明 必須 filterId
integer テスト データを含むフィルター IDを指定します。フィルター ID は整数値です。フィルター名と混同しないでください。 Required (必須) buildId
string テスト データを含むビルド ID を指定します。 Required (必須) groupResultsBySOAtestTST
boolean true
に設定すると、SOAtest の結果が .tst ファイルでグループ化されます。その結果、1 つの .tst ファイルが 1 つの Azure DevOps テストに関連付けられます。false
に設定すると、SOAtest.tst 内の各テストステップが Azure DevOps テストに関連付けられます。デフォルトは
false
です。任意 testPlanId
integer 結果の送信先となる Azure DevOps のテスト計画 ID を指定します。DTP は、指定されたテスト計画で "Results from Parasoft DTP - <DTP_PROJECT_NAME>" の形式でテスト スイートを生成します。同期するテストケースはこのテスト スイートにコピーされ、そのテスト ポイントが実行されます。このテスト スイートが以前に生成されたものであれば、指定されたテスト計画に対して今後 syncTestCases を実行する際に再利用されます。この指定がない場合、DTP は新しいテスト計画を生成し、テストケースの結果をそのテスト計画に同期します。
任意 updateResultsOnly
boolean 特定のテスト計画内のテストケースをインプレースで更新する同期モードを指定します。
true
に設定した場合、DTP が更新するテスト ケースを正しいテスト計画で検索できるように、testPlanId
パラメーターも指定する必要があります。このモードでは、同期操作を実行する前に、更新するテスト ケース定義が存在している必要があります。DTP は、このモードでは新しいテスト スイート、テスト計画、テスト ケースを作成しません。デフォルトは
false
です。任意 複数の Azure DevOps 実装のサポート
DTP と Azure DevOps 間でテストケースを同期するために
/syncTestCases
REST API エンドポイントを使用している場合、DTP を構成してテストデータを異なる Azure DevOps 実装にデプロイすることができます。この機能は、API 呼び出しを使用した場合にのみ使用できます。<DTP_DATA_DIR>/conf
ディレクトリにある ExternalSystemSettings.properties ファイルの末尾に追加することで、必要な数の Azure DevOps 実装を認識するように DTP を構成できます。API が Azure DevOps に DTP データを送信し、ExternalSystemSettings.properties で一致が見つからない場合は、代わりに「DTP を Azure DevOps に接続する」で UI から設定した Azure DevOps 構成にデータが送信されます。以下の例のような形式で、ExternalSystemSettings.properties ファイルに Azure DevOps 構成を追加します。azuredevops.config1.appUrl=http://azure.test1:8888/organization1 azuredevops.config1.displayUrl=http://azure.test1:8888/organization1 azuredevops.config1.username=john azuredevops.config1.apiToken=encrypted_token azuredevops.config1.project1.dtpProject=bank azuredevops.config1.project1.externalProject=Bank azuredevops.config1.project2.dtpProject=atm-core azuredevops.config1.project2.externalProject=Atm
この構成 (config1) により、DTP プロジェクト bank のデータは、サーバー http://azure.test1:8888/organization1 上の Bank という外部プロジェクトに送られます。サーバーには API トークン abcdef を使用してアクセスします。DTP プロジェクトと外部プロジェクトは、どちらも project1 に属しているという理由でリンクされています。そして適切なサーバーとログイン認証情報は、すべて config1 に属しているため、既知のものです。
これを理解すると、上記の例をテンプレートとして、他の Azure DevOps 実装のために追加構成を定義することができます。各構成には、一意の azuredevops.config# 値が必要です。たとえば、上記の構成をベースとして使用すると、2 番目の構成は次のようになります。
azuredevops.config2.appUrl=http://azure.test2:8888/organization1 azuredevops.config2.displayUrl=http://azure.test2:8888/organization1 azuredevops.config2.username=jane azuredevops.config2.apiToken=encrypted_token azuredevops.config2.project1.dtpProject=foo azuredevops.config2.project1.externalProject=bar
必要な数だけ構成をセットアップできます。いくつか注意点があります。
- これらの例の project#.dtpProject= と project#.externalProject= のペアは、DTP プロジェクトを外部プロジェクトに関連付ける方法を示しています。複数の関連付けが可能ですが、dtpProject はすべての構成で一意である必要があります。
- Report Center の設定 UI で構成されている現在の外部システム構成は、Azure DevOps に構成する必要があります。
- ExternalSystemSettings.properties 構成ファイル内の追加の Azure DevOps 構成はすべて有効である必要があります。
- 各構成の apiToken プロパティは暗号化する必要があります。暗号化しない場合、構成は無効と見なされます。この値を暗号化するには、任意の Parasoft ツールに付属する
-encodepass
CLI オプションを使用します (例:soatestcli.exe -encodepass <API TOKEN>
)。 - トレーサビリティ ウィジェットとレポートには、プライマリ ADO (つまり、UI で定義されたもの) のみが表示されます。
- 複数の ADO からの要件を SOAtest にインポートすることはできません。
API 呼び出しは、渡された
filterId
に基づいて、使用する構成を決定します (エンドポイント パラメーターについて説明した上記の表を参照してください)。DTP はそのフィルターに関連付けられたプロジェクトを検索し、その DTP プロジェクトを指定する構成を見つけます。最初に一致したものが使用されます。一致するものがない場合、デフォルトの構成が使用されます。- DTP は、
filterId
パラメーターとbuildId
パラメーターに一致するテスト結果を見つけ、そのデータを Azure DevOps Connect のシステム要件に送信します。- DTPは
@req <ID>
で結果を検索すると、Azure DevOps で一致するアイテムを検索します。一致が見つかった場合、アイテムに関連付けられたテスト ケースにテスト実行が追加されます。要件 ID に一致するテスト ケースがない場合は、テスト ケースが作成されてテスト実行が追加されます。 external-app-sync.log ファイルも
<DTP_INSTALL>/logs
ディレクトリに書き込まれます。このログ ファイルには、DTP から Azure DevOps へのテスト結果の送信に関する進捗情報が含まれています。
- DTPは
DTP がレポートを処理し、結果を Azure DevOps に送信した後、以下のような応答があります。
{ "createdTestSession": "DTPP-521", "created": [ "DTPP-519, testName = testBagSumAdd" ], "updated": [ "DTPP-519, testName = testBagSumAdd", "DTPP-518, testName = testBagSimpleAdd" ], "ignored": [ "MAGD-567, testName = testBagNegate", "QAP-512, testName = testTryThis3", "QAP-512, testName = testTryThis4", "MAGD-567, testName = testBagMultiply" ] }
特定の DTP プロジェクトの結果を送信する
Sending Test Data to External System フローを使用して単体テストおよび機能テストの結果を送信している場合、デフォルトでは、すべての DTP プロジェクトのデータが Azure DevOps に送信されます。結果として、Azure DevOps ID に一致するアノテーションを持つすべての DTP プロジェクトで収集されたテストを含むよう、作業アイテムが更新されます。ただし、特定のプロジェクトのデータだけを送信するよう、フローを設定することもできます。
- Extension Designer を開き、Sending Test Data がデプロイされたサービスを開きます。
- Toggle Projects Mode ノードをダブルクリックし、ドロップダウンの値を true に設定します。これにより、特定のプロジェクトにのみデータを送信する機能がオンになります。
- [完了] をクリックします。
Configure Projects ノードをダブルクリックします。このノードのロジックは、同期操作中に Azure DevOps にデータを送信する DTP プロジェクトを指定します。これらのプロジェクト構成は、JSON 配列に格納されます。
例として、すでに定義されているプロジェクト構成のサンプルがあります。{ project: 'abc' }
さらにプロジェクト構成を追加するには、最後のプロジェクト構成の末尾にカンマを追加し、その下に新しいエントリを追加します。例: 例:
msg.configuredProjects = [ { project: 'abc' }, { project: 'foobar' } ];
これらの構成では、結果を同期するプラン ID を指定するための追加オプションもサポートされています。例:
{ project: 'foobar', plan: 350 }
- 目的のプロジェクトを構成したら、[完了] をクリックします。
- (オプション) 構成されたすべてのプロジェクトにプラン ID が指定されている場合、必要に応じて
updateResultsOnly=true
パラメーターを追加して同期モードを切り替えることができます。linkedApps - syncTestCases ノードをダブルクリックし、[エンドポイント] フィールドの末尾にパラメーターを追加して、[完了] をクリックします。 - [デプロイ] をクリックして、これらの変更を反映してフローを更新します。
フローを実行すると、指定した DTP プロジェクトのテスト結果だけが Azure DevOps に送信されます。
Azure DevOps での結果の表示
テスト データを送信した後、Azure DevOps で結果を表示できます。次の画像は、Azure DevOps の System Requirement Specifications 要件を示しています。要件にいくつかのテスト ケースがあります。
個々のテスト ケースについて、テスト実行などの詳細情報をさらに確認できます。