Tipps und Best Practices zum Testen von Salesforce-Integrationen

Salesforce-Integration

Mithilfe von Salesforce-Tests können Sie Ihre benutzerdefinierten Tests überprüfen Salesforce-Integrationen und Funktionen mit anderen Unternehmensanwendungen. Ein guter Test deckt alle Salesforce-Module ab, von Konten bis zu Leads, von Opportunities bis zu Berichten und von Kampagnen bis zu Kontakten. Wie bei allen Tests gibt es eine gute (effektive und effiziente) Möglichkeit, einen Salesforce-Test durchzuführen, und eine schlechte. Was testet Salesforce als bewährte Methode?

  • Verwenden Sie die richtigen Testwerkzeuge - Salesforce-Tests finden im Browser oder in einer Eclipse-basierten Umgebung statt. Sowohl die neuesten Browser als auch Eclipse verfügen über hervorragende Debugging-Tools, die Sie mit Testklassen kombinieren können, um sehr hilfreiche Ergebnisse zu erzielen. Wenn Sie jedoch mehr benötigen, sollte der Apex Interactive Debugger (oder einfach Apex) von Force.com verwendet werden. Beachten Sie, dass Sie auch Salesforce Lightning Inspector, eine Chrome-Erweiterung, verwenden können, um Salesforce Lightning speziell zu testen. Apex ist ein Force.com Plattformeigene Programmiersprache, die große Ähnlichkeiten mit Java aufweist. Es handelt sich um eine objektorientierte Programmiersprache, bei der die Groß- und Kleinschreibung nicht berücksichtigt wird. Sie folgt stark geschweiften Klammern und der Punktnotationssyntax. Sie können Apex verwenden, um programmierte Funktionen während der meisten Force.com-Prozesse auszuführen, einschließlich benutzerdefinierter Links und Schaltflächen, Aktualisierungen, Löschungen und Ereignisbehandlungsroutinen für das Einfügen von Datensätzen über benutzerdefinierte Visualforce-Seitencontroller oder die Zeitplanung.
  • Verwenden Sie die richtigen Namenskonventionen - Die richtige Benennung Ihrer Testmethoden, bevor Sie mit dem Schreiben von Tests beginnen, ist sehr wichtig. Der Name der Testmethode sollte aus drei Teilen bestehen. Dies sind nameOfMethod (Name der einzelnen Methode, die Sie testen, z. B. Einfügen / Aktualisieren / Löschen / Wiederherstellen beim Testen eines Triggers, Informationen zu TestPath, die flexibel sind, z. B. Nullkontakt, wenn Sie testen, dass der Kontakt Null ist, und Gültigkeit beim Testen ein positiver / negativer Weg.
  • 100% Deckung sicherstellen - Obwohl die Standard-Salesforce-Direktive lautet, dass Unit-Tests 75% Ihres Codes abdecken sollten (abzüglich Testklassen, Aufrufe von System.debug und Testmethoden) und Sie keinen Apex-Code bereitstellen oder AppExchange-Apps verpacken können, sollten Sie dies tun Beachten Sie, dass dies nur ein Standard ist und Ihr Ziel eine 100% ige Abdeckung sein sollte. Testen Sie alle positiven / negativen Fälle und auf Daten, die vorhanden und nicht vorhanden sind. Weitere wichtige Tipps zur Codeabdeckung sind:
    • Sie sollten Tests ausführen, um die Codeabdeckungsnummern zu aktualisieren, da diese Nummern nicht aktualisiert werden, wenn der Apex-Code aktualisiert wird, bis die Tests erneut ausgeführt werden.
    • Wenn seit dem letzten Testlauf ein Update in der Organisation durchgeführt wurde, besteht das Risiko, dass die Code-Coverage-Nummern falsch sind. Führen Sie die Tests erneut aus, um die richtige Schätzung zu erhalten.
    • Der Prozentsatz der Codeabdeckung enthält keine Codeabdeckung aus Tests mit verwalteten Paketen. Die einzige Ausnahme besteht darin, dass bei diesen Tests die Auslöser ausgelöst werden.
    • Die Abdeckung hängt von der Gesamtzahl der Codezeilen ab. Wenn Sie Codezeilen hinzufügen oder löschen, wirkt sich dies auf den Prozentsatz aus.
  • Testfälle in Klassen und Controllern - In der Salesforce-Entwicklung erstellen die meisten Entwickler für jede Funktion separate Klassen und Controller-Dateien. Dies geschieht, um die Codierung organisierter, einfacher, wiederverwendbarer und portabler zu machen. Sie sollten jedoch beachten, dass dies zwar einfacher, aber nicht effizienter ist. Sie erreichen Portabilität, wenn sich der Testcode in der ursprünglichen Klasse und im Controller-Code selbst befindet, da Sie bei der Migration von der Sandbox zur Produktion keine Testklasse verpassen.
  • Verwenden Sie System.assert () - In Apex, System.Assert() wird verwendet, um die Bedingungen zu überprüfen. Dies ist eine wichtige Funktion, da Sie damit feststellen können, ob die Methode eine bestimmte Funktion wie erwartet ausgeführt hat. Sie sollten System.assertEquals () und System.assertNotEquals () zwischen kritischen Funktionen verwenden, um nicht nur festzustellen, ob der Code ordnungsgemäß ausgeführt wurde, sondern auch sicherzustellen, dass keine Daten falsch geschrieben werden, wenn der Code schief geht.
  • Umfassender Test - Tests sollten alles abdecken. Sie sollten Funktionstests, Lasttests, Sicherheitstests und Bereitstellungstests durchführen.
  • Unit Tests - Sie sollten Unit-Tests durchführen lassen, um sicherzustellen, dass einzelne Datensätze das richtige und erwartete Ergebnis liefern. Beachten Sie, dass die Verwendung eines riesigen Tests, der den gesamten Code abdeckt, eine gute Idee ist. Beachten Sie jedoch, dass die generierten Ergebnisse schwerer zu debuggen und Fehler schwerer zu verstehen sind. Ein Komponententest sollte einen kleinen Teil der getesteten Funktionalität abdecken.
  • Massengut testen - Ein guter Testcode (Trigger, Ausnahme oder Klasse) kann für bis zu mehrere hundert Datensätze (200 für Apex) verwendet werden. Sie sollten dies nutzen und nicht nur einzelne Datensätze, sondern auch Massenfälle testen.
  • Positive Tests - Testen Sie, ob das erwartete Verhalten bei allen erwarteten Permutationen auftritt. Der Test sollte sicherstellen, dass der Benutzer das Formular korrekt ausgefüllt hat und die Grenzwerte nicht überschritten hat.
  • Negative Tests - Testen Sie die negativen Fälle, um sicherzustellen, dass Fehlermeldungen korrekt erstellt werden. Beispiele für solche negativen Fälle sind nicht in der Lage, negative Beträge anzugeben und keine zukünftigen Daten hinzuzufügen. Negative Tests sind wichtig, da die richtige Handhabung im Süden den Unterschied ausmachen kann.
  • Tests automatisieren - Die Salesforce-Tests wurden traditionell manuell durchgeführt. Sie sollten automatisierte Tests in Betracht ziehen, da dies weitere Vorteile bietet. Diese beinhalten:
    • Manuelle Tests machen Sie anfällig für Fehler, da die Tests von Menschen und nicht von Robotern durchgeführt werden. Roboter zeichnen sich durch sich wiederholende Aktivitäten aus, während Menschen aufgrund von Langeweile, reduzierter Konzentration und Beständigkeit sowie der Tendenz, Ecken zu schneiden, Fehler machen.
    • Manuelle Tests wiederholen sich, sind formelhaft und anstrengend. Das Testteam ist besser dran, explorativere Arbeiten auszuführen.
  • Führen Sie jeden Codelogikzweig aus - Bei Verwendung der bedingten Logik (wenn Sie ternäre Operatoren eingeschlossen haben) sollte jeder Zweig der Codelogik ausgeführt werden.
  • Verwenden Sie ungültige und gültige Eingaben für Aufrufe von Methoden - Aufrufe von Methoden sollten sowohl mit ungültigen als auch mit gültigen Eingaben erfolgen.
  • Komplette Tests - Stellen Sie sicher, dass die Tests erfolgreich abgeschlossen wurden. Sie sollten keine Ausnahmen durchlaufen, es sei denn, die Fehler werden erwartet. Behandle alle gefangenen Ausnahmen - es ist nicht gut genug, sie zu fangen.
  • Verwenden Sie ORDER BY Keywords - Verwenden Sie die Schlüsselwörter ORDER BY, um sicherzustellen, dass Ihre Datensätze in der von Ihnen erwarteten Reihenfolge zurückgegeben werden.
  • Nehmen Sie nicht an, dass Datensatz-IDs nacheinander angeordnet sind - Vermeiden Sie den häufigen Fehler, dass die Datensatz-IDs in sequenzieller Reihenfolge angeordnet sind. Die IDs sind nicht in aufsteigender Reihenfolge, es sei denn, Sie haben mehrere Datensätze mit derselben Anforderung eingefügt.
  • Rufen Sie Test.startTest () und Test.stopTest () auf - Wenn Sie einen Apex-Komponententest ausführen, erhalten Sie mehr als 75% Codeabdeckung, die in Salesforce vorgeschrieben ist. Sie sollten stopTest vor Zusicherungen aufrufen, um zu erzwingen, dass asynchrone Codes, die möglicherweise noch ausgeführt werden, beendet werden. Führen Sie neue Abfragen aus, um endgültige Ergebnisse zu erhalten, da anderer Code möglicherweise Daten ändert. Die Verwendung von Test.startTest () und Test.stopTest () stellt sicher, dass Sie den Test innerhalb seiner Governor-Grenzen sandboxen. Auf diese Weise stört der von Ihnen verwendete Setup-Code nicht und gibt Ihnen falsche Negative oder Positive in Bezug auf die Reglergrenzen. Test.stopTest () stellt außerdem sicher, dass @ Future-Aufrufe zum Testen abgeschlossen werden.
  • Lesbarkeit - Die Lesbarkeit ist bei Unit-Tests sehr wichtig. Die Testnamen sollten die durchzuführenden spezifischen Maßnahmen und das erwartete Ergebnis enthalten. Die Methode sollte beschreibend und kurz sein. Die Methode sollte so sein, dass sie für verschiedene Tests wiederverwendbar ist.
  • Erstellen Sie große Testdatensätze vor startTest - Da Ihre Tests in verschiedenen Sandbox- und Produktionsumgebungen ausgeführt werden, erstellen Sie große Testdatensätze, bevor Sie startTest aufrufen, um sicherzustellen, dass der Test die vollständigen Ausführungsgrenzen aufweist. Standardmäßig, Salesforce Github führt Tests durch, die von Produktionsdaten isoliert sind. Wenn Sie Systemdaten wie ein Profil benötigen, fragen Sie ab, um das Richtige für diese bestimmte Umgebung zu finden.
  • Generieren Sie Ihre eigenen Testdaten - Die von Ihnen verwendeten Testdaten sollten im Test generiert werden. Sie können diese Daten mithilfe der Annotation @testSetup und einer TestUtils-Klasse generieren, um nicht nur sicherzustellen, dass Sie über die richtigen Daten verfügen, sondern auch, dass alle Tests auf einer Entwickler-Sandbox ausgeführt werden, ohne dass Daten erforderlich sind.
  • Vermeiden Sie No-Op-AKA-Nulloperationen - Viele Tester verwenden No-Op-AKA-Nulloperationen. Dies sind nutzlose Codes, die nichts bewirken. Da sie sich bereits in Ihrer Codebasis befinden, erhöhen sie Ihren Deckungsprozentsatz.
  • Parallele Testausführung - Wenn Sie Tests über die Salesforce-Benutzeroberfläche oder die Entwicklerkonsole starten, werden die Tests parallel ausgeführt. Dies ist eine wichtige Funktion, da sie die Testlaufzeit beschleunigt. Beachten Sie jedoch, dass dies zu Problemen mit Datenkonflikten führen kann. Wenn Sie den Verdacht haben, dass dies passieren könnte, deaktivieren Sie die parallele Ausführung. Die häufigsten Ursachen für Datenkonfliktprobleme, die häufig zu UNABLE_TO_LOCK_ROW-Fehlern führen, sind:
    • Wenn Tests dieselben Datensätze zur gleichen Zeit aktualisieren sollen. Das Aktualisieren derselben Datensätze erfolgt normalerweise, wenn Tests keine eigenen Daten erstellen.
    • Wenn Tests, die parallel ausgeführt werden, einen Deadlock aufweisen und versuchen, Datensätze mit übereinstimmenden Indexfeldwerten zu erstellen. Ein Deadlock tritt auf, wenn zwei laufende Tests in die Warteschlange gestellt wurden, um Daten zurückzusetzen (dies tritt auf, wenn zwei Tests Eingabedatensätze mit denselben eindeutigen Indexfeldwerten in unterschiedlicher Reihenfolge haben).
    • Um die parallele Testausführung zu deaktivieren, gehen Sie zu Setup, geben Sie Apex Test ein, gehen Sie zum Dialogfeld Apex Test Execution Options, wählen Sie Parallel Apex Testing deaktivieren und klicken Sie auf OK.

Deaktivieren Sie den parallelen Apex-Test

Stellen Sie einen Profi für den Job ein, da er über die Erfahrung und Ausbildung verfügt, die für einen guten Test erforderlich sind, was Ihnen auch Sicherheit gibt. Wenn Sie einen Profi einstellen, können Sie sich auf Ihr Kerngeschäft konzentrieren. Sie sparen außerdem Geld, da Sie für den Job kein internes Team benötigen.

Was denken Sie?

Diese Seite verwendet Akismet, um Spam zu reduzieren. Erfahren Sie, wie Ihre Kommentardaten verarbeitet werden.