Googleデータポータルのコネクタをつくってみる
この記事は、Apps Scrippt Advent Calendar 2019 – Qiita 12/9の記事です。
背景
皆さんは、売上げやユーザー数等、事業のKPIをどのように共有、可視化していますか?
うちの会社では、いままでいろんな所に分散していたデータをGoogleデータポータルを使って、集約&可視化していこうブームがおこっています。
そこで1つ壁になっているのが、データポータルが対応していないデータとどう連携するかということです。
例えば、バグチケットを管理しているMantisHubというバグトラッキングシステムのデータを分析したいと思ったとき、データポータルでは対応していないため、このような方法で連携していました。
この方法では、リアルタイムにデータを取得できない等の問題があり、他にいい方法がないかぁと探して見つけたのが、コミュニティコネクタという仕組みでした。
しかも、使い慣れているGoogleAppsScriptで開発するということなので、早速やってみました!
コミュニティコネクタの作成
今回は、例にあげたMantishubと連携するための、Mantishub Connectorを作ってみようと思います。
公式ドキュメントによるとコミュニティコネクタ作成するには大きく以下のステップになっているようです。
- Google Apps Scriptのプロジェクトを作成する
- コネクタのコードを実装する
- プロジェクトマニフェストを作成する
- デプロイする
CodeLabsでコミュニティコネクタを作成する手順を学習できるので、先にやってみるとイメージ付きやすいと思います。
Google Apps Scriptのプロジェクトを作成する
Google Apps Scriptからプロジェクトを作成します。GASerの方には説明不要ですねw
コネクタのコードを実装する
コネクタに必要な以下の関数について実装します。
実際に実装したコードはGithubで公開しています。
- getAuthType() で認証の種類を定義する
- 今回は、特定の認証情報を使うので、
AuthType : NONE
としています
- 今回は、特定の認証情報を使うので、
- getConfig() で設定を定義する
- getSchema() でフィールドを定義する
- getData() でデータを取得して返す
- MantisHub APIを使って、データを取得します
プロジェクトマニフェストを作成する
スクリプトエディタの 表示 > マニュフェストファイルを表示 をクリックして、マニュフェストファイル appsscript.json
を作成します。
{ "timeZone": "Asia/Tokyo", "dependencies": { "libraries": [] }, "exceptionLogging": "STACKDRIVER", "dataStudio": { "name": "MantisHub Connector", "logoUrl": "https://raw.githubusercontent.com/andysumi/datastudio-mantishub-connector/master/logo.png", "company": "andysumi", "companyUrl": "https://github.com/andysumi", "addonUrl": "https://github.com/andysumi/datastudio-mantishub-connector/", "supportUrl": "https://github.com/andysumi/datastudio-mantishub-connector/issues", "description": "This connector can connect to your MantisHub, and bring the data to the Data Studio.", "shortDescription": "This Connector uses MantisHub API to fetch issues.", "authType": ["NONE"] } }
マニュフェストファイルの詳細については、リファレンスを参照してください。
デプロイする
スクリプトエディタの 公開 > マニュフェストから配置 を選択して、Deployments画面で新しいデプロイを作成します。
さらに、作成したデプロイの データスタジオアイコン をクリックして表示されるリンクをクリックすると、データポータルのウィンドウが開きます
あとは 接続 をクリックすれば、レポートに追加することができます!
やってみて
意外とさくっとコミュニティコネクタを作成することができました!これで、ブームに乗り遅れず、データの集約&可視化を進めていけそうですw
ただ、今回使ったMantishub APIは、期間を指定してデータを取得できなかったり、レスポンスが遅かったりとこのまま使うのは厳しそうでした。。。一難去ってまた一難。。。
GASでClosedなesaの記事URLをSlackに貼ったら展開されるようにした
ドキュメント管理ツールとして、esaというサービスを使っているのですが、こちらの記事を読んで、社内でも同じようなニーズがあったため、やってみました。
記事では、アプリケーションを Ruby、サーバーサイドにHeroku利用していますが、今回はGoogle Apps Script(以降GASという)で実現していこうと思います。
GASは、Webアプリケーションとして、Googleのサーバーで公開できるため、アプリケーションとサーバーサイドをまるっと準備することができ、しかも無料、今回のような用途にはピッタリです!
SlackAppの作成
ほぼ、記事のとおりに進めていただければ問題ありませんが、 Event Subscription > Request URL には後述するWebアプリケーションのURLを入力して下さい。
アプリケーションの作成
Apps Script – Google Apps Script から 新規スクリプト
を作成し、スクリプトエディタにコードをコピペします。
- アクセストークンなどのキーは Properties Service | Apps Script | Google Developers に保存しています。
- esa、Slackの処理は、自前のライブラリを使ってます。
アプリケーションの公開
メニューの 公開 > ウェブアプリケーションとして導入... から以下の通りに設定し、公開します。表示されるURLが、 WebアプリケーションのURL
となります。
以上です!
まとめ
いかがでしたでしょうか?GASを使うことで、お手軽、簡単に、実現することができたと思います。
この他に、BotやGoogleのサービスと連携したりと、アイディア次第でいろいろなアプリケーションを作ることが可能なので、是非チャレンジしてみて下さい。
もしもに備えてMacをバックアップする
災害は忘れたころにやってくる、その時は突然訪れました。
いつものように、出社してMacbookを起動すると・・・
Dockのアプリがすべて ?
になっていて、PCを交換することに。。。
このような状態なので、データ移行も出来ず、0からセットアップしなければならず、かなりの時間を費やしました。
そこで、また明日やってくるかもしれない「もしも」に備えて、(出来るだけ)自動かつ低コストでMacをバックアップする方法をまとめました!
方針
- アプリは、Homebrewで管理して、Brewfileをバックアップする
- 設定ファイル等は、シンボリックリンクを設置して、実ファイルをバックアップする
バックアップというと、 Time Machine
が簡単だと思いますが、別にHDDが必要なこともあり、会社でやるのは現実的ではないため、見送りました。
また、この方法だと、プライベート用、仕事用など複数のMacを使っていても環境を同期することが出来るのがメリットです。
バックアップ
バックアップ用ディレクトリを作って、そこにいろいろ突っ込んでいきます。
あとはそのディレクトリをDropBoxやGoogleDrive、Git等で同期しておけばOKです。
$ mkdir ~/backup
事前準備
Homebrewをインストールします。
$ usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" ⋮ ==> Installation successful! $ brew doctor Your system is ready to brew.
アプリ
Homebrewでアプリを管理するために、mas-cli、Homebrew-Caskをインストールします。
# mas-cli $ brew install mas # Homebrew-Cask $ brew tap caskroom/cask $ brew tap caskroom/versions
Homebrewでインストールした パッケージ(アプリ)のリスト、Brewfile( ~/Brewfile
)を作成します。
※App Storeでインストールしたアプリは含まれます。
$ brew bundle dump --force
設定ファイル等
アプリの設定ファイル等は、実ファイルをバックアップ用ディレクトリに移動し、ファイルがあったディレクトリにシンボリックリンクを作成します。
# .configをbackupに移動 $ mv ~/.config ~/backup/.config # 設定ファイルがあったディレクトリにシンボリックリンクを作成 $ ln -s ~/backup/.config ~/
ただ、アプリごとに都度この作業をするのは面倒くさいので、ツールに任せちゃいましょう。 Mackup は、この作業を簡単に実行できる便利なヤツです。
$ brew install mackup
ということで、Mackupに対応しているアプリの設定ファイルは、Mackupでバックアップします。
Dropbox等のクラウドストレージを使うことも出来ますが、今回は、いろいろまるっとバックアップしたいので、 file_system
を使います。
# Mackupの設定ファイルを編集 $ vi ~/.mackup.cfg [storage] engine = file_system path = backup directory = Mackup [applications_to_sync] ssh ⋮ # 設定ファイルをバックアップ $ mackup backup --force
定期実行
バックアップ作業を定期的に実行することで、常に最新の状態を保てるようにします。
launchdを使って、毎日19時に実行するように設定しています。
# 設定ファイル $ vi ~/Library/LaunchAgents/backup.plist <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>Label</key> <string>backup</string> <key>ProgramArguments</key> <array> <string>/bin/bash</string> <string>/Users/you/backup/backup.sh</string> </array> <key>StartCalendarInterval</key> <dict> <key>Hour</key> <integer>19</integer> <key>Minute</key> <integer>0</integer> </dict> </dict> </plist> # 登録 $ launchctl load ~/Library/LaunchAgents/backup.plist # 確認 $ launchctl list | grep backup
復元
バックアップしたフォルダを復元先のPCに設置します。
事前準備
バックアップと同様に、まずは、Homebrewをインストールしましょう。
アプリ
Brewfileからパッケージ(アプリ)をインストールします。
# Brewfileのシンボリックリンクを作成 $ ln -s ~/backup/Brewfile ~/ $ brew bundle
設定ファイル等
Mackupに対応しているアプリの設定ファイルは、Mackupで復元します。
$ mackup restore --force
Mackupに対応していないアプリの設定ファイル、その他ファイル・ディレクトリは、規定のディレクトリにシンボリックリンクを作成します。
最後に
ここまで、アプリと設定ファイル等については、最低限のバックアップ&復元が出来ました。
簡単ですね、お金かかりませんね、これでいつ「もしも」がやってきても大丈夫です!
テスト管理ツールをいろいろ試してみた 〜PractiTest編〜
テスト管理ツールをいろいろ試してみたシリーズ第1弾は、いきなり大本命、PractiTestです。
機能が豊富な上に、使いやすい、わかりやすいデザインになっていて、実業務での導入を決めました!
概要
料金
- Tester
- PROFESSIONAL : $35 / user / month
- プロジェクト数は無制限、基本的な機能は使える
- ENTERPRISE : $45 / user / month
- PROFESSIONALに加え、API利用、自動テストやバージョン管理との連携などの機能が使える
- PROFESSIONAL : $35 / user / month
- Developer : $15 / user / mmonth
- Testerの契約が必要
- issueの登録/更新のみ可能で、その他のアイテムは読み取り専用
機能
- 要件管理 : ○
- テストケース管理 : ○
- テスト実行後にテストケースを修正した時、テスト結果が変更されない : ○
- テスト実行・進捗管理 : ○
- バグ管理 : ○
- インポート/エクスポート : ○
- 公開API : ○ ※ENTERPRISEのみ
- Markdown対応 : ○
機能解説
Project
最初に、Projectを作成します。
作成済みの、Projectからユーザーやカスタムフィールドの情報をクローンすることが出来るようです。Projectを作成する度に、1から設定する必要が無いので、便利ですね。
※ PRICINGには、 Unlimited Projects
と記載がありましたが、初期状態では4つまでしか作成出来ず、それ以上作成する場合は、サポートへ連絡する必要があるみたいです。
Dashboard
作成したProjectを選択すると、Dashboardが表示されます。
ここでは、テストやバグのステータス等、Projectに関する情報が確認出来ます。表示される情報は細かくカスタマイズが可能です。
Requirements(要件)
PractiTestでは要件にテストケースを紐付けて管理するため、まず、要件を登録します。
Descriptionの装飾はツールバーの他、Markdownに対応しているため、とてもスムーズに入力出来ます。
Traceabilityにはテストケース以外にバグを紐付けることが可能なため、要件が変更された場合の影響範囲が一目瞭然です。
Test Library(テストケース)
次に、テストケースを登録します。
ステップ毎に期待値を設定する構成になっているのもPractiTestのポイントですね。
後は、テストケース毎にステータスを設定することが出来ます。各ステータスもカスタマイズ可能なので、レビューの時に使えるかなぁと。
また、ENTERPRISEユーザーでは以下のような機能も使うことが可能です。
- Step Parametersを使うことで、テスト実行時に入力する値等を変数として定義
- Time Managementを有効にすると、テストケース実行の見積もり時間を設定
Test Sets & Runs(テストセット)
テストを実行する単位として、作成したテストケースを選択して、テストセットを作成します。
テストケース作成時に予定時間を設定していると、テストセット全体、各テストケース毎に予定と実績の監視をすることが可能です。
また、PractiTestの特徴として、Exploratory and Session Based Testsを管理することが出来ます。実業務でも、スクリプトテストと並行して探索的テストも実行しているので、積極的に使っていきたいと思っています。
こちらは、テスト実行時の画面です。ステップ毎に手順、期待値を確認しながら、テスト結果を選択していきます。
Failed
の場合は、Fail & Issueリンクから直接バグを登録することが出来ます。
テストを開始すると、自動的にRunningTimeがカウントアップされます。席を外す時やテスト以外のことをする時はタイマーを停止しないと時間がどんどん経過してしまうので、注意が必要ですw
Actionボタンからは、ステップの修正・追加・削除が可能で、期待値やステップに誤りがあった場合は、修正しながらテストを進め、Update Original testボタンでテストケースに簡単に反映させることが可能です。
Issues(バグ)
テストランからバグを登録する場合、実行中のステップからタイトル、Descriptionが自動的に入力され、スピーディーに登録することが出来ます。
登録が完了すると、Submit issue and continue testingボタンで実行中のテストランへ戻れるのは、地味ですが便利ですね。
もちろん、単体で登録することも可能です。
Settings(設定)
設定からは、Filter、Field、Workflow、Dashboardのカスタマイズ等が出来ます。カスタマイズ性が高いのはPractiTestのポイントですね!
Import & Exportからは、Issue、Test、Test Run、Test Set、Requirementのインポート及びエクスポートが可能です。特にインポート機能では、Googleドライブからのインポートが出来るので、今までスプレッドシートでテストケースを管理していた方は移行がスムーズかもしれません。
感想
必要な機能は全て網羅されており、カスタマイズ性も高く、ExploratoryTestingやStep Parameters等の痒い所に手が届くような機能もあり、これを超えるツールはないんじゃないかというぐらいの完成度だと思いますw
また、問い合わせに対しても数時間で返信があったり、要望に応じて、オンラインでデモも実施してくれたり(もちろん英語ですが)、サポートが手厚いのも判断の決め手となりました。
なんかPractiTestの回し者みたいになってきましたが、テスト管理ツールを検討されている方は、是非試してみるツールだと思います!
テスト管理ツールをいろいろ試してみた
この記事は、ソフトウェアテスト Advent Calendar 2017 – Qiita 12/15の記事です。
そして、このブログ初めての記事です!
Qiitaに投稿しようか迷いましたが、前からブログをやってみたかったのでこの機会にチャレンジしてみました。以後、お見知り置きを。
※12/26 PractiTestのトライアルレポートへのリンクを追加しました
そうだ テスト管理ツール、導入しよう
社内でテスト管理ツールを導入することになり、色々なツールを使い倒したので、そのまとめを紹介したいと思います。 (自分たちで環境の面倒までみたくなかったので、SaaS以外のサービスは除外しています)
この記事では、ツールの概要や機能についてのまとめを記載し、それぞれのツールの詳細については、別途記事にしていく予定です。
※あくまで個人的な感想になりますので、人や組織によって合う合わないあると思いますが、ツール選定の参考になれば幸いです。
テスト管理ツールとは
テスト管理ツールとは・・・割愛します!
こちらに、テスト管理ツールとはなんぞや、導入するとなにがいいの?等、分かりやすくまとまっていますので、参考にしてくださいm
比較のポイント
- 料金
- 機能
比較表
要件管理あり
PractiTest | SpiraTest | testuff | TestCollab | ReQtest | |
---|---|---|---|---|---|
料金 | $35/user | $69.99/3user | $27/user | $25/user | $45/user |
要件管理 | ○ | ○ | ○ | ○ | ○ |
ケース管理 | ○ | ○ | ○ | ○ | ○ |
テスト実行・進捗管理 | ○ | ○ | ○ | ○ | ○ |
バグ管理 | ○ | ○ | ○ | × ※外部ツールとの連携可 |
○ |
インポート/エクスポート | ○ | ○ | ○ | ○ | × |
公開API | ○ ※上位プランのみ |
○ | ○ | ○ | × |
Markdown | ○ | × | × | ○ | × |
トライアルレポート | こちら | 乞うご期待 | 乞うご期待 | 乞うご期待 | 乞うご期待 |
要件管理なし
TestCaseLab | EasyQA | TestRail | Qangaroo | Lean Testing | Kualitee | HIPTEST | |
---|---|---|---|---|---|---|---|
料金 | $28/500testcases | $10/user | $25/user | ¥5,000/15user | 無料 | 無料 | 無料 |
要件管理 | × | × | × | × | × | × | × |
ケース管理 | ○ | ○ | ○ | ○ | ○ | ○ | ○ |
テスト実行・進捗管理 | ○ | ○ | ○ | ○ | ○ | ○ | ○ |
バグ管理 | × 外部ツールとの連携可 |
○ | × 外部ツールとの連携可 |
○ | ○ | ○ | × |
インポート/エクスポート | ○ | ○ | ○ | × | ○ | ○ | ○ |
公開API | × | × | ○ | × | ○ | × | ○ |
Markdown | ○ | × | ○ ※一部のみ |
× | ○ | × | × |
トライアルレポート | 乞うご期待 | 乞うご期待 | 乞うご期待 | 乞うご期待 | 乞うご期待 | 乞うご期待 | 乞うご期待 |
最後に
まだまだ道半ばですが、導入していく上での気づきやノウハウがあったら共有して行こうと思います!
また、実際テスト管理ツールを使われている方の感想や、同じようにこれからテスト管理ツールを導入しようとしている方のご意見など、コメントいただけるとありがたいです。