2017.06.08

「変更セットのテストオプション」を使ってSalesforceの本番デプロイを効率化する

  • このエントリーをはてなブックマークに追加
  • follow us in feedly

はじめに

みなさんこんにちは。プロダクトサポートエンジニアの河合と申します。
フレッシュ新入社員ではありませんが、本ブログ初投稿となります。
今後ともよろしくお願いします。

さて、今回は「変更セットのテストオプション」をご紹介します。
このオプションを使用すると、Salesforceの本番環境へデプロイする際に全てのテストクラスを実行しなくてもデプロイが可能です。

SkyVisualEditorを使って本番デプロイしたときにエラーになってしまい困っている方、全てのテストクラス実行が長くて困っている方など、是非この方法を試してみてください。

本番デプロイでエラー発生!

SkyVisualEditorで作成した画面を本番環境へデプロイしたときに、下図のようなエラー画面が表示されたことはありませんでしょうか。
注目していただきたいのはエラーメッセージの部分です。
作成した画面とは異なるクラスがエラーになっています。

エラーになっているクラス「TestFailedControllerTest」(左) SkyVisualEditorで作成している画面「SVE_ParchaseInfoDetail」(右)
これは本番環境へのカスタマイズ(項目のデータ型変更や入力規則の追加など)によって、既存のテストクラスが正常に動作しなくなったことが原因となります。
本記事では既存のテストクラスを修正することなく、SkyVisualEditorで作成した画面を本番環境へデプロイする方法を紹介します。

変更セットのテストオプションの選択

この記事の執筆時点で1年以上前となるWinter'16でリリースされた機能となりますが、「変更セットのテストオプションの選択」機能をご存知でしょうか。
この中の「指定されたテストを実行」を選択することで全てのテストクラスを実行しなくてもデプロイすることができます。
このオプションを選択したときのデプロイ成功条件は以下となります。
  • 変更セットに含まれるApexクラスまたはトリガのコードカバー率がそれぞれ75%以上である
  • 指定したテストクラスが正常終了している

実際にやってみる

それでは「指定されたテスト実行」オプションを使ってデプロイをしてみます。
1.まずはSandboxへデプロイ
 1-1.Visualforceページの名前、Apexクラス名、テストクラス名を控えておきます。

 1-2.画面を任意のSandboxにデプロイします。
  ※Sandboxへのデプロイにはテストクラス判定が不要です

2.送信変更セットを作成する
 2-1.「1-2」で画面をデプロイしたSandboxにログインします。

 2-2.設定画面で「送信変更セット」を選択します。

 2-3.「新規」をクリックします。

 2-4.任意の名前を入力します。※説明は必要に応じて入力します。

 2-5.「保存」をクリックします。

 次はこの変更セットにApexクラスとVisualforceページを詰めていきます。
3.作成した変更セットにクラスとページを追加する
 3-1.「追加」をクリックします。

 3-2.選択リストを「Apexクラス」に変更します。

 3-3.「1-1」で控えたApexクラス名、テストクラス名にチェックを入れます。

 3-4.「変更セットに追加」をクリックします。

 3-5.もう一度「追加」をクリックします。

 3-6.選択リストを「Visualforceページ」に変更します。

 3-7.「1-1」で控えたVisualforceページ名にチェックを入れます。

 3-8.「変更セットに追加」をクリックします。

 これで変更セットの作成が完了しました。
4.変更セットを本番環境へ送信する
 4-1.「アップロード」をクリックします。

 4-2.「本番」にチェックを入れます。
   ※「本番」が表示されない場合は下部の「リリース設定」をご確認ください。

 4-3.「アップロード」をクリックします。

 4-4.少し待ちます・・・

 下図のメッセージになればアップロード完了です。

5.変更セットを本番環境にデプロイする
 5-1.本番環境にログインします。

 5-2.設定画面で「受信変更セット」をクリックします。

 5-3.「2」で作成した変更セットをクリックします。

 5-4.「リリース」をクリックします。

 5-5.「指定されたテストを実行」をチェックします。

 5-6.画面下部の入力欄に「1-1」で控えたテストクラス名を入力します。

 5-7.「リリース」をクリックします。

6.結果を確認する
 6-1.状況が「成功したリリース」となればデプロイ成功です。

おまけ.リリース設定をする
 変更セットのアップロード時に「本番」が表示されない場合、そのSandboxから本番環境へデプロイが許可されていないのが原因となります。
 下記の手順でリリース設定を変更する必要があります。
 ・本番環境の設定画面から「リリース設定」をクリックします。

 ・変更セットの送信元となるSandboxの「編集」をクリックします。

 ・「変更着信を許可」にチェックを入れ、「保存」をクリックします。

まとめ

長くなってしまいましたが、無事にデプロイできたでしょうか。

この方法であれば既存のテストクラスに関わらず本番環境に画面をデプロイすることができます。

なお、これ以外の方法でデプロイするには

  • テストクラスを修正してから、SkyVisualEditorで本番デプロイをする
    • 本番環境にカスタマイズを行う度にテストクラスの動作確認、修正が必要になります。
    • テストクラスの調査、修正にはApexの知識が必要です。
  • 入力規則やワークフローを無効化してから、SkyVisualEditorで本番デプロイする
    • 無効化している間にユーザが不正なデータを作成してしまう可能性があります。
    • 数が多いと有効化するのを忘れる可能性があります。

となり、どれもオススメできる方法とはいえません。

また、デプロイで困ったときは、SkyVisualEditorのヘルプもご覧ください。
今回は以上となります。
最後までお付き合いいただきありがとうございました。
85 件

関連する記事