この記事の目次
そもそもApexとは?

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

テストの種類
構築したプログラムが正常に作動するか確かめる役割を持つテストですが、これにはいくつかの種類があります。 今回はその中でも、「単体テスト」「結合テスト」「システムテスト」の3つを簡単にご紹介します。単体テスト
単体テストとは、構築したプログラムの1つずつをテストし、正常に動作するかの検証を行うものです。 正常に動作するかのみではなく、機能や性能、また運用に最適化されているかなども確認します。結合テスト
結合テストとは、単体テストで確認した複数のプログラムを組み合わせて、正常に動作するかを検証します。 この中には「状態遷移テスト」と呼ばれるものも含まれており、これは、状態遷移図や状態遷移表などを用いて行われるテストです。 同じテストデータを流した場合、通常であればシステムは同じ動作をしますが、状態によって全く違う動作をするものも存在します。こういったシステムをテストすることを「状態遷移テスト」と呼びます。システムテスト
システムテストとは、「単体テスト」と「結合テスト」などの後に、すべてのプログラムとハードウェアも合わせて、システム全体が正常に動作するか確認することをいいます。 システムテストは様々な種類が存在し、修正や変更などをした後に変更箇所が正常に動作するか確認する「確認テスト」や、脆弱性の確認、ユーザビリティの確認などを行う「評価テスト」、処理能力などを確認する「負荷テスト」などがあります。 このテストは、基本設計の段階で決定した仕様を満たしたものができているかどうか確認するために行われます。このテストが完了すると、ユーザーにリリースされ、「運用テスト」のフェーズに移行していきます。Apex単体テストの利点

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

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

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

この記事の監修者・著者

-
未経験からITエンジニアへのキャリアチェンジを支援するサイト「キャリアチェンジアカデミー」を運営。これまで4500人以上のITエンジニアを未経験から育成・排出してきました。
・AWS、salesforce、LPICの合計認定資格取得件数:2100以上(2023年6月時点)
・AWS Japan Certification Award 2020 ライジングスター of the Year 受賞