Műveletek itt: QTP/UFT példával

⚡ Okos összefoglaló

Műveletek itt: UFT/QTP oszd fel a tesztszkriptet logikus, újrafelhasználható egységekre, hogy a tesztelők gyorsabban építhessék fel, karbantarthassák és megoszthassák az automatizálást. Ez az oldal ismerteti a három művelettípust, a felosztásukat és meghívásukat, valamint az adatok műveletek közötti átadását.

  • 🧩 Meghatározás: Egy művelet a tesztelési lépések halmazát egyetlen moduláris, újrafelhasználható egységbe csoportosítja egy UFT/QTP szkripteket.
  • 🔁 Újrafelhasználható műveletek: Ugyanazt a műveletet hívja meg többször, ugyanabban a tesztben vagy bármely más tesztből.
  • 🔒 Nem újrafelhasználható műveletek: Csak egyszer futtassa őket, és csak abban a tesztben, ahol létrehozta őket.
  • 🌐 Külső fellépések: Egy újrafelhasználható művelet írásvédett külsővé válik, amikor egy másik teszt meghívja.
  • ✂️ Hasítás: Bontson fel egy nagy műveletet független testvérműveletekre vagy beágyazott szülő-gyermek párokra.
  • 📞 Hívóműveletek: Új művelet, egy művelet másolatának vagy egy meglévő művelet meghívásának beszúrása.
  • 📤 paraméterek: Adjon át bemeneti és kimeneti értékeket a műveletek között a RunAction utasítás használatával.
  • 🗂️ Adatlapok: A tesztszintű adatokhoz a Globális lapot, a privát adatokhoz pedig az egyes műveletek Lokális lapját használd.

Mi az a cselekvés a UFT/QTP?

Hozzászólások in UFT/QTP ossz fel egy tesztet „logikai egységekre” vagy „üzleti folyamatokra”. Minden művelet azokat a lépéseket csoportosítja, amelyek egy felismerhető feladatot hajtanak végre, például bejelentkezést, repülőjegy keresését vagy jegyfoglalást. A műveletek segítenek egy modulárisabb és hatékonyabb szkript létrehozásában.

Amikor egy szkriptet újonnan hoznak létre, az csak egyetlen műveletből áll. További műveleteket is hozzáadhat a Micro Focushoz. UFT szkriptet a követelményeknek megfelelően, és minden hozzáadott művelet a saját logikáját és a helyi adatait elkülönítve tartja a teszt többi részétől.

Egy hosszú szkript műveletekre bontása akkor kifizetődő, amikor egy tesztnek változtatnia kell. A tesztelő frissíthet egy műveletet, például a bejelentkezési sorrendet, anélkül, hogy megérintené a többi műveletben található keresési vagy kijelentkezési logikát. Ez az elkülönítés a műveleteket újrafelhasználható építőelemekké is alakítja, amelyeket más szkriptek meghívhatnak ahelyett, hogy ugyanazokat a lépéseket újra rögzítenék.

Egy tipikus repülőjegy-foglalási szkript például szépen felosztható egy bejelentkezési, egy járatkeresési és egy jegyfoglalási műveletre. Mindegyik saját lépésekkel és helyi adatokkal rendelkezik, így egy tesztelőnek, akinek csak a bejelentkezést kell ellenőriznie, egyáltalán nem kell rögzítenie vagy karbantartania a foglalási folyamatot.

Művelettípusok a UFT/QTPÚjrafelhasználható, nem újrafelhasználható és külső

UFT/QTP háromféle műveletet támogat, és a választott típus határozza meg, hogy egy művelet megosztható-e a szkriptek között, vagy privát marad-e a létrehozás helyén álló teszt számára.

Művelet típusa Hol futhat Szerkeszthető a hívástesztben
Többször Ugyanaz a teszt, többször, vagy bármilyen más teszt Igen, a teszt alapján, amelyik birtokolja
Nem újrafelhasználható Csak az a teszt, ahol létrehozták, és csak egyszer Igen
Külső újrafelhasználható Egy másik tesztből megosztott, tárolt műveletként hívva Nem, csak olvasható; csak a helyi adattábla másolata szerkeszthető

Egy újrafelhasználható műveletből külső fellépés abban a pillanatban, amikor egy másik teszt hívja meg ahelyett, amelyik birtokolja. A külső műveletek csak olvashatók maradnak a hívó tesztben, mivel egy megosztott műveletet egyszerre több tucat szkript is használhat, és ha minden hívó szerkeszthetné a lépéseket, az a többi működését rontaná. Továbbra is paraméterezheti a hívást, és helyben dolgozhat az adattáblájának egy másolatával.

Ökölszabályként egy új műveletet ne használjunk fel újra, amíg a logikája még egyetlen tesztre jellemző. PromoTedd újrafelhasználhatóvá, amint egy második szkriptnek ugyanazokra a lépésekre van szüksége, és várd el, hogy külső, csak olvasható műveletként viselkedjen, amint a második szkript ténylegesen meghívja.

Műveletek felosztása, másolása és meghívása a következőben: UFT

Ahogy egy cselekvés növekszik, tartsd megping minden lépés egy helyen megnehezíti a szkript hibakeresését és újrafelhasználását. UFT lehetővé teszi egy meglévő művelet kétfelé osztását, ha az nehezen kezelhetővé válik.

  • Független (testvér) válás: A kiválasztott művelet két különálló műveletre oszlik, amelyek egymás után futnak, mindegyik megtartvaping saját helyi adattáblája.
  • Beágyazott (szülő-gyermek) felosztás: A kiválasztott művelet egy szülő műveletre bomlik, amelynek utolsó lépése meghívja a második, gyermek műveletet, megőrizve a kettő közötti logikai függőséget.

Ha már léteznek cselekvések, UFT három módot kínál arra, hogy egy műveletet bevigyünk egy tesztbe a betétlap menü:

  • Új műveletre való hívás beszúrása: Létrehoz egy friss, üres műveletet az aktuális teszten belül.
  • Művelet másolására való felszólítás beszúrása: Egy meglévő műveletet teljes egészében átmásol a hívó tesztbe, beleértve az ellenőrzőpontokat, a paraméterezést és az Adattábla fület is. A másolat teljesen független, így a módosítások soha nem befolyásolják az eredetit, és az sem befolyásolja őket. Újrafelhasználható és nem újrafelhasználható műveleteket is másolhat.
  • Hívás beszúrása meglévő műveletre: Egy másik tesztben tárolt, újrafelhasználható művelethez beszúr egy írásvédett hívást. Ez a hívás csak abban a tesztben módosítható, ahol létrehozták, így minden hívó szinkronban marad, és a nagy tesztkészletek karbantartása is könnyebb.

Minden hívás egy RunAction nyilatkozat a szakértői véleményben:

' Calls Action2, which is stored in Test2, running it for one iteration
RunAction "Action2[Test2]", oneIteration

A művelet annyiszor fut le, ahányszor az Akcióhívás tulajdonságai megadják. Például, ha az Akció2 úgy van beállítva, hogy a Teszt2 adattáblájának minden iterációján fusson, de a Teszt1-ben lévő Akció1 hívása csak egyszer fut le, az Akció2 továbbra is csak egyszer fut le, mivel maga a hívás egyetlen alkalommal indul el.

💡 Tipp: Ha egy teszt több műveletet tartalmaz, nyissa meg a Tesztfolyamat ablaktáblát a Nézet menüből, hogy áthúzással és átrendezéssel megjeleníthesse őket. Ez megváltoztatja a sorrendet, amelyben UFT végrehajtja a műveleteket anélkül, hogy szerkesztené az egyes műveleteken belüli lépéseket.

Az alábbi videó a korábbi oktatóanyagokban létrehozott ötlépéses bejelentkezési szkriptre épül. Repülési foglalás és végigvezeti a műveletek létrehozásán, felosztásán és meghívásán. Ez a leghosszabb videó ebben a sorozatban. UFT/QTP oktatóanyag-sorozat, ezért hasznos jegyzetelni nézés közben.

Kattints itt ha a videó nem érhető el

Paraméterek átadása és kimeneti értékek tárolása műveletek között

Egy művelet meghívása mellett a legtöbb valódi szkriptnek adatokat kell belehelyeznie, majd vissza kell olvasnia az eredményt. UFT minden műveletnek saját bemeneti és kimeneti paramétereket ad, valamint számos módot a visszaadott értékek megőrzésére.

Paraméterek átadása egy műveletnek és egy művelettől

Csakúgy, mint függvények vagy metódusok programozási nyelvekben egy művelet meghatározhatja a bemenetet és a kimenetet paraméterekEnnek a paraméternek nincs köze a következőhöz: Tesztadatok paraméterezése korábban már tárgyaltuk; a paraméterek itt magához a művelethez tartoznak, nem pedig egy adattábla oszlopához. Konfigurálja őket a következőből: Szerkesztés > Művelet > Művelet tulajdonságai, vagy a Kulcsszó nézetben a műveletre kattintva a jobb gombbal. Az értékeket a hívás során a következő szintaxissal adhatja át:

' Passes an input value and captures the action's output into myResult
RunAction "Action1", oneIteration, "testuser", myResult

Művelet kimeneti értékének tárolása

Attól függően, hogy a szkript többi részének mire van szüksége, a művelet visszaadott értékét három helyen tárolhatja:

  • Egy változó: RunAction "Action1", oneIteration, "testuser", myResult a kimenetet közvetlenül a myResult.
  • An környezeti változó: hozzon létre egy felhasználó által definiált változót a Fájl > Beállítások > Környezet, majd írd RunAction "Action1", oneIteration, "testuser", Environment("env_var").
  • Adattábla oszlopa: RunAction "Action1", oneIteration, "testuser", DataTable("A", dtGlobalSheet) az eredményt közvetlenül a globális munkalapra írja.

Globális és helyi adatlapok

A műveletek kétféle munkalapon keresztül olvasnak és írnak tesztadatokat. Globális adatlap egyedi a teljes tesztre vonatkozóan; bármilyen művelet olvashat belőle vagy írhat bele, és mindig „Globális” néven szerepel. Helyi adatlap műveletenként egyedi, az adott műveletről kapta a nevét, és csak a saját művelete tudja olvasni vagy írni.

Műveletből való kilépés és az iteráció vezérlése

Amikor egy lépésnek idő előtt le kell állítania egy műveletet ahelyett, hogy hagyná befejeződni, UFT négy állítást tesz:

  • ExitAction — csak az aktuális műveletet állítja le.
  • ExitActionIteration — leállítja a művelet aktuális iterációját, és a következőre ugrik.
  • ExitRun — azonnal leállítja a teljes tesztfutást.
  • ExitGlobalIteration — leállítja az aktuális globális teszt iterációt és a következőre ugrik.

Végrehajtás közben a UFT/QTP forgatókönyv műveleteket használó alkalmazásoknál tartsa szem előtt a globális és a lokális iterációkat, mivel mindkettő befolyásolja, hogy egy művelet hányszor fut le valójában. A meghívott művelet ismétlődésének gyakoriságát a következő megnyitásával módosíthatja: Művelethívás tulajdonságai > Futtatás fülre, és ott állíthatod be az iterációs módot.

⚠ Gyakori buktató: Egy meghívott művelet, amely minden lokális iteráción fut, de egy csak egyszer futó szülő által aktivált, továbbra is csak egyszer fog végrehajtódni. Mielőtt feltételeznénk, hogy egy meghívott művelet ismétlődik, ellenőrizze mind a szülő globális iterációinak számát, mind a gyermek művelethívási tulajdonságait.

GYIK

Egy művelet egy beépített UFT egy saját objektumtárral és adattáblával rendelkező funkció, amely lehet újrafelhasználható vagy nem. funkció sima VBScript, mindig újrafelhasználható, és sem saját objektumtárral, sem saját adattáblával nem rendelkezik.

Igen. Nyissa meg a művelet tulajdonságait, és bármikor kapcsolja ki az újrafelhasználható jelzőt. Ha egy korábban újrafelhasználható műveletet nem újrafelhasználhatóként jelöl meg, miközben más tesztek még mindig meghívják, akkor a hívó tesztek sikertelenek lesznek, és UFT figyelmeztetést jelenít meg, amíg a hívásokat el nem távolítják.

A műveletek a teszttel együtt .mtr/.mts műveletmappákként kerülnek mentésre, nem pedig önálló szkriptfájlokként. Ezzel szemben a függvénykönyvtárak különálló .vbs vagy .qfl fájlokként kerülnek mentésre, amelyeket bármely teszt társíthat és újra felhasználhat.

Igen. A mesterséges intelligencia által támogatott teszttervező eszközök képesek beolvasni egy rögzített folyamatot, és logikai töréspontokat, például bejelentkezést, keresést és kijelentkezést javasolni lehetséges műveletekként. A tesztelőnek a véglegesítés előtt meg kell győződnie arról, hogy a felosztás megfelel-e a valós újrafelhasználási igényeknek.

Segít. Az önjavító objektumazonosítás újracsatolja az áthelyezett vagy átnevezett vezérlőket egy műveleten belül ahelyett, hogy azonnal meghibásodna, ami csökkenti a karbantartási terhelést az újrafelhasználható és külső műveleteknél, amelyeket sok szkript megosztott. RevNézd meg a meggyógyult tárgyakat, mielőtt teljesen megbíznál bennük.

Foglald össze ezt a bejegyzést a következőképpen: