見出し画像

[Salesforce]単機能テストの網羅的テストパターンの作り方

1. はじめに

Salesforce開発において、複数の条件分岐が絡む機能のテストはエンジニアが直面する課題です。条件が増えれば増えるほど、すべての組み合わせを網羅するためのテストケースが膨大になり、現実的にすべてをカバーすることが難しくなります。そこで、効率的に網羅性を保ちながら、無駄なケースを削減する手法が求められます。本記事では、具体的なSalesforceのシナリオに基づいて、テストマトリクスの作成方法と、ペアワイズテストを活用した効率的なテストパターンの削減方法を解説します。

2. テストマトリクスの作成

まず、テストの設計においては、すべての条件分岐を網羅的に考慮するために「テストマトリクス」を作成します。これにより、システムの動作が各条件下で正しく動作するかを確認するための基盤を構築できます。

2.1 条件設定の例

ここでは、Salesforceの商談(Opportunity)オブジェクトに対するテストを例にとります。条件分岐として、次の4つの要素を想定し因子と水準を明確にします

例)
・因子A
 ・水準A
 ・水準B

  • 条件A (ステータス)

    • 新規(New)  

    • 進行中(In Progress)  

    • 完了(Closed)

  • 条件B (ユーザー権限)

    • 管理者(Administrator)  

    • 営業担当(Sales User)  

    • 閲覧のみ(Read-Only User)

  • 条件C (レコードタイプ)

    • タイプA(Type A)  

    • タイプB(Type B)

  • 条件D (優先度)

    • 高(High)  

    • 中(Medium)  

    • 低(Low)

これらの条件のすべての組み合わせを網羅的に考えると、以下のように 54通り のテストケースが存在します:

  • 3(ステータス)× 3(ユーザー権限)× 2(レコードタイプ)× 3(優先度) = 54通り

2.2 Salesforceテストマトリクスの例

以下は、全54通りの組み合わせをリストアップしたテストマトリクスの一部です。

全網羅マトリクス表

このように、4つの条件に対するすべての組み合わせを網羅すると54通りのテストケースが必要になりますが、このままでは非効率です。そこで、次に紹介するペアワイズテストを用いて、不要なテストケースを削減します。

3. 不要なテストケースを削除する方法

全組み合わせをテストすることは理想的ですが、現実的には無駄なテストケースが含まれることが多いため、適切に削減することが大切です。

3.1 無効な組み合わせの削除

まず、テスト対象として無意味な組み合わせを削除します。たとえば、「完了」ステータスの商談に「高」優先度というのは無意味な場合があります。これにより、テストケースを自動的に減らすことができます。

: 完了済の商談では、優先度やユーザー権限に依存するロジックは通常関係ないため、その組み合わせのテストを省略。

3.2 ペアワイズテスト(まだ実践未経験…)

ペアワイズテストは、すべての条件の組み合わせを網羅するのではなく、2つの条件のペアごとにすべての組み合わせをテストする手法です。すべての条件の全組み合わせをテストしなくても、2つの条件が相互に影響し合うパターンを網羅すれば、ほとんどのバグを発見できるという考えに基づいています。

この方法を使うと、条件の数が多くてもテストケースを大幅に削減でき、かつ重要な相互作用をテストできます。

ペアワイズテストの具体例

Salesforceの商談に関する4つの条件を考えた場合、54通りすべてをテストする代わりに、次のようなペアワイズテストを行うことができます。

2因子間を網羅したマトリクス

このように、ペアワイズテストでは、すべての条件のペアをカバーしながら、54通りのテストケースを 6通り にまで削減できています。全ての組み合わせを網羅していませんが、各条件のペアを網羅しているため、主要なバグを検出することができます。自分で考えて作るのは厳しいと思いますので作り方についてはツールを使ったりするようです。

4. まとめ

Salesforce開発において、単機能テストの網羅的なテストパターンを効率的に設計し、不要なケースを削除することは、テストリソースを節約しつつ、高品質なシステムを構築する鍵です。ペアワイズテストの手法を活用することで、すべての条件のペアを網羅しつつ、テストケースを大幅に削減できます。これにより、テストカバレッジを確保しながら、効率的なテストを実現しましょう。

この記事が気に入ったらサポートをしてみませんか?