Business Central Performance Toolkit を使用する
Business Central Performance Toolkit を使用すると、ソリューションのさまざまなビルド間のパフォーマンスを追跡および比較して、コードの変更が顧客テナントのパフォーマンスに悪影響を及ぼすのを防ぐことができます。
Business Central は、多くの場合にスケーラブルなプラットフォームとして機能し、ISV と VAR によって特定の顧客向けの垂直ソリューションおよびカスタマイズを提供します。誰もが、パフォーマンス レベルを高く保つことに関心を持っています。 これらのソリューションおよびカスタマイズにおいて主要な更新とマイナーな更新を行うことで、顧客テナントの高いパフォーマンスを維持し、最新の状態を保ちます。そのためには、コードの変更がパフォーマンスに悪影響を及ぼさないことを確認する必要があります。
Business Central Performance Toolkit を使用すると、さまざまなビルド間のパフォーマンスを追跡および比較できます。 新しい顧客 (特に大規模な顧客) を Business Central にオンボードするときは、ビジネス ニーズを満たすために Business Central が現在の負荷や推定される負荷に対応できると、コンサルタントと顧客の両方が確信している必要があります。 Business Central Performance Toolkit を使用すると、コンサルタントはそのような負荷をシミュレートし、Business Central が特定の顧客の負荷に対応できると確認することができます。
Business Central Performance Toolkit では、コンサルタントは次の 2 つの拡張機能としてのツールを利用できます。
Business Central Performance Toolkit
Business Central Performance Toolkit Samples
Performance Toolkit 拡張機能
この拡張機能は、垂直ソリューションを開発して Business Central を顧客向けにカスタマイズする独立系ソリューション ベンダー (ISV) および付加価値再販業者 (VAR) 用の拡張機能です。 このタイプのコラボレーションでは、多くの場合、両方の側のリリース バージョン間で項目が変更されます。したがって、ISV と VAR は、ユーザー数の増加に伴って新しいバージョンのソリューションがパフォーマンスの低下につながるのを防ぐ必要があります。 Performance Toolkit を使用すると、開発者は実際的なシナリオでワークロードをシミュレートし、各ソリューションのビルド間のパフォーマンスを比較することができます。
つまり、Performance Toolkit では、「Business Central 用の自分のソリューションは、他の操作の実行中に、この操作を行っている X 人のユーザーをサポートできるか?」といった疑問を解決できます。 ただし、「Business Central では 1 時間あたりどのくらいの数の注文を処理できるか?」といった疑問は解決できません。
このツールキットはサンドボックス環境と Docker 画像でのみ使用できることに注意してください。 実稼働テナントで使用することはできません。
Performance Toolkit は、AppSource で無料で利用できる Performance Toolkit と、GitHub 上の ALAppExtensions リポジトリからダウンロードできる BCPT-SampleTests の 2 つの拡張機能です。
ツールキットをフルに利用するには、両方の拡張機能をダウンロードしてインストールすることをお勧めします。
Performance Toolkit 拡張機能をインストールするには、次の手順に従います。
サンドボックス環境で、拡張機能管理ページを開きます。
[拡張機能管理] ページで、管理、拡張機能マーケットプレースの順に選択します。
表示されるページで、Performance Toolkit を検索し、今すぐ入手するを選択します。
表示されるページで情報を入力し、続行を選択します。
次に表示されるページで、インストールを選択します。
表示される確認ページで、OK を選択します。
これで、Performance Toolkit がインストールされました。
Performance Toolkit Samples 拡張機能をインストールするには、次の手順に従います。
VSCode で新しい AL プロジェクトを作成します。
app.json で、次のように依存関係を設定します。
ID: 75f1590f-55c5-4501-ae63-bada5534e852
Publisher: Microsoft
name: Performance Toolkit
version: 17.1.0.0
BCPT-SampleTests GitHub の場所 から、src フォルダーをプロジェクトにダウンロード (またはプル) します。
オブジェクトの番号をオブジェクトの範囲に再割り当てします ([50.000..99.9999] など)。
TestCodeunitsWithParams.Enum.al ファイルで、オブジェクトの番号に一致するように列挙値の番号を再割り当てしてください。
拡張機能をサンドボックスに展開します。
両方の拡張機能を使用する場合、これらの機能によって次の項目が提供されます。
並列で実行する一連のテストまたはシナリオを定義するためのフレームワーク。 また、フレームワークによって結果がログに記録され、スイートの定義をインポートおよびエクスポートできます。
基本シナリオをカバーする定義済みのテスト スイート。顧客環境に適した他のスイートの手本としても使用できます。
クライアント コンピューターにインストールする必要があるコマンド ライン ツール。 複数のユーザーがページにサインインして使用している場合をシミュレートするには、Business Central の外部からこれらのシナリオを開始する必要があります。 コマンド ライン ツールによって、スイートに指定された数の同時クライアント セッションが実行されます。
通常、スイートを複数のセッションに対して同時に実行する必要があります。 スイートを構成した後、"開始" アクションを使用してその操作を実行できます。 ただし、たとえば開発フェーズの初期にライトウェイト テストを行う場合、単一実行モードで開始アクションを選択して、スイートをできるだけ迅速に 1 回だけ実行できます。 単一実行モードを使用すると、実行間の SQL ステートメントの数を監視し、ベースラインを定義することができます。また、回帰の早期発見に役立つ簡単なフィードバックを得ることができます。
テスト スイートに対して最大 125 のセッションを同時に実行できます。 合計セッション数フィールドに、スイートの実行時に作成されるセッション数が表示されます。
スイート行で、フォアグラウンドで実行オプションを使用すると、テストを並列ではなく順番に実行できます。 また、バックグラウンド タスクと組み合わせて使用することもできますが、その場合は各セッションが個別に実行されます。 フォアグラウンドではセッションを一度に 1 つだけ実行できます。
スイートの構成
スイートを構成する設定は、シミュレートする環境によって異なります。 次の手順では、複数のセッションをテストする例を示しますが、これらの手順は単一実行にも適用されます。
スイートを構成するには、次の手順に従います。
BCPT Suite を検索し、関連するリンクを選択します。
新規を選択して、[BCPT Suite] ページを開きます。
コード、説明、およびタグの各フィールドに、ID、テストに関する情報、およびログ エントリ ページでスイートの結果を見つけるのに使用できるタグを指定します。
実行のタイミングを定義します。 1 作業日に対応フィールドと期間 (分) フィールドが連携して、作業開始日フィールドが更新されます。この情報は、支払などの期限付きのプロセスをテストするのに使用します。 期間は最大 240 分に設定できます。
ヘッダーの既定の最小ユーザー遅延フィールドと既定の最大ユーザー遅延フィールドを使用すると、アクション間の一時停止をシミュレートできます。 遅延を指定する必要があります。 各反復 (販売注文の作成時など) の間に、次の販売注文でテストを開始する前に待ち時間 (反復間の待ち時間) を定義できます。 遅延は固定またはランダムに設定できます。 遅延は実行時間の結果に含まれません。
比較する基本バージョンを指定します。 基本バージョン フィールドの値を変更するには、編集モードをオンにする必要がある場合があります。
スイートの行を構成します。 これらの行には、ヘッダーの設定の一部が含まれます。 行の値を更新すると、ヘッダーも更新されます。
BCPT Suite 行クイック タブで、実行する codeunit を選択します。
パラメーター フィールドに、ドキュメント上に行を作成するなどの反復を定義するパラメーターを入力します。 たとえば、Lines=10 というパラメーターを使用すると、ドキュメントに 10 行が作成されます。
セッション数フィールドに、シミュレートする同時ユーザーの数を入力します。
オプション: 単一実行モードで実行する場合、または最小遅延や最大遅延などの設定を適用せずにセッションの 1 つを実行する場合は、フォアグラウンドで実行オプションを選択します。
PowerShell からの実行の開始
バイナリやスクリプトをインストールし、スイートを構成したら、次のコマンドを使用して、資格情報オブジェクトを作成し、PowerShell からテストを実行することができます。
資格情報オブジェクトを作成するには、次のコマンドを実行します。
$Credential = New-Object PSCredential -ArgumentList <user email>,(ConvertTo-SecureString -String <password> -AsPlainText -Force)
Business Central オンライン サンドボックスでテストを開始するには、次のコマンドを実行します。
RunBCPTTests.ps1 -Environment PROD -AuthorizationType AAD -Credential $Credential -SandboxName <sandbox name> -TestRunnerPage 149002 -SuiteCode "TRADE-50U"
PowerShell からテストを開始すると、新しいセッション間に 2 秒の遅延が生じます。 実行が完了すると、BCPT Suite 行クイック タブ上の行に結果が表示されます。
スイートの実行が終了したら、ログ エントリを選択して、実行内容を確認できます。 エラーの表示アクションと同時に実行されるセッションを表示アクションを使用すると、結果にフィルターが適用されます。 たとえば、フィルター処理によってエラーの発生時にユーザーが行っていた動作を表示すると、エラーのトラブルシューティングに役立ちます。 既定では、ページがフィルター処理されて最新バージョンが表示されますが、実行を比較する場合はフィルターを変更または削除できます。 Excel で開くアクションを使用すると、パフォーマンス結果を視覚化するのに役立つダッシュボードを作成できます。
ログ エントリは作成順に一覧表示され、さまざまなシナリオが混在しています。 各実行はバージョン番号フィールドの値によって特定されます。
操作列に、個々の測定が表示されます。この測定では、ユーザーの待ち時間なしに codeunit を実行する場合にシナリオという用語が使用されます。 SQL ステートメント数列には、シナリオおよびシステム活動 (メタデータの取得など) によって発行された SQL ステートメントが含まれます。 ログ エントリ自体はカウントから除外されます。 1 つのセッションにドリルダウンするには、セッション番号フィールドでフィルター処理するか、Excel で開くを選択して、より詳細な分析用のピボット テーブルおよびピボット グラフを作成します。
例 : 単一実行モードでの SQL の呼び出しとタイミングの評価
この例では、コードの変更と変更の間にパフォーマンス回帰テスト (PRT) で単一実行モードを使用して、SQL の呼び出しとタイミングを評価する方法を示します。
新しい拡張機能を開発する際は、多くの場合、限られたコードから開始します。そのため、完全なエンドツーエンドのシナリオに近づくまで待ってから、シミュレートされた同時ユーザーによる大規模なベンチマーク テストを行いたい場合があります。
単一実行モードで開始アクションを使用すると、新しい拡張機能などに対して制限付きのテストを実行できます。 単一実行モードの場合も、ベースラインや、テストをバックグラウンドで実行する機能などが提供され、フィードバックを瞬時に得ることができます。
実行によって生成されるデータはデータベースに保存されます。 データベースが保持されている場合、前の実行をベースラインとして設定できます。
次の手順では、PRT を単一実行モードで実行する方法の例を示します。
BCPT Suite ページで、新規を選択します。
コード フィールドに、テスト スイートの名前を入力します。 この例では、PreTest を使用します。
タグ フィールドに、後で結果を分析するときにスイートを容易に識別できるような内容を入力します。
期間と遅延のフィールドは、単一実行モードでは使用されないので、既定値のままにします。
BCPT Suit 行クイック タブで、コンポーネントのテスト スイートを選択します。
この例では、販売注文の品目の合計重量を計算します。そのために、4 行を作成するパラメーターを指定して販売注文ページ テストを使用します。 このパラメーターは、Lines=4 のようになります。
フォアグラウンドで実行オプションをオフにします。 これにより、テスト スレッドがバックグラウンド スレッドで実行されます。
単一実行モードで開始を選択します。
次のウィンドウが開きます。
更新ボタンをクリックして、ページを更新します。
テストが完了したら、ログ エントリを選択します。
実行の完了後にベースラインを設定するには、基本バージョン フィールドに「1」と入力します。