Slimme identificatie in QTP/UFT met Voorbeeld

โšก Slimme samenvatting

Slimme identificatie is een terugvalmechanisme in UFT Een daarvan is bedoeld om een โ€‹โ€‹object te lokaliseren wanneer de geleerde beschrijving niet langer overeenkomt met de te testen applicatie. Hierbij worden basis- en optionele filtereigenschappen gebruikt om een โ€‹โ€‹lijst met kandidaten te verkleinen tot รฉรฉn overeenkomst.

  • ๐Ÿ” Definitie: Het mechanisme wordt alleen geactiveerd wanneer de geleerde beschrijving geen enkele unieke objectovereenkomst oplevert.
  • ๐Ÿงฉ Twee soorten eigendommen: De basisfiltereigenschappen definiรซren wat het object is; optionele filtereigenschappen verfijnen de overeenkomst verder.
  • โš™๏ธ Eliminatieproces: UFT Stelt een kandidatenlijst samen op basis van basiseigenschappen en filtert deze vervolgens รฉรฉn voor รฉรฉn met behulp van optionele eigenschappen.
  • โ€‹ Configuratie: Schakel de filters per objectklasse in en configureer ze via Extra > Objectidentificatie.
  • โš ๏ธ Resultaatzichtbaarheid: Bij elke aanroep wordt een waarschuwingsstap in de testresultatenstructuur vastgelegd.
  • ???? Afweging tussen prestaties: De extra filtering zorgt voor extra belasting tijdens de uitvoering bij grote testsuites.
  • ๐Ÿ”ง Handmatige oplossing: Vervang een vluchtige eigenschap zoals 'name' door een stabiele eigenschap zoals 'html id' om terugval te voorkomen.
  • ๐Ÿ’ป Scriptbesturing: De instelling (โ€œDisableReplayUsingAlgorithmโ€) schakelt slimme identificatie in of uit voor een volledige runsessie.

Wat is slimme identificatie in QTP/UFT?

Slimme identificatie is een reservemechanisme voor objectherkenning in OpenText UFT Een daarvan is de tool die voorheen bekend stond als HP QuickTest Professional (QTP). Als het normale identificatieproces geen unieke overeenkomst kan vinden voor de geleerde beschrijving van een object, UFT Activeert slimme identificatie, mits dit mechanisme is ingeschakeld in de objectidentificatie-instellingen voor de betreffende objectklasse.

In tegenstelling tot de geleerde beschrijving vereist Smart Identification geen exacte overeenkomst voor elke opgeslagen eigenschap. Het evalueert twee categorieรซn eigenschappen om een โ€‹โ€‹groep kandidaatobjecten te verkleinen tot precies รฉรฉn:

  • Basisfiltereigenschappen. De meest fundamentele eigenschappen van een testobjectklasse; die eigenschappen waarvan de waarden niet kunnen veranderen zonder de essentie van het oorspronkelijke object te veranderen.
  • Optionele filtereigenschappen. Ondersteunende eigenschappen die helpen bij de identificatie van een object, maar die in de loop van de tijd waarschijnlijk zullen veranderen.

Wanneer slimme identificatie actief is, UFT Het systeem "vergeet" de geleerde beschrijving en bouwt een nieuwe lijst met kandidaten op, die elk object bevat dat aan alle basisfiltereigenschappen voldoet. Vervolgens wordt die lijst verder verkleind door de optionele filtereigenschappen รฉรฉn voor รฉรฉn te controleren, totdat er slechts รฉรฉn object overblijft.

Als Smart Identification tijdens een testsessie wordt geactiveerd, wordt in de testresultatenboom een โ€‹โ€‹waarschuwingsbericht weergegeven dat bevestigt dat het mechanisme is gebruikt, en wordt een Smart Identification-stap in de resultaten ingevoegd zodat de afwijking van de geleerde beschrijving zichtbaar blijft.

Slimme identificatie staat op de derde plaats. UFTDe objectidentificatiehiรซrarchie van 's, na de geleerde beschrijving en eventuele visuele relatie-identificatie, en vรณรณr de ordinale identificatie die als laatste redmiddel wordt gebruikt. Inzicht in de plaats ervan verklaart waarom het volledig uitschakelen ervan, in plaats van het aanpassen van de onderliggende eigenschappen, zelden de beste langetermijnoplossing is voor een script dat vaak wordt uitgevoerd.

Standaard filtereigenschappen versus optionele filtereigenschappen

Beide filters werken samen, maar spelen een verschillende rol in het hierboven beschreven eliminatieproces. De onderstaande vergelijking verduidelijkt wanneer elk filter wordt gebruikt en hoeveel eliminatiekracht elk filter heeft.

Aspect Basisfiltereigenschappen Optionele filtereigenschappen
Rol Stel de eerste kandidatenlijst samen. Beperk de lijst met kandidaten tot รฉรฉn object.
Stabiliteit Vrijwel nooit iets veranderen zonder de identiteit van het object te veranderen. Kan periodiek veranderen zonder de identiteit van het object te wijzigen.
Overeenkomstregel Elke kandidaat moet aan alle basiseigenschappen voldoen. Eรฉn pand tegelijk gecontroleerd; een pand wordt overgeslagen als dat alle kandidaten zou uitsluiten.
Typisch voorbeeld HTML-tag, objectklasse, index Naam, HTML-ID, alt-tekst, afbeeldingsbron
Waar geconfigureerd Objectidentificatie > Configureren > Basisfiltereigenschappen Objectidentificatie > Configureren > Optionele filtereigenschappen

Omdat dezelfde eigenschap niet in beide lijsten kan voorkomen, is het belangrijk de splitsing zorgvuldig te plannen. Eigenschappen die definiรซren wat een object fundamenteel is, horen in de basislijst; eigenschappen die het object slechts onderscheiden van vergelijkbare objecten, horen in de optionele lijst.

Hoe slimme identificatie werkt: het stapsgewijze proces

Slimme identificatie wordt pas geactiveerd als de geleerde beschrijving, en elke visuele relatie-identificatie, er niet in slaagt een enkel object te identificeren. Eenmaal geactiveerd, UFT Het werkt via een voorspelbaar eliminatieproces in vier stappen:

  1. Stel de kandidatenlijst opnieuw samen. UFT Negeert de geleerde beschrijving en scant de ouder van het object op elk object dat overeenkomt met alle basisfiltereigenschappen.
  2. Pas de eerste optionele eigenschap toe. UFT Verwijdert alle kandidaten die niet overeenkomen met de eerste eigenschap in de lijst met optionele filtereigenschappen.
  3. Evalueer het resultaat. Als er meer dan รฉรฉn kandidaat overblijft, UFT Herhaalt de vorige stap met de volgende optionele eigenschap. Als een filter alle resterende kandidaten zou elimineren, UFT slaat die eigenschap over en gaat door naar de volgende.
  4. Stop bij รฉรฉn wedstrijd. UFT Het filter-en-evaluatieproces wordt herhaald totdat er precies รฉรฉn object overblijft, of totdat er geen optionele eigenschappen meer zijn om te controleren.

Als het eliminatieproces nog steeds geen enkel object kan isoleren, UFT Het systeem valt terug op de geleerde beschrijving plus een ordinale identificatiecode, zoals index, locatie of aanmaaktijd. Als zelfs die combinatie het object niet kan identificeren, wordt de uitvoeringssessie gepauzeerd en wordt een runtimefout weergegeven.

Slimme identificatie inschakelen of uitschakelen

Slimme identificatie wordt per testobjectklasse geconfigureerd vanuit Hulpmiddelen > ObjectidentificatieSelecteer de omgeving en de objectklasse en schakel deze in. Slimme identificatie inschakelen, dan klikken Configure Om de basis- en optionele filtereigenschappen voor die klasse te kiezen. In hetzelfde dialoogvenster kunt u de optie uitschakelen voor een klasse die altijd de geleerde beschrijving moet gebruiken.

Slimme identificatie in-/uitschakelen

Hoe slimme identificatie werkt (video-uitleg)

De onderstaande video laat aan de hand van een live voorbeeld zien hoe je de basisfilter en de optionele filters verwijdert.

Klik hier als de video niet toegankelijk is

Voordelen en nadelen van het gebruik van slimme identificatie

Slimme identificatie verhoogt de robuustheid, maar dit gaat gepaard met kosten voor de uitvoeringstijd. Weeg beide voor- en nadelen af โ€‹โ€‹voordat u deze functie standaard inschakelt voor een volledige objectrepository.

  • โœ… Blijft behouden bij kleine UI-wijzigingen: Een hernoemd attribuut of een gewijzigde positie op de pagina zorgt er niet langer voor dat alle scripts die het object aanraken, niet meer werken.
  • โœ… Vermindert het onderhoud van de objectrepository: Testers hoeven na kleine front-end releases minder tijd te besteden aan het opnieuw opnemen van objecten.
  • โœ… Blijft zichtbaar in de resultaten: Bij elke aanroep wordt een waarschuwing geregistreerd, zodat teams kunnen controleren hoe vaak de fallback daadwerkelijk nodig is.
  • โš ๏ธ Langzamere testuitvoering: Het samenstellen en filteren van een kandidatenlijst duurt aanzienlijk langer dan een directe match met een woning, en de kosten lopen flink op bij een groot aantal appartementen.
  • โš ๏ธ Kan echte gebreken maskeren: Als Smart Identification stilletjes een vergelijkbaar object vindt, kan een echte regressie in de gebruikersinterface onopgemerkt blijven.
  • โš ๏ธ Periodieke controle is nodig: De basis- en optionele filtereigenschappen moeten nog steeds af en toe worden herzien naarmate de applicatie zich verder ontwikkelt.

De meeste teams laten Smart Identification ingeschakeld voor verkennende scripts en scripts die niet vaak worden uitgevoerd, en schakelen het vervolgens selectief uit voor prestatiekritieke objecten zodra de identificatie-eigenschappen van het object stabiel zijn.

Wijzig de objecteigenschap om slimme identificatie te voorkomen

De flexibiliteit van Smart Identification gaat gepaard met de hierboven beschreven runtimekosten, waardoor veel teams er de voorkeur aan geven de objectidentificatie-eigenschappen zelf aan te passen in plaats van herhaaldelijk op de fallback te vertrouwen. Let op twee signalen die erop wijzen dat een aanpassing van de eigenschappen beter is dan een runtime fallback: een Smart Identification-waarschuwing die bijna elke keer verschijnt en een script dat merkbaar trager is geworden sinds de fallback is geactiveerd. Beide wijzen op een object waarvan de standaardidentificatie-eigenschappen niet langer geschikt zijn voor de applicatie, in plaats van een eenmalige UI-fout. De onderstaande video demonstreert de oplossing op een echt inlogformulier.

Klik hier als de video niet toegankelijk is

Videotranscript: Belangrijkste conclusies

  • Slimme identificatie vertraagt โ€‹โ€‹de uitvoering van scripts, wat niet wenselijk is voor grote of vaak uitgevoerde testsuites.
  • Om dit volledig te voorkomen, kunt u de standaard objectidentificatie-eigenschappen wijzigen in plaats van te vertrouwen op de terugvaloptie.
  • In ObjectidentificatieVerwijder "naam" uit de verplichte eigenschappen en vervang deze door "HTML-id" om de test onafhankelijk te maken van naamswijzigingen.
  • Herhaal dezelfde stappen zodra de verplichte lijst met eigenschappen is bijgewerkt.
  • Als de naam later verandert van "Verzenden" naar "Inloggen", wordt het script nu uitgevoerd zonder dat Smart Identification wordt geactiveerd.
  • Als een verplichte of ondersteunende eigenschap van een te testen object regelmatig verandert, vervang deze dan door een stabielere eigenschap om de scriptuitvoering snel te houden.
  • Het aanpassen van eigenschappen is een vaardigheid die je door ervaring ontwikkelt; hoe meer je met de tool werkt, hoe beter je erin wordt.

Slimme identificatie uitschakelen met VBScript

Slimme identificatie kan ook voor een volledige uitvoeringssessie worden uitgeschakeld zonder de objectrepository aan te raken, met behulp van de DisableReplayUsingAlgorithm Een runtime-instelling. Dit is handig wanneer een script onmiddellijk moet falen bij elke onjuiste eigenschap, in plaats van stilzwijgend terug te vallen op het eliminatieproces.

' Disable Smart Identification for this run session
Setting("DisableReplayUsingAlgorithm") = 1

Browser("Mercury Tours").Page("Find Flights").WebEdit("userName").Set "mercury"

' Re-enable Smart Identification once the strict steps are done
Setting("DisableReplayUsingAlgorithm") = 0

Houd het uitgeschakelde venster zo kort mogelijk. Stappen die erin worden uitgevoerd, moeten exact overeenkomen met de geleerde beschrijving, zodat elke legitieme afwijking in de te testen applicatie onmiddellijk tot een fout leidt in plaats van een gecontroleerde terugval.

Informatiebronnen

Download de webpagina's die in de bovenstaande handleiding worden gebruikt om zelf te oefenen.

Veelgestelde vragen

Nee. Slimme identificatie is van toepassing op de meeste systemen. UFT Een van de omgevingen, waaronder Windows, JavaEn .NET-objecten, niet alleen webobjecten. De beschikbaarheid hangt af van de add-in en de testobjectklasse, en niet van het omgevingstype.

Het opbouwen van een kandidatenlijst en het filteren ervan, eigenschap voor eigenschap, duurt langer dan het vinden van een enkele overeenkomst op basis van een geleerde beschrijving. Bij grote objectrepositories loopt de extra verwerking flink op, waardoor veel teams deze functie uitschakelen voor prestatiekritieke objecten.

Ja. Open het object in de objectrepository, ga naar Objecteigenschappen > Aanvullende details en stel 'Slimme identificatie inschakelen' in op 'False' voor dat specifieke object. Laat de rest van de repository ongewijzigd.

Ze lossen een vergelijkbaar probleem op verschillende manieren op. Zelfherstellende locators in moderne AI-testtools Een gewijzigd element wordt automatisch opnieuw ingeleerd, terwijl Smart Identification een lijst met vaste eigenschappen filtert. Veel teams gebruiken beide functies samen.

Nee. Slimme identificatiefilters filteren opgeslagen teksteigenschappen, terwijl UFT De nieuwere, op AI gebaseerde en Insight-identificatietechnieken herkennen objecten visueel. De twee fungeren als afzonderlijke, complementaire terugvallagen.

Vat dit bericht samen met: