Das Wiederverwenden von Testobjekten in Testfällen, insbesondere für Anwendungen mit konsistenten Designmustern oder gemeinsamen Komponenten in verschiedenen Modulen, kann die Testeffizienz und Wartbarkeit erheblich verbessern. Dieser Ansatz ist besonders nützlich auf Plattformen wie Salesforce, wo ähnliche Elemente, wie Kombinationsfelder, in verschiedenen Objekten wie Konten, Leads usw. auftreten können, mit nur geringen Variationen in ihren Identifikatoren oder Beschriftungen.

Strategien zur Wiederverwendung von Testobjekten

  1. Parametrisierung von Testobjekten
  • Beschreibung: Die Parametrisierung beinhaltet die Definition von Testobjekten auf eine Weise, dass sie dynamische Eingaben akzeptieren können. Wenn zum Beispiel Kombinationsfelder in verschiedenen Salesforce-Objekten ein ähnliches CSS-Selektormuster teilen, sich aber in ihren IDs unterscheiden, können Sie ein parametrisiertes Testobjekt erstellen, bei dem der ID-Teil variabel ist.
  • Umsetzung in Katalon Studio:
    • Erstellen Sie ein Testobjekt in Katalon Studio, ohne die vollständige ID anzugeben. Wenn sich die ID über Objekte hinweg ändert, verwenden Sie einen Platzhalter in der Selektordefinition des Testobjekts.
    • Wenn Sie dieses Testobjekt in einem Testfall verwenden, übergeben Sie die spezifische ID als Parameter, um einen vollständig qualifizierten Selektor für jede spezifische Instanz zu erstellen. Verwendung des parametrisierten Testobjekts in einem Testfall:
groovy

import com.kms.katalon.core.testobject.ConditionType
import com.kms.katalon.core.testobject.TestObject as TestObject
import com.kms.katalon.core.webui.keyword.WebUiBuiltInKeywords as WebUI

// Definieren Sie den ID-Teil dynamisch
String dynamicId = 'combo-account' // Dies könnte 'combo-lead', usw. sein.

// Holen Sie das generische Testobjekt
TestObject comboBox = findTestObject('Object Repository/GenericComboBox')

// Ändern Sie seine Eigenschaft, um die spezifische Kombinationsbox zu entsprechen
comboBox.modifyProperty('id', ConditionType.EQUALS, dynamicId)

// Verwenden Sie das modifizierte Testobjekt in Ihrem Test
WebUI.click(comboBox)
  1. Verwendung von regulären Ausdrücken zur Objektidentifikation
  • Beschreibung: Nutzen Sie reguläre Ausdrücke (regex) in CSS-Selektoren oder XPath, um Elemente zu identifizieren, die einem bestimmten Muster folgen, aber geringfügige Unterschiede aufweisen. Dies ist nützlich, um Elemente zu finden, die konsistente Teile in ihren Identifikatoren enthalten.
  • Umsetzung in Katalon Studio:
    • Bei der Definition des Selektors des Testobjekts verwenden Sie einen regulären Ausdruck, der das gemeinsame Muster über die verschiedenen Kombinationsfelder hinweg entspricht. Wenn zum Beispiel die ID der Kombinationsfelder einem Muster folgt, sich aber nur durch einen numerischen Wert unterscheidet, kann der reguläre Ausdruck alle Variationen auf der Grundlage des konsistenten Teils der ID abgleichen.
Beispiel für einen Testobjekt-Selektor mit Regex:
Angenommen, die IDs der Kombinationsfelder folgen einem Muster wie combo-account-123, combo-lead-456, wobei das Präfix konsistent ist und das Suffix einen numerischen Wert hat.

Copy code
//input[starts-with(@id, 'combo-')]
  1. Zentralisiertes Objekt-Repository
  • Beschreibung: Pflegen Sie ein zentralisiertes Objekt-Repository, in dem häufig verwendete Elemente wie Kombinationsfelder definiert sind. Dieses Repository dient als einzige Wahrheitsquelle für Testobjekte, die in mehreren Testfällen wiederverwendet werden können.
  • Umsetzung in Katalon Studio:
    • Organisieren Sie Ihr Objekt-Repository in Katalon Studio mit gut benannten Ordnern, die verschiedene Module wie Konten, Leads usw. repräsentieren, und speichern Sie häufig verwendete Testobjekte in einem gemeinsamen Ordner.
    • Beziehen Sie sich in Ihren Testskripten auf diese gemeinsamen Testobjekte, wenn Sie mit Elementen interagieren müssen, die in verschiedenen Modulen gemeinsam sind.

3. Zentralisiertes Objekt-Repository

Sie strukturieren Ihr Objekt-Repository so, dass es gemeinsame Objekte enthält, die in verschiedenen Modulen üblich sind:


Object Repository/
├── Shared/
 └── GenericComboBox
├── Accounts/
 └── SpecificAccountField
└── Leads/
 └── SpecificLeadField

Um es fortgeschrittener zu gestalten, wird eine vereinfachte Einrichtung des Objekt-Repositories für die Wartung erstellt. Während es gut ist, dass es Selbstheilungsfähigkeiten und Aufzeichnungswiedergabe gibt, lehre ich meine Tester intern und extern immer, sehr gut über eine XPath- und Locatorstrategie nachzudenken, zu Wartungszwecken.

Dafür habe ich ein Kombinationsobjekt-Repository und ein Eingabefeld-Repository erstellt und beziehe mich auf die XPath-Namenseigenschaft als den Feldnamen. Die meisten Salesforce-Stammdatenbezeichnungen sind auf diese Weise implementiert (zumindest für die Standardanwendung), so dass dies die Wartung verbessern wird

WebUI.setText(findTestObject('Salesforce/Account/Masterdata_fields_Pageobjects/inputfields', [('inputfields') : 'Site']), site)
	WebUI.setText(findTestObject('Salesforce/Account/Masterdata_fields_Pageobjects/inputfields', [('inputfields') : 'AnnualRevenue']), annualRevenue)
	WebUI.setText(findTestObject('Salesforce/Account/Masterdata_fields_Pageobjects/inputfields', [('inputfields') : 'Phone']), phone)

Herausforderung

Bitte versuchen Sie, Ihre eigenen Parameter in Salesforce zu erstellen, indem Sie die Projektvorlage https://github.com/learn-automated-testing/Katalon_Salesforce_Course verwenden.