IT人材をお探しの方は、まずはお電話ください。担当営業がすぐにご要望にマッチした人材をご提案いたします。
tel:03-6409-6766 お急ぎの方はお電話ください

ブログTOP > IT・技術関連 > Salesforce ApexのTestとは?基本の基本を解説します!

Salesforce ApexのTestとは?基本の基本を解説します!

IT・技術関連 更新日:2024.09.05
エンジニア採用
Salesforce ApexのTestとは?基本の基本を解説します!

そもそもApexとは? Apexとは、Salesforceが提供するJavaに似た、オブジェクト指向のプログラミング言語です。Apexには特徴として、Salesforceで利用するために使いやすいように考えられている、というところがあります。 例えば、sObjectレコードのリストを返す、インラインのSalesforceObjectQueryLanguageとSalesforce ObjectSearchLanguageのクエリが標準でサポートされています。 また、変数や式の構文、ブロックや条件ステートメントの構文など、広く周知されたJavaのイディオムに基づいており、SalesforceApexが新しい要素を導入するとなれば、理解しやすい構文とセマンティックを使用してLightningプラットフォームの効率的な使用を促すため、簡潔で記述しやすいコードを作成することなども、使いやすいポイントの1つです。

開発時にテストを行う意味

長期間に及ぶ開発を正常に行うために、テストは重要な部分を占めています。 それは、実際にプログラムを運用し始めると、想定していなかった操作や、運用をユーザーが行う可能性があるためです。 これらのことは、単純にプログラミング作業をしているだけでは思いつくはずもないようなことも多いため、テストを行うことで様々なシチュエーションで正常に動作するか検証することが重要となるのです。 テストの重要性は、もちろんSalesforceApexでも同じですが、Apexでは「ApexTestFramework」により、Apexコードでのテストが簡単にできるようにされています。 ApexTestFrameworkとは、Apexでの単体テストの記述や、実行、結果の確認などの取得を可能にするものです。

テストの種類

構築したプログラムが正常に作動するか確かめる役割を持つテストですが、これにはいくつかの種類があります。 今回はその中でも、「単体テスト」「結合テスト」「システムテスト」の3つを簡単にご紹介します。

単体テスト

単体テストとは、構築したプログラムの1つずつをテストし、正常に動作するかの検証を行うものです。 正常に動作するかのみではなく、機能や性能、また運用に最適化されているかなども確認します。

結合テスト

結合テストとは、単体テストで確認した複数のプログラムを組み合わせて、正常に動作するかを検証します。 この中には「状態遷移テスト」と呼ばれるものも含まれており、これは、状態遷移図や状態遷移表などを用いて行われるテストです。 同じテストデータを流した場合、通常であればシステムは同じ動作をしますが、状態によって全く違う動作をするものも存在します。こういったシステムをテストすることを「状態遷移テスト」と呼びます。

システムテスト

システムテストとは、「単体テスト」と「結合テスト」などの後に、すべてのプログラムとハードウェアも合わせて、システム全体が正常に動作するか確認することをいいます。 システムテストは様々な種類が存在し、修正や変更などをした後に変更箇所が正常に動作するか確認する「確認テスト」や、脆弱性の確認、ユーザビリティの確認などを行う「評価テスト」、処理能力などを確認する「負荷テスト」などがあります。 このテストは、基本設計の段階で決定した仕様を満たしたものができているかどうか確認するために行われます。このテストが完了すると、ユーザーにリリースされ、「運用テスト」のフェーズに移行していきます。

Apex単体テストの利点

上記のように、システムの開発などにあたってプログラムを構築する際には、テストを行うことが必須となりますが、Apexの単体テストを利用する際の利点とは何なのでしょうか。 まずは、クラスやトリガが望んだとおりの動作をするか確認できることが、利点として挙げられます。 また、一連の「回帰テスト」を用意することで、クラスやトリガが更新されるたびに再実行することができるため、システムやアプリケーションが更新されたときに既存の機能が正常に動作するかを確認できます。 本番組織に高品質のシステムやアプリケーションを配信することで、本番ユーザーの生産性の向上が見込めたり、パッケージ登録者に高品質のシステムやアプリケーションを配信することで、顧客の信頼が高まることなども利点として挙げられます。 そして、Apexを本番組織にリリースする際や、Apexをパッケージとして顧客に配布する場合のコードカバー率要件が満たされるということも重要な利点の1つになります。

コードカバー率要件とは

コードをリリースする前か、LightningPlatformAppExchange用にパッケージ化する前に、Apexコード全体の75%以上がテストで合格していなければなりません。 さらに、各トリガについても何らかのテストを行う必要があり、これらがリリースのための要件となっています。 注意しなければいけないのは、この要件を満たすことを目的として、テストを記述してはいけないということです。 正常、異常のテストケースや一括レコード処理など、一般的な使用事例をテストすることが求められています。

Test Methodの構文

Test Methodは引数を取らずに、以下の2つの構文を使用します。
@isTest static void testName() {
    // code_block
}
static testMethod void testName() {
    // code_block
}
[testMethod]キーワードの代わりに、[isTest]アノテーションを使用することで、アノテーションでパラメータを指定することが可能となり、柔軟性が向上します。 TestFrameworkでは常にTestMethodにアクセスできるようになっているため、TestMethodの表示は考慮されず、TestMethodを、公開か非公開どちらで宣言しても違いがないため、構文ではアクセス修飾子が省略されています。

コードカバー率を高める

テストを記述するときに意識するべきことは、できるだけ高いコードカバー率を達成できるようにすることです。 これは、LightningPlatformでリリースするときやパッケージに要求される最低値である75%を目標とせず、より高い数値を目指すべき、ということです。 場合によっては、すべてのクラスメソッドのTestMethodを記述したにもかかわらず、コードカバー率が100%にならないこともあります。原因として考えられることの1つは、条件付きコード実行です。 条件付きコード実行のすべてのデータ値がカバーされていなければ、コードカバー率が100%にならないこともあります。 例えば、クラスメソッドに[if]ステートメントがあり、評価条件を満たすかどうかで異なる分岐が実行されるといった場合に、一部のデータ値が無視される傾向があります。TestMethodでは、こうした異なる値を考慮しなければなりません。

ロールバックとテストデータについて

TestMethodで作成されたSalesforceレコードは、データベースにコミットされず、テストの実行が終了すると、レコードはロールバックされます。 このロールバックにより、テスト実行後にテストデータをクリーンアップする必要がないため、効率化につながります。 Apexテストには、User、Profileオブジェクトなどの設定やメタデータオブジェクトへのアクセス権を除き、組織に既存のデータへのアクセス権がありません。 そのため、テスト用にテストデータを設定します。 テストデータを作成することで、テストがより確実なものとなり、組織のデータの変更などによって起こるエラーを防止できるようになります。 テストデータは、TestMethodで直接作成するか、ユーティリティテストクラスを使用することで作成できます。

しっかりとしたテストで、よりよいシステムやアプリケーションの構築を!

今回は、Salesforce Apexについて、そしてテストについて紹介しました。 システムやアプリケーションを構築する際には、必ず必要となるものですので、しっかりと学習して、正しい方法でテストを行うようにしましょう。]]>

この記事の監修者・著者

株式会社オープンアップITエンジニア
株式会社オープンアップITエンジニアAWSパートナー/Salesforce認定コンサルティングパートナー 認定企業
ITエンジニア派遣サービス事業を行っています。AWSやSalesforceなど専門領域に特化したITエンジニアが4,715名在籍し、常時100名以上のITエンジニアの即日派遣が可能です。

・2021年:AWS Japan Certification Award 2020 ライジングスター of the Year 受賞
・2022年3月:人材サービス型 AWSパートナー認定
・AWS認定資格保有者数1,154名(2024年6月現在)
・Salesforce認定コンサルティングパートナー
・Salesforce認定資格者276名在籍(2024年5月現在)
・LPIC+CCNA 認定資格者:472 名(2024年6月時点)
ITエンジニアの派遣を利用したい企業様へ
ITエンジニアを派遣で採用したい企業様へ
  • 求人・転職サイトや自社採用サイトを使っているが、自社に合ったITエンジニアが応募してこない…
  • すぐに採用したいが、応募がぜんぜん集まらない
こんな悩みをお持ちの採用・人事担当者の方は、
オープンアップITエンジニアをご検討ください!

当社のITエンジニア派遣サービスは

  • 派遣スピードが速い!(最短即日)
  • 4,500名のエンジニアから貴社にマッチした人材を派遣
  • 正社員雇用も可能

こんな特長があり、貴社の事業やプロジェクトに合った最適なITエンジニアを派遣可能です。
まずは下記ボタンから無料でご相談ください。

無料相談のお申し込みはこちら
IT・技術関連の記事一覧へ

カテゴリから記事を探す

すべての記事一覧へ