Salesforceの開発現場で「テスト不足」が起こる主な原因は、多くの工程が手作業に依存していることと、属人化の問題にあると言われています。また、Salesforceシステムの複雑化や頻繁なアップデートなどの構造的な要因も加わり、このテスト不足が品質の不安や手戻り開発を誘発するなど、生産性を損なうパターンとして常態化している現場が少なくありません。
これは決して現場のエンジニアの怠慢ではなく、Salesforceというプラットフォーム特有の性質と、現代のビジネススピードが引き起こしている「構造的な問題」ともいえます。
本ブログではSalesforce特有の構造を前提に、「壊れない」「続けられる」「現場が使える」自動化を実現するテスト自動化ソリューションの適用について考えます。
Salesforceの開発現場で起きる「テスト不足」とは何か
Salesforce開発における「テスト不足」とは、単純にテストの量(カバレッジ)が少ないことを指すわけではありません。本質的には、“業務として正しく動くことを確認できていない状態”を指します。
一見すると、テストは実施されているように見えるケースも多いのですが、その中身を見ると、いくつかの重要な観点が抜け落ちていることがほとんどです。
①「テストはしているのに不具合が出る」状態の正体
多くの現場では、以下のような流れで開発とテストが進みます。
(カバレッジ確保)
簡易確認
総合テスト
一見すると問題ないプロセスに見えますが、それでも本番で不具合が発生するのはなぜでしょうか。それは、検証の粒度と範囲が業務の実態に追いついていないためです。
例えば、以下のこうした問題は、部分的なテストでは検知できません。
●単体テストは通っているが、Flowとの連携で不具合が出る
●管理者では問題ないが、一般ユーザーではエラーになる
●個別機能は正常だが、一連の業務フローとしては成立しない
②Salesforce特有の「テスト不足」を生む要因
Salesforceでは特に、次のような要因が重なり、テスト不足が構造的に発生します。
年3回のバージョンアップ:プラットフォーム全体の強制的なアップデートにより、自社の改修とは無関係な場所で、標準機能の仕様変更やUIの構造変化が起き、既存の挙動が変わってしまうリスクを常に抱えています。この変化をリリースのたびに手動で全検証するのは、工数的にほぼ不可能です。
複雑な開発要素:Salesforce開発はコードだけではありません。Apexに加えて、Flow、プロセスビルダー、権限設定、レイアウトなど、多くの要素が組み合わさって動作します。そのため、ある一つの変更が、思わぬ形で別の機能に影響を与えることがあります。
ユーザー権限による挙動の違い:管理者では正常でも、実際の業務ユーザーではエラーになるというケースは非常に多く、これを網羅的にテストするのは容易ではありません。
外部システムとの連携:API連携やバッチ処理などが絡むと、単体のテストだけでは実際の動作を再現できず、本番で初めて問題が顕在化することがあります。
特に頻繁なアップデートは、「自分たちは何も変えていなくても、システムが壊れる可能性がある」という、Salesforce特有の“回帰テストの必要性”をリスクとして抱えることになります。これが、手動テストでは追いつけない大きな「構造的欠陥」となり、自動化の取り組みを促す、強い動機付けにもつながります。
③テスト不足の本質は「E2E視点」と「継続性」
これらを踏まえると、Salesforceのテスト不足の本質は大きく2つに集約できます。一つは、E2E(エンドツーエンド)の視点の欠如です。つまり、個々の機能だけではなく、「業務全体が成立するか」を検証できていない状態です。
もう一つは、テストの継続性の不足です。リリース前に一度テストするだけでは、頻繁な変更やSalesforceのアップデートに対応できません。本来は、変更のたびに繰り返し検証されるべきですが、多くの現場ではそこまで手が回っていません。
テスト不足の背景にある、5つの構造的な課題とは
Salesforceには、その利便性と引き換えに、手動テストや汎用ツールではテスト不足を誘発せざるを得ない構造的な要因がいくつか存在します。本章では、影響分析や環境の差分、メジャーバージョンアップの影響、ブラックボックス化しやすいUI構造など、手戻り開発を引き起こすSalesforceの構造的な「5つの課題」について解説します。
1. 「ローコード」による依存関係のブラックボックス化
Salesforceは、マウス操作の設定だけで高機能なシステムを構築できるのが最大の利点ですが、これがQAにおいては最大の難所となります。
見えない影響範囲:一つのカスタム項目を追加・変更しただけで、それに関連する「フロー」「入力規則」「レポート」「権限セット」「Apexコード」などが連鎖的に影響を受けます。
自動的な影響分析の欠如:標準機能では「この設定を変えたらどこが壊れるか」を完璧にリストアップする術が乏しく、開発者は「影響はないはずだ」という推測に基づいてテスト範囲を決めてしまいます。これが「テスト漏れ」の温床です。
2. 膨大な「組み合わせパターン」による複雑化
Salesforceは、ユーザーの「プロファイル」や「権限セット」によって、画面の見え方や動くロジックが動的に変わります。
テストケースの加速度的な増加:例えば、3つの権限パターンと4つの業務シナリオがあるだけで、12通りのテストが必要です。これを手動で行う場合、時間が足りず「主要な1パターンだけ確認して完了」とする現場が後を絶ちません。
環境差分の罠:開発環境(Sandbox)と本番環境(Production)の間でデータ量や設定が微妙に異なるため、「Sandboxでは動いたが、本番の複雑なデータ構造ではエラーになる」という事態が頻発します。
3. 「リリース頻度」と「手動テスト」のミスマッチ
ビジネス側は「アジャイルに、すぐに機能をリリースしてほしい」と要求します。しかし、テスト手法が「手動」のままであることが、ボトルネックを生んでいます。
回帰テストの断念:新機能をリリースする際、本来は「既存の機能が壊れていないか」を全点検(回帰テストの実行)すべきです。しかし、機能が増えれば増えるほど手動での全点検は不可能になり、「今回直した箇所だけ」の限定的なテストで妥協せざるを得なくなります。
深夜・休日作業による思考停止:Salesforceの現場では、深夜・休日のリリース作業が常態化しやすく、担当者の集中力が低下し、「早く終わらせたい」という心理から確認作業が疎かになります。
4. Salesforce特有の「UI構造」による問題
「手動がダメなら自動化すればいい」と考えるかもしれませんが、一般的な自動テストツール(Seleniumや汎用的なUI操作ツールなど)ではSalesforceの壁を容易には越えられません。
動的な要素(ID)の変動:Salesforceの画面要素は表示のたびに内部的なIDが変わることが多く、汎用ツールでは「ボタンが見つからない」というエラーが頻発します。
DOM構造の複雑性:SalesforceのHTML(DOM)は、何層ものタグが積み重なる非常に深い階層構造をしています。さらに、同じような名前の要素が画面内の別々の場所に存在するため、汎用ツールで特定の入力項目を示すためのXPathなどは極めて長く、複雑なものになります。
Shadow DOMの隠蔽性:Lightning Experienceは、コンポーネントの独立性のために「Shadow DOM」を採用しています。これにより、画面要素がカプセル化(隠蔽)されており、汎用ツールからは内部のボタンや入力項目が「存在しない」かのように見えてしまいます。
メンテナンスの問題:汎用ツールで無理やり自動化しても、Salesforce側のアップデートでテストスクリプトがすぐに壊れます。その修正に時間がかかるため、結局「手動でやったほうが早い」という先祖返りが起きてしまいます。
ここで、動的IDやDOM/Shadow DOMの課題、壊れないテストの必要性は、なぜProvarのようなSalesforce専用ツールが必要なのかを強く訴求するポイントです。
5. 開発者とビジネス側の「品質基準」のズレ
Salesforceはビジネス部門が主導して導入されることも多いため、開発・QA部門との間でITガバナンスが効きにくい側面があります。
「設定」を「開発」と認識しない危惧:「少し設定が変わっただけだから、大がかりなテストは不要だろう」という過信が、ときに重大な不具合を招きます。
ドキュメントの欠如:開発スピードを優先するあまり、仕様書やテストシナリオが整備されず、何が「正解(期待値)」なのかが曖昧なままテストが行われています。
まとめ:「テスト不足」を防ぐ、Salesforce専用設計ツールを採用
このように、Salesforceにおけるテスト不足とは、単なる作業量の問題ではなく、
●業務全体を検証できていない
●権限や連携を含めた現実の利用状況を再現できていない
●継続的にテストを実行できていない
という状態を指します。
一言で言えば、「Salesforceの進化と変更のスピードに対し、人間による『手動テスト』という手法が物理的な限界を迎えているから」です。
この構造的な問題を解決するには、人間の努力に頼るのではなく、Salesforceの内部構造(メタデータ)を理解し、画面変更に左右されない「専用設計の自動テストツール」を導入し、テストを「日常的なルーチン」に組み込むことが唯一の脱出口となります。
また、Salesforceの開発現場において、テスト自動化が「理想」とされながらも「現実として浸透していない」のには、明確な理由があります。そして、その停滞を打ち破る「Provar」がなぜ他のツールと一線を画すのか、その機能的優位性と具体的な導入ステップについてはまた別記事で解説します。
よくある質問(FAQ)
Q1. なぜSalesforceの開発では、手動テストだけで品質を担保することが難しいのですか?
A. Salesforceは、Apexコードだけでなく、Flow、権限設定、カスタム設定など、無数の「メタデータ」が複雑に依存し合っているためです。一箇所の変更が、目に見えない場所で予期せぬ挙動(デグレード)を引き起こすリスクが高く、人間がすべての影響範囲を網羅的に目視確認するには、構造的な限界があるからです。
Q2. リリース直前のバグ発見による「手戻り開発」のコストはどのくらい膨らみますか?
A. 一般的なソフトウェア工学の指標では、本番稼働後やリリース直前に見つかった不具合の修正コストは、実装直後に修正する場合と比較して数倍から10倍以上に跳ね上がると言われています。これには、原因調査だけでなく、関連するテストのやり直しや、他部署との再調整といった「見えない工数」が含まれるためです。
Q3. 年3回のSalesforceメジャーバージョンアップに、自動テストは有効ですか?
A. 非常に有効です。メジャーバージョンアップでは、自社の改修とは無関係に標準機能やUI構造が変化するため、広範囲な「回帰テスト」が必要になります。手動では不可能なこの全件確認を自動化することで、アップデート当日(Day 1)からシステムの安定稼働を保証できるようになります。
Q4. Selenium等の汎用ツールでの自動化が、Salesforceで失敗しやすいのはなぜですか?
A. SalesforceのUI(Lightning Experience)が、「Shadow DOM」や「動的ID」といった特殊な構造を採用しているためです。汎用ツールは画面表面のHTML情報を頼りに動作するため、Salesforce側の微細なアップデートでテストスクリプトが即座に壊れてしまい、メンテナンス工数が手動テストを上回ってしまうことが主な原因です。
Q5. Provarのような「メタデータ駆動型」のテストツールを採用するメリットは何ですか?
A. 最大のメリットは、画面の見た目ではなくSalesforceの内部定義(メタデータ)を直接参照してテストを実行するため、「テストが壊れにくい」点にあります。UIのレイアウト変更や複雑なDOM構造の影響を受けにくいため、スクリプトの保守工数を劇的に削減し、変化の激しいSalesforce環境でも継続的な自動テスト運用が可能になります。
期間限定!無料トライアルキャンペーン実施中
