Slide 1

Slide 1 text

PAGE DAY 2017/11/01 # MOONGIFT / 12 QualityForwardでGoogleスプ レッドシートと仲良くする MOONGIFT 中津川篤司 1

Slide 2

Slide 2 text

PAGE # MOONGIFT / 50 DAY 2019/02/14 自己紹介 2 @goofmint fb.me/goofmint 中津川 篤司 株式会社MOONGIFT代表取締役 エバンジェリスト コミュニティ 主催 https://www.moongift.jp

Slide 3

Slide 3 text

PAGE DAY 2017/11/01 # MOONGIFT / 12 QualityForward? 3

Slide 4

Slide 4 text

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

Slide 5

Slide 5 text

PAGE DAY 2017/11/01 # MOONGIFT / 12 デモ 5

Slide 6

Slide 6 text

PAGE DAY 2017/11/01 # MOONGIFT / 12 グラフ 6

Slide 7

Slide 7 text

PAGE DAY 2017/11/01 # MOONGIFT / 12 テスト管理 7

Slide 8

Slide 8 text

PAGE DAY 2017/11/01 # MOONGIFT / 12 テスト管理の考え方 8 ੹೚ऀ ࡞੒ίετ ӡ༻ίετ όά ֎෦ҕୗ ඼࣭୲อ పఈͯ͠΍Δ೿ ˓ ߴ͍ ߴ͍ গͳ͍ Մ Մ ਖ਼ৗܥ͚ͩؤுΔ ೿ ։ൃऀЋ ௿͍ ௿͍ ଟ͍ ෆՄ ෆՄ ΍ͬͯΔՋͳ͍೿ ։ൃऀ ௿͍ ௿͍ ଟ͍ ෆՄ ෆՄ

Slide 9

Slide 9 text

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

Slide 10

Slide 10 text

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

Slide 11

Slide 11 text

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

Slide 12

Slide 12 text

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

Slide 13

Slide 13 text

PAGE DAY 2017/11/01 # MOONGIFT / 12 Web API? 13

Slide 14

Slide 14 text

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

Slide 15

Slide 15 text

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

Slide 16

Slide 16 text

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

Slide 17

Slide 17 text

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

Slide 18

Slide 18 text

PAGE DAY 2017/11/01 # MOONGIFT / 12 GAS SDK 18

Slide 19

Slide 19 text

PAGE DAY 2017/11/01 # MOONGIFT / 12 初期化 19 var qf = new QualityForward.Client(‘API_KEY’);

Slide 20

Slide 20 text

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); } } } }

Slide 21

Slide 21 text

PAGE DAY 2017/11/01 # MOONGIFT / 12 どんなことができるのか? 21

Slide 22

Slide 22 text

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

Slide 23

Slide 23 text

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件

Slide 24

Slide 24 text

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件

Slide 25

Slide 25 text

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; }

Slide 26

Slide 26 text

PAGE DAY 2017/11/01 # MOONGIFT / 12 まとめ • Web APIを使ってテスト結果を再利用しよう • Google Apps Scriptを使えばサーバレスでシステム開発可能 • QualityForwardを使うならGAS SDKを使ってみてください 26

Slide 27

Slide 27 text

PAGE # MOONGIFT / 50 DAY 2019/02/14 Thanks! @goofmint fb.me/goofmint ご感想お待ちします!