Handlinger i QTP/UFT med Eksempel
⚡ Smart opsummering
Handlinger i UFT/QTP Opdel et testscript i logiske, genanvendelige enheder, så testere hurtigere kan bygge, vedligeholde og dele automatisering. Denne side forklarer de tre handlingstyper, hvordan man opdeler og kalder dem, og hvordan man overfører data mellem handlinger.
Hvad er en handling i UFT/QTP?
handlinger in UFT/QTP Opdel en test i "logiske enheder" eller "forretningsprocesser". Hver handling grupperer de trin, der udfører én genkendelig opgave, såsom at logge ind, søge efter en flyrejse eller booke en billet. Handlinger hjælper med at oprette et script, der er mere modulært og effektivt.
Når et script er nyoprettet, består det kun af én handling. Du kan tilføje flere handlinger til dit Micro Focus UFT scriptet i henhold til kravene, og hver tilføjet handling holder sin egen logik og lokale data adskilt fra resten af testen.
Det betaler sig at opdele et langt script i handlinger i det øjeblik, en test skal ændres. En tester kan opdatere én handling, såsom loginsekvensen, uden at røre ved den søge- eller checkout-logik, der findes i andre handlinger. Denne isolering forvandler også handlinger til genbrugelige byggesten, som andre scripts kan kalde i stedet for at registrere de samme trin igen.
Et typisk flyreservationsscript opdeles for eksempel pænt i en Login-handling, en Søg fly-handling og en Book billet-handling. Hver af dem ejer sine egne trin og lokale data, så en tester, der kun skal bekræfte login, slet ikke behøver at registrere eller vedligeholde bookingflowet.
Handlingstyper i UFT/QTPGenanvendelig, ikke-genanvendelig og ekstern
UFT/QTP understøtter tre slags handlinger, og den type du vælger, bestemmer, om en handling kan deles på tværs af scripts eller forbliver privat for den test, hvor den blev oprettet.
| Handlingstype | Hvor den kan køre | Kan redigeres i opkaldstesten |
|---|---|---|
| Genanvendelig | Samme test, flere gange eller enhver anden test | Ja, fra testen der ejer den |
| Ikke-genbrugelig | Kun den test, hvor den blev oprettet, og kun én gang | Ja |
| Ekstern genanvendelig | Kaldet fra en anden test som en delt, gemt handling | Nej, skrivebeskyttet; kun den lokale kopi af datatabellen kan redigeres |
En genanvendelig handling bliver en ekstern handling i det øjeblik, en anden test kalder den i stedet for den test, der ejer den. Eksterne handlinger forbliver skrivebeskyttede i den kaldende test, fordi en delt handling kan bruges af snesevis af scripts på én gang, og at lade hver kalder redigere trinnene ville ødelægge de andre. Du kan stadig parametrisere kaldet og arbejde lokalt med en kopi af dens datatabel.
Som en tommelfingerregel bør du holde en ny handling ikke-genbrugelig, så længe dens logik stadig er specifik for én test. PromoGør det muligt at genbruge det, så snart et andet script kræver de samme trin, og forvent, at det opfører sig som en ekstern, skrivebeskyttet handling i det øjeblik, det andet script rent faktisk kalder det.
Sådan opdeler, kopierer og kalder du handlinger i UFT
Efterhånden som en handling vokser, holdping Hvert trin på ét sted gør scriptet sværere at fejlsøge og genbruge. UFT lader dig opdele en eksisterende handling på to måder, når den bliver uhåndterlig.
- Uafhængig (søskende) opdeling: Den valgte handling opdeles i to separate handlinger, der kører efter hinanden, hver holdtping sin egen lokale datatabel.
- Indlejret (forælder-barn) opdeling: Den valgte handling opdeles i en overordnet handling, hvis sidste trin kalder den anden, underordnede handling, og bevarer en logisk afhængighed mellem de to.
Når handlinger er til stede, UFT tilbyder tre måder at bringe en handling ind i en test fra indsatte menu:
- Indsæt opfordring til ny handling: Opretter en frisk, tom handling i den aktuelle test.
- Indsæt opfordring til handling: Kopierer en eksisterende handling i sin helhed, inklusive kontrolpunkter, parametrisering og dens faneblad Datatabel, ind i den kaldende test. Kopien er fuldstændig uafhængig, så redigeringer påvirker eller påvirkes aldrig af originalen. Du kan kopiere både genbrugelige og ikke-genbrugelige handlinger.
- Indsæt opfordring til eksisterende handling: Indsætter et skrivebeskyttet kald til en genanvendelig handling, der er gemt i en anden test. Det kan kun ændres i den test, hvor det blev oprettet, hvilket holder alle kaldere synkroniseret og gør store testpakker nemmere at vedligeholde.
Hvert kald kompileres ned til et RunAction udtalelse i ekspertvisningen:
' Calls Action2, which is stored in Test2, running it for one iteration RunAction "Action2[Test2]", oneIteration
Handlingen kører så mange gange, som dens handlingskaldsegenskaber angiver. Hvis f.eks. Handling2 er indstillet til at køre på hver iteration af Test2's datatabel, men kaldet Handling1 i Test1 kun kører én gang, udføres Handling2 stadig kun én gang, fordi selve kaldet udløses én gang.
💡 Tip: Når en test indeholder flere handlinger, skal du åbne Testflow ruden i menuen Vis for at trække og omarrangere dem. Dette ændrer den rækkefølge, de UFT udfører handlingerne uden at redigere trinnene i en enkelt handling.
Videoen nedenfor bygger på det femtrins login-script, der blev oprettet i tidligere vejledninger til Flyreservation og gennemgår oprettelse, opdeling og kald af handlinger fra start til slut. Det er den længste video i denne UFT/QTP tutorial-serie, så det er en god idé at tage noter, mens du ser.
Klik link. hvis videoen ikke er tilgængelig
Sådan overfører du parametre og gemmer outputværdier mellem handlinger
Ud over at kalde en handling, skal de fleste rigtige scripts flytte data ind i den og læse et resultat ud igen. UFT giver hver handling sine egne input- og outputparametre plus flere måder at bevare det, den returnerer.
Overførsel af parametre til og fra en handling
Ligesom funktioner eller metoder I programmeringssprog kan en handling definere input og output parametreDenne parameter har ingen relation til Test dataparameterisering dækket tidligere; parametre her tilhører selve handlingen, ikke en datatabelkolonne. Konfigurer dem fra Rediger > Handling > Handlingsegenskabereller ved at højreklikke på handlingen i nøgleordsvisningen. Send værdier på kaldet ved hjælp af denne syntaks:
' Passes an input value and captures the action's output into myResult RunAction "Action1", oneIteration, "testuser", myResult
Lagring af en handlings outputværdi
Afhængigt af hvad resten af scriptet har brug for, kan du gemme en handlings returnerede værdi et af tre steder:
- En variabel:
RunAction "Action1", oneIteration, "testuser", myResultlagrer outputtet direkte imyResult. - An miljøvariabel: opret en brugerdefineret variabel under Fil > Indstillinger > Miljø, skriv derefter
RunAction "Action1", oneIteration, "testuser", Environment("env_var"). - En datatabelkolonne:
RunAction "Action1", oneIteration, "testuser", DataTable("A", dtGlobalSheet)skriver resultatet direkte ind i det globale ark.
Globale og lokale datablade
Handlinger læser og skriver testdata via to typer ark. Globalt datablad er unik for hele testen; enhver handling kan læse fra den eller skrive til den, og den kaldes altid "Global". Lokalt datablad er unik pr. handling, er opkaldt efter den handling, og kun dens egen handling kan læse eller skrive den.
Afslutning af en handling og kontrol af iteration
Når et trin skal stoppe en handling tidligt i stedet for at lade den køre til færdiggørelse, UFT giver fire udsagn:
ExitAction— stopper kun den aktuelle handling.ExitActionIteration— stopper den aktuelle iteration af handlingen og går videre til den næste.ExitRun— stopper hele testkørslen øjeblikkeligt.ExitGlobalIteration— stopper den nuværende globale test-iteration og går videre til den næste.
Mens du udfører en UFT/QTP script der bruger handlinger, skal du huske på globale iterationer og lokale iterationer, da begge påvirker, hvor mange gange en handling rent faktisk kører. Du kan ændre, hvor ofte en kaldt handling gentages ved at åbne Egenskaber for handlingskald > Kør fanen og indstilling af iterationstilstanden der.
⚠ Almindelig faldgrube: En kaldet handling, der er indstillet til at køre ved hver lokal iteration, men som udløses fra en overordnet handling, der kun kører én gang, vil stadig udføres én gang. Bekræft både den overordnede handlings globale iterationsantal og den underordnede handlingskaldsegenskaber, før du antager, at en kaldet handling gentages.

