Upgrade to Pro — share decks privately, control downloads, hide ads and more …

QualityForwardでGoogleスプ レッドシートと仲良くする

QualityForwardでGoogleスプ レッドシートと仲良くする

PMなら押さえておきたいクラウドサービス勉強会
https://qualityforward.connpass.com/event/165013/

の発表資料です。

Atsushi Nakatsugawa

February 25, 2020
Tweet

More Decks by Atsushi Nakatsugawa

Other Decks in Technology

Transcript

  1. PAGE # MOONGIFT / 50 DAY 2019/02/14 自己紹介 2 @goofmint

    fb.me/goofmint 中津川 篤司 株式会社MOONGIFT代表取締役 エバンジェリスト コミュニティ 主催 https://www.moongift.jp
  2. PAGE DAY 2017/11/01 # MOONGIFT / 12 QualityForward = テスト管理サービス

    • テストケースを作成して、人がテスト結果を更新する • ベリサーブが提供 • 表計算ライクな操作性でテスト管理 4 https://cloud.veriserve.co.jp/
  3. PAGE DAY 2017/11/01 # MOONGIFT / 12 テスト管理の考え方 8 ੹೚ऀ

    ࡞੒ίετ ӡ༻ίετ όά ֎෦ҕୗ ඼࣭୲อ పఈͯ͠΍Δ೿ ˓ ߴ͍ ߴ͍ গͳ͍ Մ Մ ਖ਼ৗܥ͚ͩؤுΔ ೿ ։ൃऀ Ћ ௿͍ ௿͍ ଟ͍ ෆՄ ෆՄ ΍ͬͯΔՋͳ͍೿ ։ൃऀ ௿͍ ௿͍ ଟ͍ ෆՄ ෆՄ
  4. PAGE DAY 2017/11/01 # MOONGIFT / 12 バグによる手戻り • 後工程になるほど手戻りの工数は増える

    • バグの発生原因(テスト漏れ)を次回のテストに反映する仕組み作り → 毎回一からテストを作るのではなく、以前のものを参照する • 最初から完璧なものではなく、徐々にテスト品質を向上させていく 9
  5. PAGE DAY 2017/11/01 # MOONGIFT / 12 よくあるテスト管理 • Excel

    / Googleスプレッドシート • TestLink(オープンソースのテスト管理) • クラウドサービス 10
  6. PAGE DAY 2017/11/01 # MOONGIFT / 12 Excel / Googleスプレッドシート

    • 手軽にはじめられる! • 誰でも使いこなせる! • コピペで簡単にテストケー スを追加できる 11 • 履歴管理がしんどい • ファイルが増えがち • グラフは別なマクロなどを 用意する必要あり
  7. PAGE DAY 2017/11/01 # MOONGIFT / 12 TestLink 12 •

    無料! • 長い開発の歴史 • Webブラウザで使える • レガシーなUI/UX • 単票形式 • サーバは自分で立てる必要あ り。セキュリティや運用コスト
  8. PAGE DAY 2017/11/01 # MOONGIFT / 12 QualityForward API •

    プロジェクトごとにAPIキーが用意されている • RESTful形式 • 公式ライブラリはなし • 非公式ライブラリ Google Apps Script ← 今日はこの話 Ruby Python Node.js(TypeScript) 14
  9. PAGE DAY 2017/11/01 # MOONGIFT / 12 Google Apps Script?

    • Googleドキュメント/スプレッドシート/スライドなどで使え るマクロ機能(VBAみたいなもの) • 言語はJavaScript(最近v8エンジン版がベータリリース) • HTTPアクセスも可能(GET/POST) 15
  10. PAGE DAY 2017/11/01 # MOONGIFT / 12 QualityForward APIの構造 16

    https://qiita.com/goofmint/items/1d538b1f74f16abe3c36
  11. PAGE DAY 2017/11/01 # MOONGIFT / 12 QualityForward APIの構造 17

    Tenant 契約企業情報 TestSuiteVersion テストスイートのバージョン Project プロジェクト TestCase テストケース User ユーザ TestPhase テストフェーズ TestSuite テストスイート TestSuiteAssignment テストスイートバージョンとテスト フェーズを連結 TestCycle テストサイクル TestResult テスト結果
  12. PAGE DAY 2017/11/01 # MOONGIFT / 12 初期化 19 var

    qf = new QualityForward.Client(‘API_KEY’);
  13. PAGE DAY 2017/11/01 # MOONGIFT / 12 テスト結果の取得まで 20 //

    テストフェーズの取得 for (var testPhases of qf.getTestPhases()) { // テストスイートを取得 for (var testSuiteAssignment of testPhases.get('test_suite_assignments')) { // テストサイクルを取得 for (var testCycle of testSuiteAssignment.getTestCycles()) { // テスト結果を取得 for (var testResult of testCycle.getTestResults()) { ary.push(testResult); } } } }
  14. PAGE DAY 2017/11/01 # MOONGIFT / 12 Googleスプレッドシートに一日の 作業件数を記録する 22

    var group = {}; for (var key in ary) { var testResult = ary[key]; if (!group[testResult.result]) group[testResult.result] = 0; group[testResult.result]++; } Logger.log('本日の作業結果'); for (var key in group) { // スプレッドシートに書き出し } https://qiita.com/goofmint/items/ff67c46c090f2b0e9b10
  15. PAGE DAY 2017/11/01 # MOONGIFT / 12 日々のテスト結果を担当者ごとに 集計する 23

    Logger.log('担当者ごとの作業結果'); for (var date in group) { for (var name in group[date]) { Logger.log(' ' + date + ' : ' + name + ":" + group[date][name] + '件'); } } [20-01-20 17:11:51:164 JST] 担当者ごとの作業結果 [20-01-20 17:11:51:166 JST] 2019-7-8 : 中津川篤司:43件 [20-01-20 17:11:51:166 JST] 2019-7-9 : 中津川篤司:7件 [20-01-20 17:11:51:167 JST] 2019-8-15 : 中津川篤司:25件 [20-01-20 17:11:51:164 JST] 2019-8-16 : 中津川篤司:3件 [20-01-20 17:11:51:165 JST] 2019-11-26 : 中津川篤司:9件 [20-01-20 17:11:51:165 JST] 2019-12-25 : 中津川篤司:13件
  16. PAGE DAY 2017/11/01 # MOONGIFT / 12 日々のテスト結果を担当者ごとに 集計する 24

    Logger.log('担当者ごとの作業結果'); for (var date in group) { for (var name in group[date]) { Logger.log(' ' + date + ' : ' + name + ":" + group[date][name] + '件'); } } [20-01-20 17:11:51:164 JST] 担当者ごとの作業結果 [20-01-20 17:11:51:166 JST] 2019-7-8 : 中津川篤司:43件 [20-01-20 17:11:51:166 JST] 2019-7-9 : 中津川篤司:7件 [20-01-20 17:11:51:167 JST] 2019-8-15 : 中津川篤司:25件 [20-01-20 17:11:51:164 JST] 2019-8-16 : 中津川篤司:3件 [20-01-20 17:11:51:165 JST] 2019-11-26 : 中津川篤司:9件 [20-01-20 17:11:51:165 JST] 2019-12-25 : 中津川篤司:13件
  17. PAGE DAY 2017/11/01 # MOONGIFT / 12 テスト集計を返すSlackコマンド 25 function

    doPost(e) { // 一日の集計結果が記録されているシートを取得 var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName("TestResult") // 最終行を取得 var lastRow = sheet.getLastRow() - 1; var results = {}; // 上から順番にチェックします for (var i = 0; i < dates.length; i++) { } // Slackメッセージ用テンプレート var template = ‘%date%のテスト作業結果です。…なっています。’; // 取得した結果でテンプレートを置き換えます for (var k in results) { template = template.replace('%' + k + '%', results[k]); } // HTTPレスポンスを作ります return out; }
  18. PAGE DAY 2017/11/01 # MOONGIFT / 12 まとめ • Web

    APIを使ってテスト結果を再利用しよう • Google Apps Scriptを使えばサーバレスでシステム開発可能 • QualityForwardを使うならGAS SDKを使ってみてください 26