自動テストが最近失敗したフィーチャーを取得する

このフローは、関連する自動テストの実行が過去24時間に失敗したフィーチャーのリストを取得する方法を示しています。

関連するテストのリストは次のとおりです。

  • フィーチャーに直接関連付けられた自動テスト。

  • フィーチャーの子 (ストーリーと不具合) に関連付けられた自動テスト。

エリア: バックログ、テスト実行 

エンティティ関連図

このフローでは、次のエンティティにアクセスし、これらのエンティティ間の関係を理解する必要があります。

エンティティ このフローの関係 関係の説明 参照 /関係フィールド
テスト   この集約リソースコレクションは、手動、Gherkin、テストスイート、自動化など、テストの種類を表します。 subtype
自動テスト テスト

自動テストは、testsのサブタイプです。

集約リソースコレクションtestsに関連するフィールドはありません。

 
実行

各自動テストには、0回以上の実行を関連付けることができます。

自動テストの参照フィールドlast_runsを使用して、過去24時間に発生した最後の実行を検索します。

last_runs
実行 自動テスト 各実行は1つのテストに関連付けられています。 test_of_last_run
リスト 各実行にはステータスがあり、ステータスはリストノードに保存されます。 status
フィーチャー 自動テスト 自動 (および手動) テストは、フィーチャーに関連付けることができます。 test
テーマ 各フィーチャーはテーマに割り当てる必要があります。このフィーチャーは、テーマの子と見なされます。 children
ストーリー 各フィーチャーには、0個以上のストーリーを含めることができます。ストーリー (ユーザーストーリーと不具合) は、フィーチャーの子と見なされます。 children

トップに戻る

フロー

ステップバイステップでREST API呼び出しを作成しましょう。

  1. まず、ワークスペースのすべてのフィーチャーを一覧表示します。

    GET .../api/shared_spaces/<space_id>/workspaces/<workspace_id>/features

  2. query_clauseを作成しましょう。実行が失敗し、過去24時間に実行されたテストに関連するフィーチャーにのみ関心があります。

    このクエリには、次の2つの基準セットがあります。フィーチャーに直接関連する失敗したテストと、フィーチャーの子に関連する失敗したテストを一覧表示します。||を使用しますOR条件を示し、両方のケースに一致する実行がリストされるようにします。

    さらに、これはネストされたクエリです。ワークスペースのフィーチャーに関連するテストの特定の実行についてクエリを実行します。

    フィーチャーの子に関連するテストの実行をチェックするクエリ句の最も外側の句から始めましょう。間もなく<inner_query>に入力します。

    クエリ句のこの部分は、最後の実行がinner_query句と一致するテストを持つフィーチャーのユーザーストーリーと不具合 (子) を探していることを示しています。

    GET .../api/shared_spaces/<space_id>/workspaces/<workspace_id>/features?query="children EQ {test EQ {<inner_query>}}"

  3. フィーチャーの子に関連するテストの最後の実行を探す方法がわかったので、内部クエリに入力して、取得する最後の実行を指定できます。ステータスが失敗した実行にのみアクセスしたいと思います。

    これは、リストノードを操作する方法の例です。ALM Octaneで自動テストに使用できるリストの1つは、list_nodeであるrun_statusです。最後の自動実行のステータスをrun_statusリストの値failedと比較します。

    GET .../api/shared_spaces/<space_id>/workspaces/<workspace_id>/features?query="children EQ {test EQ {last_runs EQ {status EQ {logical_name EQ ^list_node.run_status.failed^}"

  4. これで、自動テストの失敗した実行に関連付けられているフィーチャーがワークスペースに表示されます。ただし、過去24時間に作成された実行の失敗に関連するフィーチャーのみを表示したいと思います。

    これは、作成時間フィールドを操作する方法の例です。日付の形式に注意してください。今日が2016年7月20日の6:45であるとすると、2016年7月18日以降の実行をクエリします。

    GET .../api/shared_spaces/<space_id>/workspaces/<workspace_id>/features?query="children EQ {test EQ {last_runs EQ {status EQ {logical_name EQ ^list_node.run_status.failed^};creation_time GT ^2016-07-18T06:45:48Z^}}}"

  5. これで、子のテスト実行が失敗したフィーチャーを一覧表示するために必要なものが正確に得られました。||を追加できますクエリの2番目の部分を追加する演算子。これは、テストの実行が失敗したフィーチャー (子のフィーチャーではない) を検索します。 

    GET .../api/shared_spaces/<space_id>/workspaces/<workspace_id>/features?query="children EQ {test EQ {last_runs EQ {status EQ {logical_name EQ ^list_node.run_status.failed^};creation_time GT ^2016-07-18T06:45:48Z^}}}||test EQ {last_runs EQ {status EQ {logical_name EQ ^list_node.run_status.failed^};creation_time GT ^2016-07-18T06:45:48Z^}}"

このフローの完全なREST API呼び出しは次のとおりです。 

GET .../api/shared_spaces/<space_id>/workspaces/<workspace_id>/features?query="children EQ {test EQ {last_runs EQ {status EQ {logical_name EQ ^list_node.run_status.failed^};creation_time GT ^2016-07-18T06:45:48Z^}}}||test EQ {last_runs EQ {status EQ {logical_name EQ ^list_node.run_status.failed^};creation_time GT ^2016-07-18T06:45:48Z^}}"

トップに戻る

Javascriptの例

/**
 * Flow:  How to find features in this release with failing tests (within the last 24 hours)
 * @param requestor
 */
function getFeaturesInReleaseWithFailingTests(requestor) {
  var last24HoursDateString = getLast24HoursDateString();

  requestor.get('/features?query="children EQ {test EQ {last_runs EQ {status  EQ {logical_name EQ ^list_node.run_status.failed^};' +
    'creation_time GT ^' + last24HoursDateString + '^}}}' +
    '||' +
    'test EQ {last_runs EQ {status  EQ {logical_name EQ ^list_node.run_status.failed^};' +
    'creation_time GT ^' + last24HoursDateString + '^}}"', function(error, message, features) {
    console.info(features);
  });
}

exports.getFeaturesInReleaseWithFailingTests = getFeaturesInReleaseWithFailingTests;
function getLast24HoursDateString() {
  var date = new Date();
  date.setDate(date.getDate() - 1);

  return date.toISOString();
}

トップに戻る

参照情報: