Salesforceは、1999年にマーク・ベニオフによって設立されたセールスフォース・ドットコムが提供する顧客管理システムです。
日本国内では翌2000年4月にセールスフォース・ジャパンが設立されて、販売元となっています。
全2回の連載となる「Salesforce運用におけるテスト自動化の必要性」の第1回では、Salesforce開発環境とカスタマイズが重要な理由を解説しました。Salesforceの基本情報や特徴、開発環境、Salesforceでカスタマイズが重要な理由について解説した第1回はこちら
第2回となる本記事では、「Salesforceのカスタマイズで起きる課題とテスト自動化の必要性」と題し、Salesforceでカスタマイズをすることで起きる課題やSalesforce開発に必要なテスト、テスト自動化の必要性や課題について解説します。
テストの自動化を行うことで、業務効率化やヒューマンエラーの削減を期待できます。詳細についてわかりやすくお伝えします。
Salesforceでカスタマイズをすることで起きる課題
Salesforceでカスタマイズをすることで起きる課題は以下のとおりです。
- システムの複雑化
- テスト工数の増加
- アップデート対応工数の増加
それぞれについて解説します。
システムの複雑化
Salesforceのカスタマイズを続けると、システムが複雑になりがちです。システムが複雑になると、システムの保守性が低下し、何か問題が発生した時に解決するまでにかかる時間も長くなってしまいます。
また、長年のカスタマイズによりシステムの全体像を把握している人が誰もいないといった問題も起こりがちです。
経済産業省が発表した『DXレポート ~ITシステム「2025年の崖」克服とDXの本格的な展開~』でも、複雑化したシステムによる国内経済の停滞や国際競争への遅れが「2025年の壁」として懸念されています。
テスト工数の増加
Salesforceに限ったことではないですが、システムに機能追加をする場合にはテストの実施が不可欠です。カスタマイズをすればするほど、テストケースも増加し、テスト工数がかかります。
自動化されたテストツールを活用することで、テスト工数を減らすことができますが、それでもテストには一定の工数が必要です。
アップデート対応工数の増加
Salesforceは年に3回アップデートが行われます。カスタマイズを行なった機能については、アップデートによってカスタマイズの修正や調整が必要になる場合があります。
特に、ApexやVisualforceで開発した部分は影響を受けやすいです。アップデート対応工数を最小限に抑えるために、リリースノートを確認しましょう。また、使われていないフローやApexコード、Visualforceは定期的に削除することも大切です。
Salesforceに必要な5つのテスト
Salesforceに必要な5つのテストは以下のとおりです。
- 単体テスト
- システムテスト
- ユーザー受け入れテスト
- 本番テスト
- 回帰テスト
それぞれについて解説します。
単体テスト
単体テストは、エンジニアが作成したApexクラス、トリガー、Visualforceページなどの個々のコンポーネントが正しく機能するかどうかを確認するためのテストです。
Salesforceでは、Apexコードの単体テストカバー率が最低75%必要とされています。この基準を満たすことで、コードの品質を保つことができます。
システムテスト
システムテストでは、コンポーネント間の連携や、システム全体の動作を検証します。実際のビジネスプロセスをシミュレートし、データの流れや処理結果が期待通りであることを確認するテストです。
システムテストは、開発フェーズの終盤に行われるテストで、本番環境へのリリース前に実施されます。システムテストを正しく行うことで、システム全体の品質を担保することができます。
ユーザー受け入れテスト
ユーザー受け入れテスト(UAT)は、Salesforceのカスタマイズがエンドユーザーの要件を満たしているかどうかを確認するためのテストです。UATは基本的に開発の発注者側が実施します。
システムテストは開発者が行うテストなのに対し、ユーザー受け入れテスト(UAT)は発注者が行うテストとなります。
本番テスト
本番テストは、Salesforceで行ったカスタマイズが本番環境で正常に動作するかどうかを確認するためのテストです。本番テストでは、実際の本番環境にシステムをデプロイし、実データを使用してシステムの動作を検証します。
本番テストは、システムを本番環境で利用する前に行われる最後のテストです。本番テストでは、テスト期間中のユーザーサポートや、問題発生時の対応計画なども準備しておく必要があります。
回帰テスト
回帰テストは、Salesforceにカスタマイズ等の変更を加えた後、既存の機能が引き続き正しく動作することを確認するためのテストです。新しい機能の追加や既存の機能の修正など、システムに変更を加えると、意図しないバグが発生することもあります。
回帰テストの結果を元に、問題があれば修正することで、システムの品質を保つことができます。
テスト自動化の必要性
Salesforce開発を行う際には、テストの自動化がおすすめです。ここからはテストを自動化するべき理由について解説します。
- リリースまでの時間を短縮
- テストカバレッジの向上
- ヒューマンエラーの削減
- 回帰テストによる業務効率化
それぞれについて解説します。
リリースまでの時間を短縮
Salesforce開発を行う際にテストの自動化を行うことで、リリースまでの時間を短縮することができます。
また、テストを自動化することでビジネスニーズに迅速に対応することができます。コードを変更した際にはテストが自動で実行されるため、大きな手戻りが発生するリスクを抑えることも可能です。
テスト自動化ツールは24時間365日稼働させることができるため、業務時間外でも稼働できるのもメリットだと言えるでしょう。開発チームの生産性を向上させたい場合には、テスト自動化ツールの導入を検討してみてください。
テストカバレッジの向上
どのような機能を追加するかにもよりますが、ビジネス要件によっては影響範囲が非常に大きい開発をする必要が出てくるかもしれません。このような大規模な開発で手動テストを行おうと思っても、すべての機能を網羅的にテストすることは現実的ではありません。
テスト自動化を導入することで、テストカバレッジを向上させることができます。自動化されたテストスクリプトは、手動テストでは見落とされがちなエッジケースをも発見することもできるため、システム品質の向上も期待できます。
ヒューマンエラーの削減
ソフトウェアテストにおいては、非常に細かなデータの入出力や繰り返し作業が求められるため、手動ではどうしてもヒューマンエラーの発生を想定する必要があり、現場における高負荷の要因ともなっています。テストの自動化を行うことで、こうしたリスクを回避することができます。
また、テスト結果も機械が記録するため、テスト結果の解釈を誤るリスクも限りなく抑えることができます。
回帰テストによる業務効率化
Salesforceのカスタマイズは、1度開発したら終わりではありません。何か機能を追加した場合には、既存の機能の修正が必要となることも多いです。
回帰テストは、カスタマイズによるバグを特定するために不可欠ですが、手動での回帰テストは非常に時間がかかります。開発規模に対するテストの割合も大きくなるため、充分な工数を確保できず、その結果運用中のシステムやサービスに影響を及ぼす大きなトラブルにつながることも少なくありません。テスト自動化を導入することで、回帰テストのアジリティを改善するとともに、テストに費やす時間を大幅に削減し、業務の効率とサービスの品質を向上させることができます。
また、バグの早期発見も期待できるため、業務全体の生産性を高めることができるでしょう。回帰テストの実施や業務全体の負荷、サービスの品質に課題のある場合には、テスト自動化ツールの導入を検討してみてください。
テスト自動化の課題
ここまでテストを自動化するべき理由について解説しました。ここからは、テストの自動化を行った時に発生する課題について解説します。
- 初期コストがかかる
- メンテナンスコストがかかる
- 自動化するテストの選定が必要
それぞれについて解説します。
初期コストがかかる
テスト自動化を導入する際の課題として、初期コストがあげられます。自動化ツールの選定、導入、テストスクリプトの開発には、一定の投資が必要です。
また、自動化されたテストスクリプトの開発には、専門知識を持つ開発者が必要であり、その労力と時間もコストとして考慮する必要があります。
メンテナンスコストがかかる
テスト自動化のもう一つの課題は、メンテナンスコストです。一度開発された自動化テストスクリプトは、システムの変更に合わせて修正が必要です。
また、自動化ツールのバージョンアップや、Salesforceのアップデートに伴い、同様の修正が必要になる場合もあります。
メンテナンスコストがかかることを正しく理解し、予算に組み込むようにしてください。
自動化するテストの選定が必要
テスト自動化を成功させるには、自動化するテストを選定する必要があります。テスト自動化ツールを導入したからといって、すべてのテストケースを自動化するのは好ましくありません。
UIの検証や一度しか実行されないテストケースは、自動化したとしてもメリットを感じられないでしょう。また、ツールの特性に応じた適用方式の検討は不可欠です。
テスト自動化ツールを導入する前に、自動化するテストの優先順位付けを行い、テスト自動化による投資対効果を最大化できる計画を立てましょう。
まとめ
第2回となる本記事では、「Salesforce運用におけるテスト自動化の必要性」と題し、Salesforceでカスタマイズをすることで起きる課題やSalesforce開発に必要なテスト、テスト自動化の必要性や課題について解説しました。
テストを自動化するべき理由は以下のとおりです。
- リリースまでの時間を短縮
- テストカバレッジの向上
- ヒューマンエラーの削減
- 回帰テストによる業務効率化
テストの自動化には「初期コストがかかる」「メンテナンスコストがかかる」「自動化するテストの選定が必要」などの課題がありますが、テストにかかる工数に課題を感じている場合には導入するメリットの方が大きくなるでしょう。
次の連載では、Salesforce特化のテスト自動化ツール「Provar」の特長について解説します。