Het hergebruiken van testobjecten in testgevallen, vooral voor applicaties met consistente ontwerppatronen of gedeelde componenten over verschillende modules, kan de testefficiëntie en onderhoudbaarheid aanzienlijk verbeteren. Deze aanpak is bijzonder nuttig op platforms zoals Salesforce, waar vergelijkbare elementen, zoals comboboxen, kunnen verschijnen over verschillende objecten zoals Accounts, Leads, enz., met slechts kleine variaties in hun identificatoren of labels.
Strategieën voor het hergebruiken van testobjecten
- Parameterisatie van testobjecten
- Beschrijving: Parameterisatie houdt in dat testobjecten zo worden gedefinieerd dat ze dynamische invoer kunnen accepteren. Als bijvoorbeeld comboboxen over verschillende Salesforce-objecten een vergelijkbaar CSS-selectorpatroon delen, maar verschillen in hun ID’s, kunt u een geparameteriseerd testobject maken waarbij het ID-deel variabel is.
- Implementatie in Katalon Studio:
- Maak een testobject in Katalon Studio zonder het volledige ID te specificeren. Gebruik bijvoorbeeld een tijdelijke aanduiding in de definitie van de selector van het testobject als het ID verandert over objecten.
- Geef bij het gebruik van dit testobject in een testgeval het specifieke ID als parameter door om een volledig gekwalificeerde selector voor elke specifieke instantie te maken. Het gebruik van het geparameteriseerde testobject in een testgeval:
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
// Definieer het ID-deel dynamisch
String dynamicId = 'combo-account' // Dit kan ook 'combo-lead', enz. zijn.
// Haal het generieke testobject op
TestObject comboBox = findTestObject('Object Repository/GenericComboBox')
// Wijzig de eigenschap om overeen te komen met de specifieke combobox die nodig is
comboBox.modifyProperty('id', ConditionType.EQUALS, dynamicId)
// Gebruik het gewijzigde testobject in uw test
WebUI.click(comboBox)
- Gebruik van reguliere expressies in objectidentificatie
- Beschrijving: Gebruik reguliere expressies (regex) in CSS-selectors of XPath om elementen te identificeren die een specifiek patroon volgen, maar mogelijk kleine verschillen hebben. Dit is nuttig voor het matchen van elementen die consistente delen in hun identificatoren bevatten.
- Implementatie in Katalon Studio:
- Gebruik bij het definiëren van de selector van het testobject een regex die het gemeenschappelijke patroon over de verschillende comboboxen matcht. Als bijvoorbeeld het ID van de comboboxen een patroon volgt, maar alleen verschilt door een numerieke waarde, kan de regex alle variaties matchen op basis van het consistente deel van het ID.
Voorbeeld van een Testobject Selector met Regex:
Stel dat de ID's van de comboboxen een patroon volgen zoals combo-account-123, combo-lead-456, waarbij het voorvoegsel consistent is en het achtervoegsel een numerieke waarde is.
Kopieer code
//input[starts-with(@id, 'combo-')]
- Gecentraliseerde objectrepository
- Beschrijving: Onderhoud een gecentraliseerde objectrepository waarin veelgebruikte elementen zoals comboboxen zijn gedefinieerd. Deze repository fungeert als een enkele bron van waarheid voor testobjecten die kunnen worden hergebruikt in meerdere testgevallen.
- Implementatie in Katalon Studio:
- Organiseer uw Object Repository in Katalon Studio met goed benoemde mappen die verschillende modules vertegenwoordigen zoals Accounts, Leads, enz., en bewaar veelgebruikte testobjecten in een gedeelde map.
- Verwijs naar deze gedeelde testobjecten in uw testscripts wanneer u moet interageren met elementen die gemeenschappelijk zijn over modules.
3. Gecentraliseerde objectrepository
U structureert uw Object Repository om gedeelde objecten te hebben die gemeenschappelijk zijn over verschillende modules:
Object Repository/
├── Shared/
│ └── GenericComboBox
├── Accounts/
│ └── SpecificAccountField
└── Leads/
└── SpecificLeadField
Om het geavanceerder te maken, is er een vereenvoudigde setup van een objectrepo gemaakt, voor onderhoud. Hoewel het goed is dat er zelfherstellende mogelijkheden zijn en een opname van een afspeelactie, leer ik mijn testers intern en extern altijd om heel goed na te denken over een xpath en locatorstrategie, voor onderhoudsdoeleinden.
Hiervoor heb ik een combo object repo en een inputveld repo gemaakt en verwijs ik de xpath-naam eigenschap als de veldnaam. De meeste Salesforce master data namen zijn op deze manier geïmplementeerd (tenminste voor de standaard applicatie) dus dit zal het onderhoud verbeteren
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)
Uitdaging
Probeer uw eigen parameters in Salesforce te maken met behulp van het https://github.com/learn-automated-testing/Katalon_Salesforce_Course project sjabloon.