Entdecken Sie das TÜV-zertifizierte GoogleTest mit Agentic AI für C/C++-Tests!
Details ansehen »
Parasoft-Blog
Wie wäre es, wenn wir Ihnen sagen, dass es getestete Tipps und Tricks gibt, die Sie anwenden können, um Salesforce Enterprise Apps mit Selenium zu testen? Lernen Sie diese Tricks kennen und entdecken Sie auch, wie Parasoft Selenic Ihnen helfen kann, das Testen von Salesforce-Unternehmensanwendungen zu automatisieren.
Zum Abschnitt springen
Salesforce hat sich in den letzten Jahren mit einem globalen Marktanteil von 19.5 % im Jahr 2018 zur dominierenden CRM-Plattform entwickelt. Das ist mehr als doppelt so viel wie beim nächstplatzierten Konkurrenten SAP und mehr als dreimal so viel wie bei Oracle. Der Erfolg basiert auf der Ausrichtung auf die Entwicklung von Unternehmensanwendungen mit der eigenen objektorientierten Programmiersprache Apex und dem Lightning Web Component Framework.
Salesforce ermöglicht es Entwicklern, ihre Geschäftslogik und UI-Elemente abstrakt zu definieren, sodass Salesforce diese Elemente auf der Seite implementieren kann. Diese Flexibilität geht jedoch auf Kosten der UI-Testautomatisierung, da Entwickler keinen direkten Einfluss auf die endgültigen Inhalte im Browser haben. Salesforce-Unternehmensanwendungen sind bekanntermaßen schwer mit Open-Source-Automatisierungsframeworks wie Selenium zu testen. Im Folgenden werden einige Gründe für diese Schwierigkeiten und mögliche Lösungsansätze erläutert.
Elementkennungen sind eine gängige Methode, um Webseiteninteraktionen mit Selenium zu lokalisieren und zu automatisieren. Die @FindBy-Annotation in Selenium verfügt über ein einfaches Attribut id="something", um ein Webelement anhand seiner eindeutigen ID auf der Seite zu finden.
Elementbezeichner in einer Salesforce-Anwendung sehen sehr ungewöhnlich aus: zum Beispiel id="940:1376;a". Erschwerend kommt hinzu, dass sich die Bezeichner bei jedem Seitenaufruf zufällig ändern. Dadurch sind sie für die Testautomatisierung unbrauchbar. Überlegen Sie, wie ein Selenium-Test das <input>-Element im folgenden Beispiel finden soll, wenn sich die ID bei jedem Testlauf ändert.
Der Element hat keine anderen eindeutig definierenden Attribute. Glücklicherweise entspricht Salesforce den neuesten Richtlinien zur Barrierefreiheit im Internet. WCAG-Abschnitt 1.3.1 zu Informationen und Beziehungen schreibt vor, dass ein menschenlesbares Element im Code mit seinem entsprechenden indem das „for“-Attribut des Labels mit dem „id“-Attribut der Eingabe abgeglichen wird. Die Elementkennung kann sich bei jedem Laden der Seite ändern, der Labeltext sollte jedoch immer gleich bleiben.
In diesem Beispiel ist der Text "Firmenname" in einem with-Attribut für "940:1376;a" enthalten, das zufällig mit der Kennung auf dem Element. Ein Selenium-Test kann die Verbindung vom Beschriftungstext zum Eingabeelement mithilfe eines cleveren XPath herstellen: //input[@id=//label[normalize-space(.)='Firmenname']/@for].
Dieser XPath findet alle Element auf der Seite mit einem „id“-Attribut, das dem „for“-Attribut einer Anzeige „Firmenname“ entspricht. Die XPath-Funktion normalize-space(.) entfernt die zusätzlichen Leerzeichen aus dem Text, der in diesem Beispiel innerhalb des Elements in ein „umschlossen“ ist. Dadurch wirkt der Selenium-Test etwas komplizierter, aber er erfüllt seinen Zweck.
Trotz des Namens „Lightning“ können die Cloud-basierten Unternehmensanwendungen von Salesforce manchmal recht langsam sein. Testautomatisierungsingenieure kennen die Herausforderungen, die mit Anwendungen einhergehen, die langsam reagieren. Ein Testskript schlägt fehl, wenn es versucht, den nächsten Schritt auszuführen, bevor die Anwendung bereit ist.
Eine harte Codierung mit einer Verzögerung von mehreren Sekunden für den Test kann länger als nötig dauern und die Gesamtzeit verlängern, die die Tests für die Ausführung benötigen. Um gerade lange genug zu verzögern, muss das Warten bedingt sein. Salesforce macht es schwierig, typische Wartebedingungen für fließendes Selen zu verwenden, indem eine Lade-Overlay-Maske auf der Seite gerendert wird.
Selen hat eine integrierte Unterstützung für dynamische Wartebedingungen. Es prüft mehrmals pro Sekunde, ob Elemente vorhanden oder anklickbar sind - bis zu einer maximalen Zeit, bevor ein Fehler auftritt. Das Problem ist, dass keine der in Selenium integrierten Wartebedingungen die Ladeüberlagerung in Salesforce übernimmt. Selen erkennt, dass das Element unter der Lademaske tatsächlich vorhanden und nicht deaktiviert ist. Es hört auf zu warten und versucht darauf zu klicken. Dies führt zu einer Ausnahme, da der Klick vom Lade-Overlay abgefangen wird.
Nicht alle Hoffnung ist verloren. Ein paar weitere Zeilen Selenium-Code ermöglichen es, diese durch Klicken abgefangene Ausnahme abzufangen und es erneut mit derselben Warteschleife und demselben Timeout zu versuchen.
Ein weiteres Problem bei der Automatisierung von UI-Tests besteht darin, dass Salesforce sich merkt, welche Lightning-UI-Komponenten zuletzt geöffnet waren, und den letzten bekannten Zustand beim Anmelden wiederherstellt. Das bedeutet, dass das anfängliche Seitenlayout, das dem Test zur Verfügung steht, je nach gespeichertem Verlauf variieren kann.
Eine Möglichkeit, die Auswirkung des vorherigen Status zu verringern, besteht darin, dass der Test den Browser inkognito startet. Selenium macht dies mit Google Chrome einfach, indem Optionen in der Setup-Methode der Testklasse übergeben werden.
Andere hier gezeigte Optionen deaktivieren die Browser-Eingabeaufforderung, um den Standort für Salesforce freizugeben, da Selenium-Tests während der Wiedergabe an dieser Berechtigungsaufforderung hängen bleiben können. Durch Maximieren des Browserfensters werden mehr Elemente auf dem Bildschirm angezeigt. Außerdem muss der Test nicht mehr zu Elementen scrollen, bevor Sie darauf klicken. Wenn der Test immer noch zu einem Element weiter unten auf der Seite scrollen muss, kann Selenium diesen JavaScript-Befehl ausführen, um genau das zu tun.
Mit diesen Tipps und Tricks ist es praktisch, Selenium für automatisierte UI-Tests von Salesforce-Unternehmensanwendungen zu verwenden. Die Testautomatisierung ist eine wichtige Methode, um Regressionen nach dem Ändern der Geschäftslogik oder der Webkomponenten in der Unternehmensanwendung schnell zu erkennen. Salesforce selbst veröffentlicht außerdem einige Male im Jahr Änderungen. Eine Reihe von Selenium-Tests ist eine hervorragende Möglichkeit, die Kompatibilität mit dem neuesten Salesforce-Update in einer Sandbox schnell zu überprüfen, bevor sie in die Produktion eingeführt werden.
Wenn Ihnen die Umsetzung dieser Tipps und Tricks zu aufwendig erscheint, sollten Sie Parasoft Selenic in Betracht ziehen , um die Erstellung Ihrer Selenium-Tests effizient zu automatisieren und die Testwartung zu vereinfachen. Mit Selenic können Sie Interaktionen mit Salesforce-Unternehmensanwendungen in Ihrem Browser aufzeichnen. Anschließend können Sie ganz einfach Selenium-Testklassen erstellen, die all diese Techniken nutzen.
Der integrierte Recorder von Parasoft Selenic bietet eine Anwendungsauswahl, mit der Sie Salesforce-spezifische Attribute während der Aufzeichnung von UI-Aktionen erfassen können. Selenic verwendet diese Attribute anschließend beim Erstellen von Selenium-UI-Tests und setzt KI-Technologie ein, um fehlerhafte Tests aufgrund von Änderungen an Locators oder Wartebedingungen automatisch zu reparieren .