Smart identifiering i QTP/UFT med exempel
⚡ Smart sammanfattning
Smart identifiering är en reservmekanism i UFT En för att lokalisera ett objekt när dess inlärda beskrivning inte längre matchar den applikation som testas, med hjälp av bas- och valfria filteregenskaper för att begränsa en lista med kandidater till en matchning.

Vad är smart identifiering i QTP/UFT?
Smart identifiering är en reservmekanism för objektigenkänning i OpenText UFT För det första, verktyget tidigare känt som HP QuickTest Professional (QTPOm den normala identifieringsprocessen inte kan hitta en unik matchning för ett objekts inlärda beskrivning, UFT utlöser smart identifiering, förutsatt att mekanismen är aktiverad i inställningarna för objektidentifiering för det objektets klass.
Till skillnad från den inlärda beskrivningen kräver inte Smart Identification en exakt matchning för varje lagrad egenskap. Den utvärderar två kategorier av egenskaper för att begränsa en pool av kandidatobjekt till exakt en:
- Basfilteregenskaper. De mest grundläggande egenskaperna hos en testobjektklass; de vars värden inte kan ändras utan att det ursprungliga objektets essens ändras.
- Valfria filteregenskaper. Stödjande egenskaper som hjälper till att identifiera ett objekt men som är mer benägna att förändras över tid.
När smart identifiering körs, UFT ”glömmer” den inlärda beskrivningen och återskapar en ny kandidatlista som innehåller alla objekt som matchar alla basfilteregenskaper. Den begränsar sedan listan ytterligare och kontrollerar de valfria filteregenskaperna en i taget tills ett enda objekt återstår.
Om Smart Identification anropas under en körsession loggar testresultatträdet ett varningsmeddelande som bekräftar att mekanismen användes, och ett Smart Identification-steg infogas i resultaten så att avvikelsen från den inlärda beskrivningen förblir synlig.
Smart identifiering kommer trea i UFTs objektidentifieringshierarki, efter den inlärda beskrivningen och eventuell visuell relationsidentifierare, och före den ordinala identifieraren som används som en sista utväg. Att förstå var den passar in förklarar varför inaktivering av den helt, snarare än att åtgärda de underliggande egenskaperna, sällan är det bästa långsiktiga valet för ett skript som körs ofta.
Basfilteregenskaper kontra valfria filteregenskaper
Båda filtren fungerar tillsammans, men de spelar olika roller i elimineringsprocessen som beskrivs ovan. Jämförelsen nedan klargör när vart och ett används och hur mycket elimineringskraft varje filter har.
| Aspect | Egenskaper för basfilter | Valfria filteregenskaper |
|---|---|---|
| Roll | Bygg upp den första kandidatlistan | Begränsa kandidatlistan till ett objekt |
| Stabilitet | Nästan aldrig ändras utan att objektets identitet ändras | Kan ändras periodiskt utan att objektets identitet ändras |
| Matchningsregel | Varje kandidat måste matcha alla basegenskaper | Kontrollerade en egenskap i taget; en egenskap hoppas över om den skulle eliminera alla kandidater |
| Typiskt exempel | HTML-tagg, objektklass, index | Namn, HTML-ID, alt-text, bildkälla |
| Var konfigurerad | Objektidentifiering > Konfigurera > Egenskaper för basfilter | Objektidentifiering > Konfigurera > Valfria filteregenskaper |
Eftersom samma egenskap inte kan finnas i båda listorna, planera uppdelningen noggrant. Egenskaper som definierar vad ett objekt i grunden är hör hemma i baslistan; egenskaper som bara hjälper till att skilja det från liknande objekt hör hemma i den valfria listan.
Så fungerar smart identifiering: Steg-för-steg-processen
Smart identifiering aktiveras endast efter att den inlärda beskrivningen, och någon visuell relationsidentifierare, inte lyckats identifiera ett enskilt objekt. När den har aktiverats, UFT fungerar genom en förutsägbar elimineringsprocess i fyra steg:
- Bygg upp kandidatlistan igen. UFT ignorerar den inlärda beskrivningen och skannar objektets överordnade objekt efter varje objekt som matchar alla basfilteregenskaper.
- Tillämpa den första valfria egenskapen. UFT tar bort alla kandidater som inte matchar den första egenskapen i listan över valfria filteregenskaper.
- Utvärdera resultatet. Om mer än en kandidat återstår, UFT upprepar föregående steg med nästa valfria egenskap. Om ett filter skulle eliminera alla återstående kandidater, UFT hoppar över den egenskapen istället och går vidare till nästa.
- Stanna vid en match. UFT upprepar filtrerings- och utvärderingscykeln tills exakt ett objekt återstår, eller tills det får slut på valfria egenskaper att kontrollera.
Om elimineringsprocessen fortfarande inte kan isolera ett enskilt objekt, UFT återgår till den inlärda beskrivningen plus en ordinal identifierare, såsom index, plats eller skapandetid. När inte ens den kombinationen identifierar objektet pausar körsessionen och visar ett körtidsfel.
Så här aktiverar eller inaktiverar du smart identifiering
Smart identifiering konfigureras per testobjektklass från Verktyg > ObjektidentifieringVälj miljö och objektklass, aktivera Aktivera smart identifiering, Klicka sedan Inställd för att välja Bas- och Valfria filteregenskaper för den klassen. Samma dialogruta låter dig stänga av alternativet för en klass som alltid ska använda sin inlärda beskrivning istället.
Så fungerar smart identifiering (videogenomgång)
Videon nedan går igenom den grundläggande och valfria filterelimineringsprocessen med ett liveexempel.
Klicka här. om videon inte är tillgänglig
Fördelar och nackdelar med att använda smart identifiering
Smart identifiering ökar motståndskraften, men den motståndskraften har en kostnad under körning. Väg båda sidor innan du låter den vara aktiverad som standard över ett helt objektlager.
- ✅ Överlever mindre UI-ändringar: Ett omdöpt attribut eller en flyttad position på sidan bryter inte längre alla skript som berör objektet.
- ✅ Minskar underhåll av objektförråd: Testare lägger mindre tid på att spela in objekt igen efter små frontend-releaser.
- ✅ Syns i resultaten: Varje anrop loggar en varning, så att team kan granska hur ofta reservfunktionen verkligen behövs.
- ⚠️ Långsammare testkörning: Att bygga och filtrera en kandidatlista tar mätbart längre tid än en direkt fastighetsmatchning, och kostnaden mångdubblas över en stor svit.
- ⚠️ Kan maskera verkliga defekter: Om Smart Identification i tysthet hittar ett liknande objekt kan en genuin UI-regression gå obemärkt förbi.
- ⚠️ Behöver regelbunden granskning: Bas- och valfria filteregenskaper behöver fortfarande granskas då och då allt eftersom applikationen utvecklas.
De flesta team låter Smart Identification vara aktiverat för utforskande och lågfrekventa skript, och inaktiverar det sedan selektivt på prestandakritiska objekt när objektets identifieringsegenskaper är stabila.
Ändra objektegenskap för att undvika smart identifiering
Smart Identifications flexibilitet kommer med den körtidskostnad som beskrivs ovan, så många team föredrar att fixa objektidentifieringsegenskaperna själva snarare än att upprepade gånger förlita sig på reservlösningen. Var uppmärksam på två signaler som visar att en egenskapsfix överträffar en körtidsreservlösning: en Smart Identification-varning som visas vid nästan varje körning och ett skript som har blivit märkbart långsammare sedan reservlösningen började aktiveras. Båda pekar på ett objekt vars standardidentifieringsegenskaper inte längre passar applikationen, snarare än ett engångsfel i användargränssnittet. Videon nedan visar fixen på ett riktigt inloggningsformulär.
Klicka här. om videon inte är tillgänglig
Videotranskription: Viktiga slutsatser
- Smart identifiering saktar ner skriptkörningen, vilket inte är önskvärt för stora eller ofta körda programsviter.
- För att undvika det helt, ändra standardegenskaperna för objektidentifiering istället för att förlita dig på reservfunktionen.
- In Objektidentifiering, ta bort ”namn” från de obligatoriska egenskaperna och ersätt det med ”HTML-id” för att göra testet oberoende av namnändringar.
- Registrera samma steg igen när den obligatoriska egenskapslistan har uppdaterats.
- Om namnet senare ändras från ”Skicka” till ”Logga in” körs skriptet nu utan att utlösa smart identifiering.
- På samma sätt, om någon obligatorisk eller hjälpegenskap på ett objekt som testas ändras ofta, ersätt den med en mer stabil egenskap för att hålla skriptkörningen snabb.
- Att justera egenskaper är en färdighet som byggs upp genom erfarenhet; den förbättras ju mer du arbetar med verktyget.
Inaktivera smart identifiering med VBScript
Smart identifiering kan också stängas av för en hel körsession utan att vidröra objektförrådet med hjälp av Inaktivera omspelning med hjälp av algoritm körtidsinställning. Detta är användbart när ett skript ska misslyckas omedelbart på grund av en egenskapsmatchning istället för att tyst återgå till elimineringsprocessen.
' 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
Håll det inaktiverade fönstret så kort som möjligt. Stegen som körs inuti det måste exakt matcha sin inlärda beskrivning, så att eventuell legitim avvikelse i applikationen som testas orsakar ett omedelbart fel snarare än en smidig reservlösning.
Resurser
Ladda ner webbsidorna som används i handledningen ovan för självövning

