2016/07/23
Apexのテストを自動化するサービス「Gearset」を触ってみた

こんにちは。R&D チーム エンジニアの山﨑です。
2月からチームスピリットのメンバーに加わり、現在は主に React.js を使用したフロントエンド開発を行っています。
さて、そんなわけで Apex をがっつり書くことからは最近遠ざかっていたのですが
先日 Salesforce Developers Blog でちょっと気になる記事を見つけました。
内容はタイトルの通り、Apex で良いユニットテストを書くための 6 つの Tips が紹介されているのですが
一番気になったのは最後の Tip で、Gearset という無料で利用できるテスト自動化サービスを使ってテストを自動化しよう、ということが書かれています。
この Gearset というサービス、これまで聞いたことがなかったので、どのようなことができるのかざっと確認してみました。
Gearset を使ってみる
それでは早速 Gearset にログインしてみます。
https://app.gearset.com/
にアクセスします。
Salesforce または Google のアカウントでログインできるようです。
今回は Salesforce アカウントでログインします。
ログイン後のページです。
上部に複数のメニューが並んでいることからもわかるかと思いますが、Gearset の機能はテストの自動化だけではないようです。
たとえば、キャプチャで表示されている [COMPARE AND DEPLOY] という機能では、デプロイ元の組織(Source organization)とデプロイ先の組織(Target organization)をそれぞれ指定することによって組織間のメタデータの差分を確認したり、Source organization -> Target organization へのデプロイがボタン1つで実現できたりします(たぶん)。
ただ、私もまだサービスの全容を理解していないのと、今回のテスト自動化はこれらとは独立した機能のようなので紹介は割愛します。
https://gearset.com/features に各機能の概要が書かれてますので、興味のある方はそちらをご覧ください。
また、ライセンス形態についてですが、https://gearset.com/pricing に記載されているように Free プラン以外に 2 つの有償プランがあります。
アカウント登録時は 30 日間の Enterprise プラン(フル機能)のトライアルという扱いになり、期限が切れると自動的に Free プランに移行するようです。
Free プランでどの機能まで使えるのか気になるところですが、とりあえず "Automate your unit tests" とあるのでテスト自動化の機能に関しては Free プランで利用できそうです。
組織を登録する
テスト自動化の設定に移る前に、テスト対象となる組織を登録しておく必要があります。
上部のメニューから [MANAGE ORGS] をクリックします。
現在は登録された組織が1つも無いため、このような画面が表示されます。
右上の [ADD NEW ORGANIZATION...] から組織を追加します。
追加すると、以下のように [Manage organizations] に表示されます。
テスト自動化のためのジョブを登録する
組織が登録できたので、いよいよテストを自動化するためのジョブを登録します。
[SCHEDULE TESTS] をクリックします。
- General settings
- Name:任意のジョブ名
- Organization:先ほど登録した組織をプルダウンで選択
- Minimum code coverage:しきい値となるコードカバレッジ。Gearset の通知条件やステータスに影響
- Notification settings
- Send notifications:通知条件
- on every run:毎回必ず
- only when some tests have failed or ...:テストが失敗またはコードカバレッジがしきい値を下回った場合のみ
- Email results to:テスト結果の送信先アドレス
- Text results to:携帯の SMS で通知する場合の送信先。現在は +1 (アメリカ)と +44 (イギリス)のみ対応?
- Slack integration URL:Slack に通知する場合の URL(後述)
- Integrate with Chatter:結果を Chatter に投稿するかどうか
- Send notifications:通知条件
必要な設定はこれだけです。
後は、毎日決まった時間に該当組織の Apex テストが自動実行され、結果がメールで通知されます。
結果をメールで確認する
テスト結果のメールは以下のような内容でした。
成功したテスト数 / 実行したテスト総数 およびコードカバレッジがわかります。
またカバレッジがしきい値を下回っていることも記載されています。
結果を Slack にも通知する
先ほどジョブの登録画面で見たように、Slack との連携も簡単に設定することができるようです。
弊社でもエンジニアチームのコミュニケーションツールとして Slack を採用しています。せっかくなので試してみましょう。
Slack と連携するには Incoming WebHooks URL が必要です。
Slack の設定ページから Build > Make a Custom Integration ボタン > Incoming WebHooks を選択します。
Post するチャンネルを選んで [Add Incoming WebHooks integration] ボタンをクリックすると、画面に Webhook URL が表示されるのでコピーします。
最後に Gearset 側でジョブの設定を編集します。 先ほどのジョブの [Slack integration URL] にコピーした Webhook URL を貼り付ければ OK です。
あとは次回の実行を待つだけです。 実行されると、このようなメッセージが投稿されます。
おわりに
今回は Salesforce のブログ記事でたまたま見つけた Gearset というサービスのうち、Apex のテストを自動化する機能について紹介しました。
現在わかっている範囲では
・テストは定期実行しかできない
→メタデータがデプロイされたのをトリガーとして実行、みたいなことは不可
・テストの実行頻度は最大で 1 日 1 回
・任意の時刻を指定できない
→おそらく、Salesforce 組織のタイムゾーンの設定によって時間帯を変更することはできる
といった制約がありますが、テストの自動実行が無料でできるという点は魅力的ですね。
また、Gearset というサービスそのものについては
まともなドキュメントがないため全容を理解するのはなかなかつらいんですが、
(Blog から関係しそうな記事を探すしかなさそう)
そういった部分もふまえて、まだまだ発展途上のサービスという印象を受けました。
提供しているサービスはどれもエンジニアにとっては非常にありがたい機能なので、今後のアップデートにも期待したいと思います。