QualityForward APIでGoogleスプレッドシートに一日の作業件数を記録する


QualityForwardはクラウドベースのテスト管理サービスです。Web APIを提供しています。そのWeb APIを使いやすくするため、Google Apps Script用ライブラリを開発中です。

今回はそのGoogle Apps Scriptライブラリを使って、Googleスプレッドシートに一日の作業件数を集計します。

インストール

Google Apps ScriptでのプロジェクトIDは 1ppRPLjuClG0MhtnXYbskdZ8uYGbyCFHv7MFhr0GYa-3IAKEh8B7lmTMb になります。これを取り込んでください。以下はデフォルトの QualityForward として取り込んだ場合の書き方です。

初期化

初期化はAPIキーを適用して行います。

var apiKey = 'aaa';
var qf = new QualityForward.Client(apiKey);

テストフェーズの取得

最初にテストフェーズをすべて取得します。

var testPhases = qf.getTestPhases();

次にすべてのテストフェーズについて、テストサイクルを取得します。

for (var i in testPhases) {
  for (var j in testPhases[i].test_suite_assignments) {
    var testSuiteAssignment = testPhases[i].test_suite_assignments[j];
    var testCycles = testSuiteAssignment.getTestCycles();
    // : 次の処理はこの中に記述
  }
}

テスト結果の取得

すべてのテストサイクルについて、テスト結果を取得します。テスト結果の中で本日作業分をフィルタリングします。

for (var k in testCycles) {
  var testCycle = testCycles[k];
  var results = testCycle.getTestResults();
  for (var l in results) {
    var testResult = results[l];
    var d = testResult.executed_at;
    if (d.getFullYear() === today.getFullYear() && 
      d.getMonth() === today.getMonth() &&
      d.getDate() === today.getDate()) {
      ary.push(testResult);
    }
  }
}

テスト結果ごとにグルーピングする

TestResultが取得できたら、例えばテスト結果ごとにグルーピングしてみます。

var group = {};
for (var key in ary) {
  var testResult = ary[key];
  if (!group[testResult.result]) group[testResult.result] = 0;
  group[testResult.result]++;
}

後はスプレッドシートへの出力です。

var resultSheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('TestResult')
var lastRow = resultSheet.getRange(resultSheet.getMaxRows(), 1).getNextDataCell(SpreadsheetApp.Direction.UP).getRow();
resultSheet.getRange(lastRow + 1, 1).setValue(today);
resultSheet.getRange(lastRow + 1, 2).setValue(group.pass || 0);
resultSheet.getRange(lastRow + 1, 3).setValue(group.fail || 0);
resultSheet.getRange(lastRow + 1, 4).setValue(group.skip || 0);
resultSheet.getRange(lastRow + 1, 5).setValue(group.cut || 0);
resultSheet.getRange(lastRow + 1, 6).setValue(group.block || 0);
resultSheet.getRange(lastRow + 1, 7).setValue(group.na || 0);
resultSheet.getRange(lastRow + 1, 8).setValue(group.qa || 0);

これを実行すると、スプレッドシートに日付ごとにテスト結果が一覧で記録されます。

まとめ

QualityForwardを使えばExcelなどで行っていた煩雑なテスト管理がクラウドベースでできるようになります。ライブラリを使うことで既存システムとの連携も用意です。ぜひお試しください!

QualityForward