Дії в QTP/UFT з прикладом
⚡ Розумний підсумок
Дії в UFT/QTP розділити тестовий скрипт на логічні, повторно використовувані блоки, щоб тестувальники могли швидше створювати, підтримувати та ділитися автоматизацією. На цій сторінці пояснюється три типи дій, як їх розділяти та викликати, а також як передавати дані між діями.

Що таке дія в UFT/QTP?
Дії in UFT/QTP розділити тест на «логічні одиниці» або «бізнес-процеси». Кожна дія об’єднує кроки, які виконують одне впізнаване завдання, таке як вхід у систему, пошук рейсу або бронювання квитка. Дії допомагають створити більш модульний та ефективний сценарій.
Коли скрипт створюється щойно, він складається лише з однієї дії. Ви можете додати більше дій до свого Мікрофокусу. UFT скрипт відповідно до вимог, і кожна додана дія зберігає власну логіку та локальні дані окремо від решти тесту.
Розбиття довгого скрипта на дії виправдовує себе в той момент, коли тест потрібно змінити. Тестер може оновити одну дію, таку як послідовність входу, не торкаючись логіки пошуку чи оформлення замовлення, яка присутня в інших діях. Така ізоляція також перетворює дії на багаторазові будівельні блоки, які можуть викликати інші скрипти, замість того, щоб записувати ті самі кроки знову.
Наприклад, типовий скрипт бронювання авіаквитків чітко поділяється на дії «Вхід», «Пошук авіаквитків» та «Забронювання квитків». Кожна з них має власні кроки та локальні дані, тому тестувальнику, якому потрібно лише підтвердити вхід, взагалі не потрібно записувати чи підтримувати процес бронювання.
Типи дій у UFT/QTPБагаторазові, одноразові та зовнішні
UFT/QTP підтримує три типи дій, і вибраний вами тип визначає, чи можна використовувати дію спільно з іншими скриптами, чи вона залишається приватною для тесту, де вона була створена.
| Тип дії | Де це може працювати | Можна редагувати в тесті виклику |
|---|---|---|
| Багаторазовий | Той самий тест, кілька разів або будь-який інший тест | Так, з тесту, якому він належить |
| Багаторазового використання | Тільки тест, у якому його було створено, і лише один раз | Так |
| Зовнішній багаторазовий | Викликається з іншого тесту як спільна, збережена дія | Ні, лише для читання; редагувати можна лише його локальну копію таблиці даних |
Дія, яку можна використовувати повторно, стає зовнішня дія у той момент, коли інший тест викликає його замість тесту, якому він належить. Зовнішні дії залишаються доступними лише для читання у викликаючому тесті, оскільки спільна дія може використовуватися десятками скриптів одночасно, і дозвіл кожному викликаючому стороні редагувати кроки порушить роботу інших. Ви все ще можете параметризувати виклик і працювати локально з копією його таблиці даних.
Як правило, нова дія має бути непридатною для повторного використання, поки її логіка залишається специфічною для одного тесту. Promoперетворіть його на повторне використання, щойно другому скрипту знадобляться ті самі кроки, і очікуйте, що він поводитиметься як зовнішня дія лише для читання в момент, коли другий скрипт фактично його викличе.
Як розділяти, копіювати та викликати дії в UFT
У міру зростання дії, тримайтеping кожен крок в одному місці ускладнює налагодження та повторне використання скрипта. UFT дозволяє розділити існуючу дію двома способами, коли вона стає громіздкою.
- Незалежне (сімейне) розщеплення: Вибрана дія розділяється на дві окремі дії, які виконуються одна за одною, кожна з якихping власну локальну таблицю даних.
- Вкладений (батьківський-дитинний) поділ: Вибрана дія поділяється на батьківську дію, останній крок якої викликає другу, дочірню дію, зберігаючи логічну залежність між ними.
Як тільки дії існують, UFT пропонує три способи перенести дію в тест з Insert меню:
- Вставити заклик до нової дії: Створює нову, порожню дію всередині поточного тесту.
- Вставити виклик до копії дії: Копіює існуючу дію повністю, включаючи контрольні точки, параметризацію та вкладку «Таблиця даних», у викликаючий тест. Копія є повністю незалежною, тому редагування ніколи не впливає на оригінал і не залежить від нього. Ви можете копіювати як дії, що використовуються повторно, так і дії, що не використовуються повторно.
- Вставити заклик до існуючої дії: Вставляє виклик лише для читання до дії повторного використання, що зберігається в іншому тесті. Його можна змінити лише в тому тесті, де його було створено, що забезпечує синхронізацію кожного викликаючого елемента та спрощує підтримку великих наборів тестів.
Кожен виклик компілюється до RunAction заява в Експертній точці зору:
' Calls Action2, which is stored in Test2, running it for one iteration RunAction "Action2[Test2]", oneIteration
Дія виконується стільки разів, скільки зазначено у властивостях виклику дії. Наприклад, якщо дію Action2 налаштовано на виконання на кожній ітерації таблиці даних Test2, але викликаюча функція Action1 у Test1 виконується лише один раз, Action2 все одно виконується лише один раз, оскільки сам виклик запускається один раз.
💡 Порада: Якщо тест містить кілька дій, відкрийте Тестовий потік панель у меню «Вид», щоб перетягнути та змінити їх порядок. Це змінює послідовність, у якій UFT виконує дії без редагування кроків всередині будь-якої окремої дії.
Відео нижче базується на п'ятиетапному сценарії входу, створеному в попередніх навчальних посібниках для Бронювання рейсів і повністю описує створення, розділення та виклик дій. Це найдовше відео в цьому UFT/QTP серія навчальних посібників, тому корисно робити нотатки під час перегляду.
Натисніть тут якщо відео недоступне
Як передавати параметри та зберігати вихідні значення між діями
Окрім виклику дії, більшості реальних скриптів потрібно переміщувати в неї дані та зчитувати результат. UFT надає кожній дії власні вхідні та вихідні параметри, а також кілька способів збереження поверненого значення.
Передача параметрів до та з дії
Так само, як функції або методи У мовах програмування дія може визначати вхідні та вихідні дані параметриЦей параметр не має жодного відношення до Параметризація тестових даних розглянуто раніше; параметри тут належать до самої дії, а не до стовпця таблиці даних. Налаштуйте їх з Редагувати > Дія > Властивості діїабо клацнувши правою кнопкою миші на дії в області перегляду ключових слів. Передайте значення у виклику, використовуючи цей синтаксис:
' Passes an input value and captures the action's output into myResult RunAction "Action1", oneIteration, "testuser", myResult
Зберігання вихідного значення дії
Залежно від того, що потрібно решті скрипта, ви можете зберігати повернене значення дії в одному з трьох місць:
- Змінна:
RunAction "Action1", oneIteration, "testuser", myResultзберігає вихід безпосередньо вmyResult. - An змінна оточення: створити користувацьку змінну в розділі Файл > Налаштування > Середовище, тоді напишіть
RunAction "Action1", oneIteration, "testuser", Environment("env_var"). - Стовпець таблиці даних:
RunAction "Action1", oneIteration, "testuser", DataTable("A", dtGlobalSheet)записує результат безпосередньо в глобальний аркуш.
Глобальні та локальні інформаційні листи
Дії читають та записують тестові дані через два типи аркушів. Глобальний інформаційний лист унікальний для всього тесту; будь-яка дія може зчитувати з нього або записувати в нього дані, і він завжди має назву «Глобальний». Локальний інформаційний лист унікальний для кожної дії, названий на честь цієї дії, і лише його власна дія може його читати або записувати.
Вихід з дії та керування ітерацією
Коли крок має зупинити дію раніше, а не дозволити їй виконатися до завершення, UFT надає чотири твердження:
ExitAction— зупиняє лише поточну дію.ExitActionIteration— зупиняє поточну ітерацію дії та переходить до наступної.ExitRun— негайно зупиняє весь тестовий запуск.ExitGlobalIteration— зупиняє поточну ітерацію глобального тестування та переходить до наступної.
Під час виконання a UFT/QTP сценарій що використовує дії, пам’ятайте про глобальні та локальні ітерації, оскільки обидві впливають на те, скільки разів дія фактично виконується. Ви можете змінити частоту повторення викликаної дії, відкривши Властивості виклику дії > Виконати вкладку та встановлення там режиму ітерації.
⚠ Поширена помилка: Викликана дія, яка налаштована на виконання на кожній локальній ітерації, але запускається батьківським об'єктом, який виконується лише один раз, все одно виконається один раз. Перевірте як глобальну кількість ітерацій батьківського об'єкта, так і властивості виклику дії дочірнього об'єкта, перш ніж припускати, що викликана дія буде повторюватися.
