Mit dem Business Central Performance Toolkit arbeiten
Das Business Central Performance Toolkit hilft Ihnen beim Nachverfolgen und Vergleichen der Leistung verschiedener Builds Ihrer Lösung. So können Sie sicherzustellen, dass sich Codeänderungen nicht negativ auf die Leistung von Kundenmandanten auswirken.
Business Central wird häufig als skalierbare Plattform genutzt, auf der ISVs und VARs vertikale Lösungen und Anpassungen für bestimmte Kunden bereitstellen, und es liegt im Interesse aller, das Leistungsniveau hoch zu halten. Wir müssen sicherstellen, dass sich Codeänderungen nicht negativ auf die Leistung auswirken, um die Leistungsfähigkeit und Aktualität der Kundenmandanten bei größeren und kleineren Aktualisierungen dieser Lösungen und Anpassungen zu gewährleisten.
Das Business Central Performance Toolkit hilft Ihnen beim Nachverfolgen und Vergleichen der Leistung verschiedener Builds Ihrer Lösung. Beim Onboarding neuer Kunden in Business Central, insbesondere größerer Kunden, müssen sich sowohl der Berater als auch der Kunde darauf verlassen, dass Business Central aktuelle und geplante Lasten unterstützen kann, um die Geschäftsanforderungen zu erfüllen. Berater können solche Lasten mit dem Business Central Performance Toolkit simulieren und Vertrauen in die Fähigkeit von Business Central aufbauen, spezifische Kundenlasten zu unterstützen.
Das Business Central Performance Toolkit stellt Beratern Tools in zwei Erweiterungen bereit:
Business Central Performance Toolkit
Business Central Performance Toolkit-Beispiele
Die Performance Toolkit-Erweiterung
Diese Erweiterung 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. Bei dieser Art der Zusammenarbeit gibt es häufig Änderungen zwischen den veröffentlichten Versionen auf beiden Seiten. Aus diesem Grund ist es wichtig, dass ISVs und VARs sicherstellen können, dass neue Versionen ihrer Lösungen 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.
Das Performance Toolkit 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 ausgeführt werden? Es beantwortet keine Fragen wie z. B., wie viele Bestellungen Business Central pro Stunde verarbeiten kann.
Es ist wichtig, daran zu denken, dass das Toolkit nur in Sandbox-Umgebungen und Docker-Images verwendet werden kann. Es lässt sich nicht in einem Produktionsmandanten verwenden.
Das Performance Toolkit besteht aus zwei Erweiterungen, dem Performance Toolkit, das kostenlos auf AppSource erhältlich ist, und BCPT-SampleTests, die Sie aus dem ALAppExtensions-Repository auf GitHub herunterladen können.
Wir empfehlen Ihnen, beide Erweiterungen herunterzuladen und zu installieren, um den vollen Nutzen aus dem Toolkit zu ziehen.
Gehen Sie wie folgt vorm um die Performance Toolkit-Erweiterung zu installieren.
Öffnen Sie in Ihrer Sandbox-Umgebung die Seite Erweiterungsverwaltung.
Wählen Sie auf der Seite Erweiterungsverwaltung die Optionen Verwalten, Erweiterungsmarkt aus.
Suchen Sie Performance Toolkit auf der Seite, die sich öffnet, und wählen Sie Jetzt abrufen aus.
Geben Sie auf der sich öffnenden Seite Ihre Informationen ein, und klicken Sie auf Weiter.
Wählen Sie auf der nächsten Seite, die geöffnet wird, Installieren aus.
Klicken Sie auf der Bestätigungsseite, die geöffnet wird, auf Ok.
Das Performance Toolkit ist jetzt installiert.
Gehen Sie wie folgt vorm um die Performance Toolkit-Beispiele zu installieren:
Erstellen Sie ein neues AL-Projekt in VSCode.
Legen Sie in der app.json die Abhängigkeiten folgendermaßen fest:
Kennung: 75f1590f-55c5-4501-ae63-bada5534e852
Herausgeber: Microsoft
Name: Performance Toolkit
Version: 17.1.0.0
Laden (oder ziehen) Sie vom BCPT-SampleTests github-Speicherort die src-Ordner in Ihr Projekt.
Nummerieren Sie die Objekte neu in Ihren Objektbereich, z. B. [50.000..99.9999].
Stellen Sie in der Datei TestCodeunitsWithParams.Enum.al sicher, dass Sie die Enumerationswerte neu nummerieren, damit sie Ihren Objektnummern entsprechen:
Stellen Sie Ihre Erweiterung für Ihre Sandbox bereit.
Bei Verwendung beider Erweiterungen bieten sie 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 Testsuiten die grundlegende Szenarien abdecken. Diese dienen auch als Inspiration für andere Suiten 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.
In der Regel möchten Sie die Suite für mehrere Sitzungen gleichzeitig ausführen. Sie können dies mit der Aktion „Start“ tun, nachdem Sie die Suite konfiguriert haben. Wenn Sie jedoch z. B. schon früh in der Entwicklungsphase leichte Tests durchführen möchten, können Sie die Modus-Aktion In einzelner Ausführung starten auswählen, um Ihre Suite nur einmal und so schnell wie möglich auszuführen. In der einzelnen Ausführung können Sie die Anzahl der SQL-Anweisungen zwischen den Ausführungen überwachen und Referenzwerte festlegen. Sie erhalten zudem zeitnahes Feedback, das Ihnen dabei hilft, Regressionen frühzeitig zu erkennen.
Sie können für eine Testsuite bis zu 125 Sitzungen zeitgleich ausführen. Das Feld Gesamtzahl der Sitzungen zeigt an, wie viele Sitzungen bei Ausführung der Suite erstellt werden.
Auf den Suitepositionen können Sie mit der Option Im Vordergrund ausführen Tests nacheinander statt parallel ausführen. Sie können sie auch in Kombination mit Hintergrundaufgaben verwenden, aber dies wird in jeder Sitzung einzeln ausgeführt. Sie können jeweils nur eine Sitzung zur gleichen Zeit im Vordergrund ausführen.
Eine Suite konfigurieren
Die Einstellungen zum Konfigurieren einer Suite sind abhängig von der Umgebung, die Sie simulieren möchten. Das folgende Verfahren bietet ein Beispiel für das Testen mehrerer Sitzungen, die Schritte gelten jedoch auch für eine einzelne Ausführung.
Gehen Sie folgendermaßen vor, um eine Suite zu konfigurieren:
Suchen Sie nach BCPT-Suites, und wählen Sie dann den zugehörigen Link aus.
Wählen Sie Neu aus, um die Seite „BCPT-Suite“ zu öffnen.
Geben Sie in den Feldern Code, Beschreibung und Tag einen Bezeichner, einige Informationen zum Test und ein Tag an, mit dem Sie die Ergebnisse der Suite auf der Seite Protokolleinträge finden können.
Definieren Sie das Timing für die Ausführung. Das Feld 1 Arbeitstag entspricht arbeitet mit dem Feld Dauer (Minuten) zum Aktualisieren des Felds Arbeitsdatum beginnt um, und Sie verwenden es, um Prozesse mit Fristen zu testen, wie z. B. Zahlungen. Die Dauer kann bis zu 240 Minuten betragen.
Mit den Feldern Standard Min. Benutzerverzögerung und Standard Max. Benutzerverzögerung in der Kopfzeile können Sie Pausen zwischen Aktionen simulieren. Sie müssen eine Verzögerung festlegen. Zwischen jeder Iteration, z. B. beim Anlegen von Kundenaufträgen, können Sie eine Verzögerung (Verzögerung zwischen den Iterationen) bis zum Beginn des Tests beim nächsten Kundenauftrag festlegen. Die Verzögerung kann Fest oder Zufällig sein. Verzögerungen sind in den Ergebnissen für Ausführungszeiten nicht enthalten.
Geben Sie die Basisversion für den Vergleich an. Sie müssen möglicherweise den Modus Bearbeiten aktivieren, um den Wert im Feld Basisversion zu ändern.
Konfigurieren Sie Positionen für die Suite. Die Positionen enthalten einige der Einstellungen aus der Kopfzeile. Durch das Aktualisieren der Werte in den Positionen wird auch die Kopfzeile aktualisiert.
Wählen Sie auf dem Inforegister BCPT-Suite-Positionen die auszuführenden Codeunits aus.
Geben Sie im Feld Parameter einen Parameter ein, um Iterationen zu definieren, wie z. B. das Erstellen von Positionen auf Dokumenten. Ein Parameter „Lines=10“ erzeugt z. B. 10 Positionen in einem Dokument.
Geben Sie im Feld Anzahl der Sitzungen die Anzahl der zu simulierenden gleichzeitigen Benutzer ein.
Optional: Wählen Sie die Option Im Vordergrund ausführen aus, wenn Sie im Einzelausführungsmodus oder eine der Sitzungen ausführen möchten, ohne Einstellungen wie minimale und maximale Verzögerung anzuwenden.
Die Ausführung aus PowerShell ausführen
Nachdem Sie die Binärdateien und Skripte installiert und Ihre Suite konfiguriert haben, können Sie das Anmeldeinformationsobjekt erstellen und die Tests von PowerShell ausführen, indem Sie die folgenden Befehle verwenden.
Führen Sie zum Erstellen des Anmeldeinformationsobjekts den folgenden Befehl aus:
$Credential = New-Object PSCredential -ArgumentList <user email>,(ConvertTo-SecureString -String <password> -AsPlainText -Force)
Führen Sie den folgenden Befehl aus, um Tests in einer Business Central-Online-Sandbox zu starten:
RunBCPTTests.ps1 -Environment PROD -AuthorizationType AAD -Credential $Credential -SandboxName <sandbox name> -TestRunnerPage 149002 -SuiteCode "TRADE-50U"
Wenn Sie Tests von PowerShell starten, gibt es eine Verzögerung von zwei Sekunden zwischen neuen Sitzungen. Wenn eine Ausführung abgeschlossen ist, können Sie die Ergebnisse in den Zeilen auf dem Inforegister BCPT-Suite-Positionen anzeigen.
Nachdem Sie die Suite ausgeführt haben, können Sie Protokolleinträge auswählen, um zu sehen was passiert ist. Verwenden Sie Fehler anzeigen und Gleichzeitig laufende Sitzungen anzeigen, da diese Aktionen Filter auf die Ergebnisse anwenden. Die Filterung kann z. B. helfen, Fehler zu beheben, indem angezeigt wird, was ein Benutzer getan hat, als ein Fehler aufgetreten ist. Standardmäßig wird die Seite gefiltert, um die neueste Version anzuzeigen, aber Sie können den Filter für den Vergleich von Ausführungen ändern oder entfernen. Sie können die Aktion In Excel öffnen verwenden, um Dashboards zu erstellen, mit denen die Leistungsergebnisse visualisiert werden können.
Protokolleinträge werden in der Reihenfolge ihrer Erstellung aufgelistet, was bedeutet, dass die verschiedenen Szenarien gemischt sind. Jede Ausführung wird in den Feldern Versions-Nr. identifiziert.
Die Spalte Betrieb zeigt die einzelnen Messungen, wobei der Begriff Szenario verwendet wird, um die Codeunit ohne Wartezeit für den Benutzer auszuführen. Die Spalte Anzahl der SQL-Anweisungen enthält die SQL-Anweisungen, die von den Szenario‑ und Systemaktivitäten ausgegeben wurden, z. B. das Abrufen von Metadaten. Die Zählungen schließen die Protokolleinträge selbst aus. Um einen Drilldown zu einer einzelnen Sitzung vorzunehmen, filtern Sie im Feld Sitzungsnr., oder wählen Sie In Excel öffnen aus, um eine Pivot-Tabelle und ein Pivot-Diagramm für eine umfassendere Analyse zu erstellen.
Beispiel: SQL-Aufrufe und Timing im Modus „Einzelne Ausführung“ auswerten
In diesem Beispiel wird gezeigt, wie der Modus „Einzelne Ausführung“ für Leistungsregressionstests (PRT) zwischen Codeänderungen verwendet wird, um SQL-Aufrufe und das Timing auszuwerten.
Wenn Sie eine neue Erweiterung entwickeln, beginnen Sie häufig mit begrenztem Code und möchten möglicherweise mit einem größeren Benchmark-Test mit simulierten gleichzeitigen Benutzern warten, bis Sie sich einem vollständigen End-to-End-Szenario annähern.
Sie können die Aktion Modus „Einzelne Ausführung“ starten, um einen eingeschränkten Test durchzuführen, z. B. für eine neue Erweiterung. Modus „Einzelne Ausführung“ bietet weiterhin Dinge wie eine Baseline, die Möglichkeit, den Test im Hintergrund auszuführen, und gibt Ihnen sofortiges Feedback.
Die von den Ausführungen generierten Daten werden in der Datenbank gespeichert. Wenn die Datenbank gepflegt ist, können Sie frühere Ausführungen als Baseline festlegen.
Die folgenden Schritte bieten ein Beispiel für die Ausführung eines PRT im Modus „Einzelne Ausführung“.
Wählen Sie auf der Seite BCPT-Suites die Option Neu aus.
Geben Sie im Feld Code einen Namen für die Testsuite ein. In diesem Beispiel verwenden wir PreTest.
Geben Sie im Feld Tag etwas ein, mit dem Sie die Suite später bei der Analyse der Ergebnisse einfach identifizieren können.
Die Felder für Dauer und Verzögerungen werden für den Modus „Einzelne Ausführung“ nicht verwendet, daher belassen wir ihre Standardwerte.
Wählen Sie im Inforegister BCPT-Suite-Positionen die Testsuite für Ihre Komponente aus.
In diesem Beispiel berechnen wir das Gesamtgewicht der Artikel in einem Kundenauftrag, daher verwenden wir den Test der Verkaufsauftragsseite mit einem Parameter, der vier Positionen erzeugt. Der Parameter sollte wie folgt aussehen: „Lines=4“.
Löschen Sie die Option Im Vordergrund ausführen. So wird die Testsuite in einem Hintergrundthread ausgeführt.
Wählen Sie den Modus „Einzelne Ausführung“ starten aus.
Es sollte sich das folgende Fenster öffnen.
Klicken Sie auf die Schaltfläche Aktualisieren, um die Seite zu aktualisieren.
Wählen Sie Protokolleinträge aus, wenn der Test abgeschlossen ist.
Geben Sie eine 1 im Feld Basisversion ein, um Ihre Basis nach Abschluss der Ausführung einzurichten.