Mit der Performance Toolkit-Erweiterung arbeiten

Abgeschlossen

Die Performance Toolkit-Erweiterung (BCPT) wurde für unabhängige Lösungsanbieter (ISVs) und Wiederverkäufer (VARs) entwickelt, die vertikale Lösungen entwickeln und Business Central für ihre Kunden anpassen. Es gibt häufig Änderungen zwischen den veröffentlichten Versionen auf beiden Seiten. Aus diesem Grund ist es wichtig, dass ISVs und VARs durch Testen der Leistung der Lösungen sicherstellen können, dass neue Versionen bei steigender Benutzerzahl keine Leistungseinbußen mit sich bringen. Entwickler können zur Unterstützung mit dem Performance Toolkit Workloads in realistischen Szenarien simulieren, um die Leistung zwischen Builds ihrer Lösungen zu vergleichen.

Die Performance Toolkit-Erweiterung hilft bei der Beantwortung von Fragen wie: „Unterstützt meine Lösung für Business Central X Benutzer, die dies tun, während andere Vorgänge gleichzeitig ausgeführt werden?“

Die Erweiterung beantwortet keine Fragen wie z. B., „Wie viele Bestellungen kann Business Central pro Stunde verarbeiten?“

Das Performance Toolkit umfasst viele Begriffe und deren Definitionen, die es Ihnen möglicherweise leichter machen, zu verstehen, wie alles zusammenpasst.

  • Testsuite – Eine Suite ist eine Konfiguration dazu, welche Testcodeeinheiten und gegebenenfalls mit welchen Parametern ausgeführt werden sollen. Zudem, wie viele gleichzeitige Sitzungen Sie für jeden Test simulieren möchten und wie lange das Szenario dauert.

  • Testsuite-Tag – Sie können das Tag für eine Testsuite anpassen, bevor Sie es ausführen. So können Sie Testergebnisse zwischen Tags für verschiedene Konfigurationen der Umgebung oder Suite vergleichen. Sie möchten zum Beispiel möglicherweise die Leistung Ihrer Szenarios mit/ohne eine bestimmte Erweiterung vergleichen oder die Leistung Ihrer Szenarios über zwei Versionen einer Erweiterung hinweg vergleichen oder die Leistung Ihrer Szenarios mit unterschiedlichen Werten von Test-Codeunit-Parametern zu vergleichen (z. B. um zu sehen, wie sich die Leistung mit der Anzahl der Zeilen ändert: 1, 10, 100, 1000).

  • Test-Codeunit – Test-Codeunits sind die Container von Testszenarien.

  • Test-Codeunit-Parameter – Test-Codeunits können Parameter verwenden. Dies ist hilfreich, wenn Sie bestimmte Verhaltensweisen Ihrer Tests anpassen möchten. Beispielsweise möchten Sie möglicherweise die Anzahl der Verkaufszeilen anpassen, die Sie einem Verkaufsauftrag hinzufügen.

  • Testszenario – Entwickler können in einer Test-Codeunit Testszenarien mit den Funktionen StartScenario/EndScenario festlegen. Der in diesen Szenarien verwendete Text wird zusammen mit dem Kontext zur Ausführung der Test-Codeunit in der Telemetrie und im Testprotokoll protokolliert.

  • Testsuite-Ausführung – Bei jeder Ausführung einer Testsuite werden die Ergebnisse mit einer Versionsnummer protokolliert. Sie können diese Versionsnummer verwenden, um die Ergebnisse zwischen Tags für verschiedene Konfigurationen der Umgebung oder Suite vergleichen. Um die Leistung Ihrer Szenarios mit/ohne eine bestimmte Erweiterung zu vergleichen oder die Leistung Ihrer Szenarios über zwei Versionen einer Erweiterung hinweg zu vergleichen oder die Leistung Ihrer Szenarios mit unterschiedlichen Werten von Test-Codeunit-Parametern zu vergleichen (z. B. um zu sehen, wie sich die Leistung mit der Anzahl der Zeilen ändert: 1, 10, 100, 1000).

  • Testsuite-Baseline (Ausführung) – Eine Testsuite-Baseline ist einfach eine Szenarioausführung, die Sie als diejenige auswählen, mit der Sie andere Ausführungen vergleichen möchten.

Das Performance Toolkit besteht aus drei getrennten Erweiterungen, die zusammenarbeiten. In der folgenden Tabelle sind die Erweiterungen und deren Bezugsquellen beschrieben.

  • Performance Toolkit – Dies ist der empfohlene Ausgangspunkt, da diese Erweiterung den Einstieg in Leistungstests erleichtert. Die Erweiterung ist kostenlos und kann über den Marketplace für Erweiterungen für Visual Studio Code installiert werden. Mit dieser Erweiterung können Sie ein neues BCPT-Projekt einrichten, das auf Ihre Umgebung abzielt und BCPT-SampleTests und die PowerShell-Skripte zur Simulation von Szenarien umfasst. Es ermöglicht Ihnen auch die Ausführung Ihrer Szenarien von Visual Studio Code.

    Sie können das Toolkit nur in Sandbox-Umgebungen und Docker-Images verwenden. Es lässt sich nicht in einem Produktionsmandanten verwenden. Derzeit wird nur Windows unterstützt.

  • Kostenlos und verfügbar auf AppSource

    • PowerShell-Skripte

    • Ein Befehlszeilentool zur Simulation der Anmeldung mehrerer Benutzer und für die Interaktion mit Business Central.

  • BCPT-SampleTests – Kostenlos und verfügbar auf dem Repository auf GitHub ALAppExtensions. Diese Tests sind als Inspiration für die Erstellung eigener Tests gedacht. Sie sind nicht für tatsächliches Testen geeignet.

Die Erweiterungen bieten zusammengefasst Folgendes:

  • Ein Rahmen zum Festlegen einer Reihe von Tests oder Szenarien, die parallel ausgeführt werden sollen. Der Rahmen protokolliert auch Ergebnisse und lässt Sie Suite-Definitionen importieren und exportieren.

  • Vordefinierte Beispieltests, die grundlegende Szenarien abdecken. Diese dienen auch als Inspiration für andere Tests dienen können, die zu Ihren Kundenumgebungen passen.

  • Ein Befehlszeilentool, das auf einem Clientcomputer installiert werden muss. Sie müssen diese Szenarien außerhalb von Business Central starten, um zu simulieren, dass sich mehrere Benutzer anmelden und Seiten verwenden. Das Befehlszeilentool führt die Anzahl gleichzeitiger Clientsitzungen aus, die in der Suite angegeben ist.

  • Eine Visual Studio Code-Erweiterung, die Ihnen beim Einrichten Ihres BCPT-Projekts hilft und Ihnen die Ausführung Ihrer Suiten von Visual Studio Code ermöglicht.

Sie müssen dem Berechtigungssatz BC PERF. TOOLKIT in Business Central zugewiesen sein, um das Performance Toolkit verwenden zu können.

Für den Beginn der Arbeit mit dem Performance Toolkit gibt es zwei Möglichkeiten:

  • Das Installieren der Erweiterung Performance Toolkit über den Marktplatz für Erweiterungen in Visual Studio Code ist die empfohlene Methode. Diese Erweiterung wurde speziell für die Vereinfachung des Einrichtens des Toolkits und des Testens der Leistung entwickelt.

  • Wenn Sie das Toolkit selbst einrichten möchten, installieren Sie das Toolkit von AppSource über die Seite Marketplace für Erweiterungen in Business Central, rufen Sie die Testbeispiele von GitHub ab, und laden Sie die DVD herunter, um die PowerShell-Skripte zu erhalten. Diese Methode kann zum Beispiel hilfreich sein, wenn Sie die Erweiterung in Visual Studio Code nicht installieren können oder Ihre Umgebung nicht unterstützt wird. Unter Mit PowerShell-Skripten ausführen erfahren Sie mehr über das Abrufen der Skripte.

Die folgenden Schritte geben einen Überblick über die ersten Schritte:

  1. Installieren Sie die Performance Toolkit-Erweiterung in Visual Studio Code.

  2. Bereiten Sie in Visual Studio Code Ihr BCPT-Projekt vor, und richten Sie in Ihrer Umgebung die Performance Toolkit-Erweiterung ein.

  3. Schreiben Sie für die zu simulierenden Szenarien Tests.

  4. Konfigurieren Sie in Business Central eine BCPT-Suite.

Gehen Sie wie folgt vor. um die Performance Toolkit-Erweiterung in Visual Studio Code zu installieren:

  1. Öffnen Sie im Visual Studio Code den Marktplatz für Erweiterungen, suchen Sie nach Performance Toolkit, und installieren Sie dann die Erweiterung.

  2. Erstellen Sie ein Projekt durch Ausführen des BCPT-Befehls „Neues Business Central Performance Toolkit-Projekt einrichten“.

    a. Wenn Erweiterungen installiert sind, die nicht von Microsoft stammen, nummeriert das Toolkit die Tests neu, um Konflikte zu vermeiden.

  3. Wählen Sie aus, ob Sie in einer Docker‑ oder Online-Umgebung (SaaS) testen möchten. Verwenden Sie Docker für Business Central (lokal).

  4. Melden Sie sich bei Ihrem Business Central an, und wählen Sie Ihre Umgebung aus.

  5. Geben Sie das Verzeichnis an, in dem das BCPT-Projekt zu erstellen ist.

    Wenn Sie „OK“ auswählen, überprüft die Erweiterung, ob die folgenden Performance Toolkit-Komponenten in Ihrem Business Central installiert sind. Komponenten werden von der Erweiterung installiert, falls sie noch nicht installiert sind.

    • Die Performance Toolkit.

    • Die Beispieltestfälle.

    • Die PowerShell-Skripte.

  6. Wenn die Installation abgeschlossen ist, wählen Sie „Neues Fenster öffnen“ aus, um Ihr Projekt zu öffnen.

Die Testszenarien, die die Erweiterung bereitstellt, sollen eine Inspiration für die Erstellung eigener Tests sein. Sie müssen Ihre eigenen Szenarien schreiben, um Ihre Umgebung zu testen. Ein Testszenario ist eine Codeunit eines Untertyps Normal oder Test.

Wenn der Untertyp Normal ist, sollte das Testszenario im Trigger OnRun festgelegt werden, da das Performance Toolkit Testszenarien mit der Codeunit ausführt. Diese Codeunits sind hilfreich, um ein Szenario ohne zu schreiben, ohne Seiten einzubinden, wie im folgenden Beispiel zu sehen:

codeunit 50000 "Create Sales Order"
{
    var
        BCPTTestContext: Codeunit "BCPT Test Context";
    trigger OnRun();
    var
        Customer: Record Customer;
        SalesHeader: Record "Sales Header";
    begin
        Customer.FindFirst();
        SalesHeader.Init();
        SalesHeader."Document Type" := SalesHeader."Document Type"::Order;
        SalesHeader.Insert(true);
        BCPTTestContext.EndScenario('Add Order');
        BCPTTestContext.UserWait();
        BCPTTestContext.StartScenario('Enter Account No.');
        SalesHeader.Validate("Sell-to Customer No.", Customer."No.");
        SalesHeader.Modify(true);
        BCPTTestContext.EndScenario('Enter Account No.');
        BCPTTestContext.UserWait();
end;
}

Legen Sie eine Codeunit des Untertyps Test fest, und verwenden Sie Testseiten, um mit Seiten zu interagieren und die Tests realistischer zu gestalten. Das folgende Codebeispiel zeigt den Hauptunterschied zwischen normalen und Test-Codeunits.

codeunit 50000 "Create Sales Order"
{
    Subtype = Test;
    var
        BCPTTestContext: Codeunit "BCPT Test Context";
    trigger OnRun();
    var
        Customer: Record Customer;
        SalesOrder: TestPage "Sales Order";
    begin
        Customer.FindFirst();
        SalesOrder.OpenNew();
        SalesOrder."No.".SetValue('');
        BCPTTestContext.EndScenario('Add Order');
        BCPTTestContext.UserWait();
        BCPTTestContext.StartScenario('Enter Account No.');
        SalesOrder."Sell-to Customer No.".SetValue(Customer."No.");
        BCPTTestContext.EndScenario('Enter Account No.');
        BCPTTestContext.UserWait();
end;
}

Wir empfehlen, dass Sie Szenarios nur mit Testseiten für Szenarios schreiben, in denen das Clientverhalten vorhersehbar ist. Der Test schlägt zum Beispiel mit einer Ausnahme fehl, wenn bei der Ausführung des Tests ein unerwartetes Dialogfeld erscheint.

Tests können die Funktionen „StartScenario“ und „EndScenario“ in der Codeunit BCPT Test Context verwenden, um zu protokollieren, wann das von Ihnen gemessene Szenario gestartet und gestoppt wurde. Wie im vorherigen Beispiel zu sehen, können Szenarien auch verschachtelt sein. Hier haben wir ein Top-Level-Szenario für Bestellung hinzufügen, das Unterszenarien umfasst, wie zum Beispiel Kontonr. eingeben. Dies ermöglicht die Durchführung von Gesamtmessungen und detaillierteren Messungen.

Rufen Sie die Funktion UserWait() auf, während Sie zwischen Feldern wechseln, um Verzögerungen zwischen Benutzeraktionen zu simulieren und Ihre Tests realistischer zu gestalten. Bei der Verwendung von Business Central wird ein implizites Commit() für jede Interaktion aufgerufen. Tests sollten das implizite Commit() simulieren, indem ein explizites Commit() aufgerufen wird.

Die Funktion UserWait ruft den Commit auf. Sie müssen ihn also nicht selbst durchführen.

Sie können zudem Parameter angeben, die Sie für Ihre Tests bereitstellen können. Dies ist hilfreich, wenn Sie bestimmte Verhaltensweisen Ihres Tests anpassen möchten. Beispielsweise möchten Sie möglicherweise die Anzahl der Verkaufszeilen anpassen, die Sie einem Verkaufsauftrag hinzufügen. Implementieren Sie die Schnittstelle BCPT Test Param. Provider, um Parameter zu aktivieren.

Im folgenden Beispiel ist die Implementierung der Schnittstelle zu sehen.

codeunit 50000 "Create PO with N Lines" implements "BCPT Test Param. Provider"
{
    var
        BCPTTestContext: Codeunit "BCPT Test Context";
        NoOfLinesParamLbl: Label 'Lines';
        ParamValidationErr: Label 'Parameter is not defined in the correct format. The expected format is "%1"', Comment = '%1 = Format';
        NoOfLinesToCreate: Integer;
    trigger OnRun();
    begin
        ...
    end;
    procedure GetDefaultParameters(): Text[1000]
    begin
        exit(copystr(NoOfLinesParamLbl + '=' + Format(10), 1, 1000));
    end;
    procedure ValidateParameters(Parameters: Text[1000])
    begin
        if StrPos(Parameters, NoOfLinesParamLbl) > 0 then begin
            Parameters := DelStr(Parameters, 1, StrLen(NoOfLinesParamLbl + '='));
            if Evaluate(NoOfLinesToCreate, Parameters) then
                exit;
        end;
        Error(ParamValidationErr, GetDefaultParameters());
    end;
}

Erweitern Sie dann BCPT-Testparameter-Enumeration, damit es im Performance Toolkit verfügbar wird.

enumextension 50000 "Test Codeunits with Params" extends "BCPT Test Param. Enum"
{
    value(50000; "50000")
    {
        Implementation = "BCPT Test Param. Provider" = "Create PO with N Lines";
    }
}

Unter Die Anwendungsübersicht testen finden Sie weitere Informationen zum Schreiben von Testszenarien.