Міністерство освіти і науки України
Національний університет „Львівська політехніка”
Кафедра ЕОМ
Звіт
з лабораторної роботи №7
з дисципліни
“ Тестування програмних засобів ”
Тема: Засоби автоматизованого тестування програмного забезпечення STAF та STAX
Мета: Зробити огляд STAF фреймворку та його компоненти STAX.
STAF
STAF(Software Testing Automation Framework) – це фреймоврк призначений для автоматизованого тестування ПЗ. Він розроблений компанією IBM з відкритим кодом і базується на ідеї багаторазового використання компонентів. Він призначений для того щоб зробити простішим створення автоматизованих тест-наборів. STAF призначений для підвищення ефективності, продуктивності і якості тестування. Він включає створення автоматизованих тестових випадків, управління та автоматизацію тестового середовища.
Набір машин на яких встановлений STAF називається Середовищем STAF.
STAF середовище працює як Р2Р мережа. Тут немає клієнт-серверної архітектури(немає центру).
Рис 1. Структура STAF середовища
При розробці STAF були виконані слідуючі вимоги:
мінімізація використання ресурсів системи;
простота у використані;
висока масштабованість – простота додавання і вилучення компонентів STAF.
Складові частини STAF
STAFProc
STAFProc – це процес, який виконується на так званій машині STAF Клієнт(STAF Client), яка приймає запити і маршрутизує їх до відповідних сервісів. Запити можуть бути від локальної машини, або від іншого STAF Клієнта.
STAF виконується як процес-демон(STAFProc) на кожній із систем. Тому, якщо потрібно запустити STAF на 5 тестових машинах, і на своїй локальній машині, слід встановити STAF на всіх 6 машинах. Потім потрібно запустити на кожній машині STAFProc. Через STAFProc відбувається мережна взаємодія та взаємодія з програмою, яку тестують.
STAF Робоче завантаження
Робоче навантаження – це набір процесів, які виконуються на багатьох комп’ютерах. Це може бути єдиний процес на одній машині, або може бути комплексним, коли багато процесів працюють разом на багатьох машинах комуні куючи між собою для вирішення великого, спільного завдання. STAF був розроблений, щоб створювати та автоматизувати роботу робочих навантажень всіх розмірів.
В STAF використовуються імена машин для ідентифікації систем в STAF середовищі. По замовчуванню іменами машин є TCP/IP хост або ІР адреса машини.
Так як багато екземплярів STAF може бути запущено на одній машині, використовується також ім'я екземпляру STAF для ідентифікації конкретного екземпляру. Ім'я екземпляру можна задати встановленням значення змінної оточення STAF_INSTANCE_NAME. Значенням по замовчуванню є “STAF”.
STAF сервіси
STAF сервіси – це компонент багаторазового використання в STAF. Вони і забезпечують всю функціональність STAF. Кожен сервіс надає певний набір функціональності (логування, передача файлів, запуск процесів і т. д. ) і визначає запити, які він може обробляти. Вони можуть бути внутрішніми, в такому випадку виконавчий код сервісу знаходиться в межах STAFProc. Служби також можуть бути зовнішніми, тоді виконавчий код служби знаходиться за межами STAFProc, наприклад в Java.
Виконавчий код внутрішніх сервісів знаходиться в межах видимості STAFProc, це означає, що вони завжди доступні і завжди мають фіксовані імена.
Таблиця 1. Внутрішні сервіси STAF
Сервіс
Опис
Загальна назва
DIAG
Надає послуги діагностики
Internal ("DIAG")
DELAY
Надає засоби для затримки на певну кількість часу
Internal ("DELAY")
ECHO
Забезпечує «ехо» при відправці повідомлення.
Internal ("ECHO")
FILE SYSTEM
Дозволяє отримувати і копіювати файли по мережі
Internal ("FS")
HANDLE
Надає інформацію про існуючі STAF дескриптори
Internal ("HANDLE")
HELP
Надає довідку по кодам помилок STAF
Internal ("HELP")
MISC
Опрацьовує різноманітні команди, наприклад відображення запущеної версії STAF
Internal ("MISC")
PING
Використовується для перевірки з’єднання між комп’ютерами
Internal ("PING")
PROCESS
Дозволяє зробити запуск, зупинку та чергування процесів
Internal ("PROCESS")
QUEUE
Надає мережеві механізми взаємодії між процесорами для програм STAF
Internal ("QUEUE")
SEMAPHORE
Надає засоби синхронізації процесів – семафори
Internal ("SEM")
SERVICE
Дозволяє переглядати список доступних сервісів на комп’ютері і запити, які були підтверджені
Internal ("SERVICE")
SHUTDOWN
Надає засоби для завершення STAF
Internal ("SHUTDOWN")
TRACE
Забезпечує відстеження інформації про сервіси STAF
Internal ("TRACE")
TRUST
Інтерфейси з безпекою STAF
Internal ("TRUST")
VARIABLE
Надає методи для підтримання конфігурації і даних (змінних) в процесі виконання
Internal ("VAR")
Оскільки зовнішні служби знаходяться поза STAF, то вони мусять бути зареєстровані в STAF в STAF.cfg файлі з лаштуваннями. Ім’я сервісу задається при його реєстрації.
Якщо необхідно, то можна встановити зовнішні STAF сервіси на одній машині тестового середовища, а інші машини можуть через запити звертатися до цієї машини, таким чином немає потреби встановлювати і реєструвати зовнішній сервіс на всіх машинах STAF середовища. В табл. 2 подано список зовнішніх STAF сервісів.
Таблиця 2. Зовнішні сервіси STAF
Сервіс
Опис
Де знаходиться
CRON
Виклик в сервісах STAF на заданий інтервал часу
External (Java)
EMAIL
Дозволяє відправляти повідомлення електронної пошти
External (Java)
EVENT
Забезпечує публікацію/підписку системи сповіщення
External (Java)
EVENTMANAGER
Дозволяє викликати сервіси STAF, коли відбувається певна подія
External (Java)
HTTP
Дозволяє робити HTTP запити, які можуть групуватися в сесії
External (Java)
LOG
Надає повнофункціональну можливість логування
External (C++)
MONITOR
Дозоляє опублікувати поточний статус виконання тесту для інших сервісів
External (C++)
RESOURCE POOL
Дозволяє управляти винятковим доступом до набору елементів
External (C++)
STAX
Надає виконавчий «двигун» на базі XML
External (Java)
ZIP
Надає засоби для різноманітних архівів
External (C++)
STAF сервіси також можуть бути делеговані на іншу машину в STAF середовищі. В цьому випадку, якщо запит зроблений сервісу на локальній STAF машині, тоді він автоматично делегується до машини, якій потрібен цей сервіс.
STAF завантажувач сервісів – це зовнішній сервіс, метою якого є завантаження сервісу на вимогу. Це дозволяє сервісам бути завантаженими лише коли на них було зроблено запит, тому вони на завантажують пам’ять без необхідності. Також він дозволяє динамічну реєстрацію сервісів, при запитах до них, тому користувачу немає потреби редагувати конфігураційний файл, щоб зареєструвати сервіс.
Коли зроблено запит на неіснуючий сервіс, тоді STAF викличе кожний завантажувач сервісів чи є в них відповідний сервіс, доки не знайде сервіс чи доки не закінчиться список завантажувачів. Якщо він закінчиться буде повернуто стандартну відповідь RC:2. Іншими словами, запит буде надіслано сервісу, який щойно додався. Стандартний завантажувач сервісів вмонтовано в STAF він може динамічно завантажувати LOG, MONITOR, RESPOOL і ZIP сервіси.
Користувач має можливість писати власні сервіси і монтувати їх в STAF. Їх можна писати використовуючи JAVA чи С++.
Автентифікатори – це спеціальні зовнішні сервіси метою яких є автентифікація користувача з метою надання йому рівня доступу користувача, який може бути використано як додатковий чи взаємозамінний до рівня доступу машини. Автентифікатор – спеціальний сервіс, який приймає запити автентифікації. Користувач не може напряму посилати такі запити, вони йдуть не напряму, а через сервіс дескриптора.
На даний момент єдиним мережний інтерфейсом STAF є TCP/IP. Проте STAF надає можливість підключити інтерфейси, які називаються провайдерами з’єднання. Тому користувач може створити свій провайдер з’єднання, який комуні кує через потрібний користувачу протокол (SLL, Serial Line, NetBIOS чи SNA). Провайдери з’єднання є залежними від платформи – оскільки основані на С++.
Провайдери з’єднання підтримують IPv4 і IPv6.
STAF запити сервісів та їх обробка
STAF сервіси можна використовувати посилаючи STAF запити до них. STAF запит — це просто стрічка з описом операції, яку слід виконати. STAF запити можна посилати сервісам на локальній машині чи на віддаленій машині, яка знаходиться в середовищі STAF. STAFProc демон обробляє вхідні і вихідні запити.
Запити STAF є в бібліотеках багатьох мов програмування, проте вони також бути надіслані з командної стрічки (через STAF executable).
Проте, посилання запитів з командної стрічки має свої обмеження. Якщо посилати запити з командної стрічки, для кожного запиту генерується унікальний дескриптор. Коли запит завершено – дескриптор стає неактивним в STAF, тому якщо буде потрібно послати запит, пов’язаний з попереднім запитом, то це буде неможливо.
Тому запити з командної стрічки використовуються, коли необхідно отримати інформацію від STAF сервісу. Цей дескриптор буде активним доти, доки програма не вилогується з STAF, або не завершиться процес.
Перед тим, як посилати запити STAF, програмі слід зареєструватися в STAF. STAF надасть програмі унікальний дескриптор, по якому програма може надсилати безліч запитів STAF.
Запити, які надсилаються в STAF та результат, який надходить із STAF представляються у вигляді рядків. Рядки можуть містити довільну множину символів, включаючи NULL (нуль, 0) символ. Коли в середовищі використовується різноманітні множини кодувань, STAF перекодує запит і відповідь в потрібне кодування. Це забезпечує, що запит і результат у вигляді рядка символів будуть правильно сприйняті одержувачем.
Загалом, використання сервісів STAF, не повинно виникати ніяких «подорожуючих» проблем. «Подорожуючих» в даному контексті означає, що всі запити відбуваються для одної системи із рідним кодуванням, навіть якщо запити відправляються і дані зберігаються. Однак, якщо відправляються запит на логування даних з Японським кодуванням до будь-якої системи, а потім чергові запити до даної системи з англійським кодуванням, ви не будете отримувати коректні дані, так як це не вірно.
STAF гарантує, що всі рядки(стрічки) символів будуть містити тільки символи ASCII-7 і будуть збережені при трансляції з/до іншої системи кодування.
STAF псевдонім машини
STAF надає можливість задати ім’я машини за допомогою конфігураційного оператора MACHINENICKNAME. Це дозволить перевизначити ім’я машини яке встановлене в змінні STAF/Config/Machine по замовчуванню. В першу чергу це впливає на дані, які записуються такими сервісами STAF як LOG і MONITOR, які зберігають дані на комп’ютері, на якому вони запущені використовуючи системну змінну STAF/Config/MachineNickname, як частину шляху до каталогу, коли створюються основні журнальні дані та дані монітору. Зміна STAF/Config/MachineNickname дозволяє покращити рівень управління даними.
Ім’я комп’ютера не використовується для спілкування з іншими системами і не робить ніякого впливу на рівні довіри.
Ця опція використовується в обох під’єднаному та не під’єднаному режимах(не під’єднаний означає те, що не використовується мережний інтерфейс).
Синтаксис команди:
MACHINENICKNAME <Nickname>
<Nickname> – ім’я комп’ютера, яке ми хочемо використати. Ім’я є чутливе до регістру.
STAF дескриптори
Дескриптор — це унікальний ідентифікатор, що використовується при обробці запитів STAF від багатьох процесів на різних машинах. Дескриптор складається з імені екземпляру STAF, і однозначно ідентифікує процес STAF. Доступ до конкретного процесу здійснюється через дескриптор.
Інші дані поєднані з дескриптором наступним чином:
NAME (ім’я) – описове ім’я, пов’язане з дескриптором, яке надається коли процес реєструється в STAF;
LAST USER DATE/TIME (останній час/дата використання) – показує коли в останній раз дескриптор був використаний для відправки запиту;
USER AUTHENTICATION INFORMATION (інформація аутентифікації користувача) – пов’язана з дескриптором, якщо він був ідентифікований;
VARIABLE POOL (блок змінних) – засоби для зберігання та відновлення інформації про те, що саме процес може використовувати, наприклад конфігураційні дані;
QUEUE – пріоритетна черга, яка використовується для міжпроцесорної комунікації (спілкування) з іншими процесами/машинами використовуючи STAF.
Перед завершенням процесу STAF потрібно виконати звільнення ресурсів, які пов’язані з даним дескриптором. Коли STAF завершує роботу, або при краху системи, дескриптори пов’язані з даною машиною видаляються.
Для «збору сміття» існують служби SEM та RESPOOL. Якщо було видалено дескриптор, вони звільняють всі ресурси, які його використовували.
STAF змінні
STAF забезпечує можливість збереження і видачі змінних. Вони використовуються для збереження конфігураційної інформації, інформації часу виконання і інформації системного середовища.
Ці змінні відносяться до STAFProc процесу. Це дозволяє автоматично їх оновляти без перезапуску програми, що їх використовує. При оновленні змінних, будь-яка програма, яка їх використовує отримає нові значення цих змінних
STAF підтримує внутрішній блок змінних, який є спільний для всіх дескрипторів на конкретному клієнті. Також STAF підтримує розподілений блок змінних, який також поширюється на клієнта і розсилається по мережі і використовується для розширення змінних. Додатково кожен дескриптор має свій блок змінних.
По замовчуванню значення змінних в блоці даних дескриптору перевизначають значення змінних в системному блоці чи спільному блоці. Хоча дескриптор може перевизначити цю поведінку при запиті значення змінної. В основному, як частина кожного віддаленого запиту, дескриптор і з розподіленим блоком змінних розсилається по мережі
В STAF визначені наступні змінні:
STAF/Config/BootDrive – диск з якого запущено STAF
STAF/Config/CodePage – кодування символів STAF
STAF/Config/ConfigFile – шлях до конфігураційного файлу STAF
STAF/Config/DefaultAuthenticator – аутентифікатор по замовчуванню. Якщо жоден аутентифікатор не зареєстрований, значення буде рівне "none"
STAF/Config/DefaultInterface – інтерфейс по-замовчуванню. Якщо не зареєстровано жодних мережевих інтерфейсів, значення змінної буде рівне "local" – означає що локальний інтерфейс є єдиним доступним інтерфейсом.
STAF/Config/InstanceName – ім’я екземпляра STAF який є на даній машині. По замовчуванню – STAF, якщо змінна STAF_Instance_Name оточуючого середовища не вказана;
STAF/Config/Machine – назва даної машини(комп’ютера);
STAF/Config/MachineNickname – нік (мережеве ім’я) машини. По замовчуванню це те саме ім’я STAF/Config/Machine, якщо не було перевизначено за допомогою MACHINENICKNAME у налаштуваннях
STAF/Config/Mem/Physical/Bytes – обсяг фізичної пам’яті в байтах. Значення 0 на z/OS, бо STAF не може визначити фізичну пам'ять на цій операційній системі;
STAF/Config/Mem/Physical/KB – обсяг фізичної пам’яті в кілобайтах. Значення 0 на z/OS, бо STAF не може визначити фізичну пам'ять на цій операційній системі;
STAF/Config/Mem/Physical/MB – обсяг фізичної пам’яті в мегабайтах. Значення 0 на z/OS, бо STAF не може визначити фізичну пам'ять на цій операційній системі;
STAF/Config/OS/Name – назва операційної системи (наприклад WinXP, WinSrv2008, Linux, AIX, SunOS, HP-UX, Darwin);
STAF/Config/OS/MajorVersion – версія операційної системи;
STAF/Config/OS/Revision – специфікатор операційної системи;
STAF/Config/Processor/NumAvail – кількість доступних процесорів. Значення 0 на z/OS, бо STAF не може визначити кількість процесорів для даної операційній системі;
STAF/Config/Sep/Command – символ(-и) які використовуються для розділення команд об’єднаних в одну стрічку;
STAF/Config/Sep/File – символ(-и) які використовуються для розділення файлів та каталогів у шляху;
STAF/Config/Sep/Line – символ(-и) які використовуються для розділення рядків у текстових файлах;
STAF/Config/Sep/Path – символ(-и) які використовуються для розділення шляхів у списку шляхів;
STAF/Config/STAFRoot – каталог, у якому встановлений STAF;
STAF/DataDir – каталог, який STAF та його служби використовують для запису даних(базується на параметрі DATADIR);
STAF/Env/* – всі змінні оточення, які доступні через STAF;
STAF/Version – версія STAF.
STAF безпека
Безпека в STAF розподіляється окремо на машинний і користувацький рівні. Іншими словами безпека надається доступ до машин і/або до користувачів.
Доступ до STAF забезпечується наданням рівня довіри машині чи користувачу, рівень 0 означає повну заборону доступу, рівень 5 означає повний доступ. Кожен STAF сервіс визначає який рівень довіри необхідно для використання функцій, які він надає.
Загальний опис кожного рівня:
Level 0 – доступу немає;
Level 1 – обмежений доступ, доступно тільки PING та довідка;
Level 2 – обмежений доступ, доступно тільки перегляд доступних засобів;
Level 3 – стандартний доступ, доступні зміни, які не можуть пошкодити систему, наприклад логування;
Level 4 – розширений доступ, доступні зміни операції копіювання файлів, видалення файлів логування і тощо;
Level 5 – повний доступ, доступно виклик процесів, зміни визначення довіри тощо.
STAF черги
Кожен STAF дескриптор має свою чергу з пріоритетами. Через цю чергу відбувається комунікація з програмами. Кожне повідомлення в черзі має слідуючі параметри:
Priority (пріоритет) – без знакове довге ціле число (0 - 4294967296), яке означає важливість повідомлення. Якщо вказано 0 – повідомлення вважається найважливішим;
Timestamp (відмітка часу) – дата/час отримання повідомлення;
Machine (комп’ютер) – комп’ютер, що відправив повідомлення;
Process name (ім’я процесу) – зареєстроване ім’я процесу, який відправив повідомлення;
Handle (дескриптор) – дескриптор процесу, який відправив повідомлення;
Message (повідомлення) – власне вміст повідомлення.
STAF надає можливість зареєструватися для отримання повідомлень про події, такі як запуск та завершення STAF. Ці події з’являються в черзі запитів процесу.
STAF налаштування
STAF налаштовується за допомогою конфігураційного файлу STAF. Назва цього файлу може бути будь-яка, проте по замовчуванню він називається STAF.cfg. Конфігураційний файл обробляється по одному рядку. Пробіли на початку рядка, порожні рядки ігноруються. Щоб об’єднати рядки в один, коли оператор конфігурації занадто великий слід використовувати символ "\" в кінці рядка. Максимальна довжина рядка – 2048 символів. Можна використовувати змінні будь-якого типу окрім SET VAR. Однак, ці змінні повинні бути або системними змінними STAF, або повинні бути попередньо визначеними в конфігураційному файлі за допомогою оператора SET VAR.
Коментарі в конфігураційному файлі вказуються за допомогою символу #, який має бути на початку рядка. Закоментовані рядки ігноруються.
Наприклад:
# This is a comment line
STAX
STAX – це XML-подібне виконавче середовище, яке реалізоване як зовнішній JAVA STAF сервіс. STAX був розроблений, щоб істотно спростити автоматизацію роботу з тестами і тестовим середовищем STAF.
За допомогою STAX можна автоматизувати будь-яку дію. Наприклад деякі розробники використовують його для автоматизації процесу побудови проекту. Інші використовують для того, щоб автоматизувати різноманітні типи тестів, від юніт-тестів до тестів верифікації системи.
Рис. 2 Структура STAX середовища.
Складові частини STAX
STAX складається з трьох основних частин: мови програмування, виконавчої машини і STAX монітору.
Мова програмування
Мова програмування STAX – це XML подібна мова програмування, яка є дуже подібною на інші мови програмування і має схожий функціонал, проте спеціалізована для забезпечення автоматизації. Програми написані на цій мові програмування називаються STAX jobs (STAX завданнями).
STAF забезпечує основу навколо якої побудований STAX. Це означає, що всі сервіси STAF доступні з STAX завдань користувача.
Оскільки мова програмування STAX побудована на основі XML. Це забезпечує хорошу структуру STAX завдань, і дозволяє використовувати стандартні засоби для побудови STAX завдань, таких, як наприклад XSLT редактор.
Мова програмування STAX побудована на скрипковій мові Python, а саме при оголошенні змінних і написанні виразів Це значить, що користувач може використовувати стандартні бібліотеки Python чи будь-які інші бібліотеки написані на цій мові.
Для виконання Pyhon коду в STAX завдання використовується Jython. Jython – це реалізація мови Python, яка написана на 100% на чистій мові JAVA. Це означає, що можна також виконувати JAVA класи (стандартні чи написані користувачем) в своїх STAX завданнях.
Виконавча машина
STAX сервіс – це і є STAX виконавча машина (вона подібна на інтерпретатор інших скрипкових мов програмування) і бере STAX XML завдання, як вхідні дані і керує виконанням STAX завдання і його поведінкою при виконанні.
STAX монітор
STAX монітор – це програма з графічним інтерфейсом користувача, яка забезпечує динамічний перегляд і оновленні STAX завдань при їх виконанні.
Складові частини STAX завдання
Складові частини STAX завдання – це окремі елементи в STAX XML завданні. По суті STAX XML завдання – це структурована ієрархія STAX елементів. Ось деякі типи елементів які включає STAX завдання:
дані, які потрібні при виконанні STAX завдання
команди/процеси які слід виконати/запустити
визначення логіки роботи гілок виконання при виконанні завдання
обгортки, такі, як функції і блоки які вказують на інші елементи
Елементи-процеси – визначають інформацію виконання для STAF PROCESS_START команди. Елемент-процес визначає команду яку слід виконати і машину на якій вона буде виконуватися.
Елементи-команди (stafcmd) – визначають інформацію виконання для всіх інших команд STAF сервісів. Елемент-процес визначає сервіс який слід запустити і машину на якій він буде запущений.
Елементи-скріпти використовуються щоб вказати Python код, зазвичай потрібний для оголошення змінних.
STAX може виконувати групи елементів послідовно чи паралельно. Коли елементи виконуються паралельно, то STAX виконуватиме кожен елемент в окремому потоці.
Елементи-цикли використовуються коли необхідно повторно виконати інші елементи STAX. Додатково існують елементи-ітератори (послідовні і паралельні) для того щоб повторно виконувати елементи, коли змінюються дані під час ітерації.
STAX містить кілька операторів обгорток, які надають іншим елементам додатковий функціонал.
Функції – це універсальний засіб структурування програм. Функції служать для виконання двох основних ролей при розробці : повторного використання коду і процедурної декомпозиції. Функції – це найпростіший шлях для того щоб об’єднати дії які потрібно використати більш ніж один раз в більш ніж одному місці. Функції дозволяють згрупувати і параметризувати секції XML, які слід виконати багато разів.
Підзадачі забезпечують виконання коду під керівництвом батьківського завдання STAX з синхронізованим виконанням і доступ до результатів виконання.
STAX забезпечує IF елемент, який надає можливість контролювати гілки виконання в STAX заданнях. Використовуючи Python це можна робити динамічно.
Налаштування STAX середовища
Налаштувати STAX можна так само, як і інші JAVA STAF сервіси, такі як Event, EventManager, Cron і Email, на єдиній машині серверного типу. Ця машина називається машиною зі STAX сервісом. Ця машина повинна працювати в той час як на ній виконується STAF сервіс на якому в свою чергу виконується STAX завдання.
Інші машини в STAF середовищі не потребують виконання STAX сервісу. Але так як STAX сервіс виконує завдання на STAF машинах вони повинні надати йому рівень довіри 5, для виконання обов’язкового запиту PROCESS START, який вимагає цього рівня довіри.
STAX монітор це розподілена JAVA програма, яка виводить інформацію про виконання STAX завдань, які виконуються на STAX сервіс машині. STAX монітор може бути виконаний на будь-якій машині зі STAF середовища (включаючи STAX сервіс машину). Машина на якій потрібно запустити STAX монітор має надати STAX сервіс машині рівень довіри 3 чи вище.
Так як STAX сервіс і STAX монітор написані на мові Java, користувачу потрібно встановити JVM(Sun чи IBM) на STAX сервіс машину і кожну машину на якій він буде запускатися. STAX сервіс вимагає встановленої Java 1.4 чи пізнішої, а STAX монітор Java 1.3 чи пізнішої версії.
Для конфігурації STAX потрібно змінити конфігураційний файл STAF.cfg прописавши в ньому рядки конфігурування служб STAX та Event:
SERVICE STAX LIBRARY JSTAF EXECUTE \
{STAF/Config/STAFRoot}/services/stax/STAX.jar OPTION J2=-Xmx384m
SERVICE EVENT LIBRARY JSTAF EXECUTE \
{STAF/Config/STAFRoot}/services/stax/STAFEvent.jar
SET MAXQUEUESIZE 10000
Запуск STAX
Спочатку потрібно перевірити, чи міститься служба STAX та Event в списку служб середовища STAF. Після цього можна викликати довідку по службі STAX для перегляду можливостей:
EXECUTE < <FILE <XML File Name> [MACHINE <Machine Name>]> | DATA <XML Data> >
[JOBNAME <Job Name>] [FUNCTION <Function ID>] [ARGS <Arguments>]
[SCRIPTFILE <File Name>... [SCRIPTFILEMACHINE <Machine Name>]]
[SCRIPT <Python Code>]... [CLEARLOGS [<Enabled | Disabled>]]
[ WAIT [<Number>[s|m|h|d|w]] [RETURNRESULT [DETAILS]] |
HOLD [<Number>[s|m|h|d|w]] | TEST [RETURNDETAILS] ]
[ NOTIFY ONEND [BYNAME] [PRIORITY <Priority>] [KEY <Key>] ]
[LOGTCELAPSEDTIME <Enabled | Disabled>]
[LOGTCNUMSTARTS <Enabled | Disabled>]
[LOGTCSTARTSTOP <Enabled | Disabled>]
[PYTHONOUTPUT <Python Output>] [PYTHONLOGLEVEL <Log Level>]
[ BREAKPOINT <Function name> | <Line>[@@<File>[@@<Machine>]] ]...
[BREAKPOINTFIRSTFUNCTION] [BREAKPOINTSUBJOBFIRSTFUNCTION]
GET DTD
GET RESULT JOB <Job ID> [DETAILS]
LIST JOBS | SETTINGS | MACHINECACHE |
FILECACHE [SORTBYLRU | SORTBYLFU | SUMMARY] |
EXTENSIONS | EXTENSIONJARFILES |
JOB <Job ID> <THREADS [LONG] | < THREAD <Thread ID> VARS [SHORT] > |
PROCESSES | STAFCMDS | SUBJOBS | BLOCKS | TESTCASES |
BREAKPOINTS | FUNCTIONS>
QUERY EXTENSIONJARFILE <Jar File Name> | EXTENSIONJARFILES |
JOB <Job ID> [THREAD <Thread ID> [ VAR <VarName> [SHORT] ] |
PROCESS <Location:Handle> | STAFCMD <Request#> |
BLOCK <Block Name> | TESTCASE <Test Name> |
FUNCTION <Function Name>]
STOP JOB <Job ID> PROCESS <Location:Handle>
HOLD JOB <Job ID> [BLOCK <Block Name>] [TIMEOUT [<Number>[s|m|h|d|w]]]
RELEASE JOB <Job ID> [BLOCK <Block Name>]
TERMINATE JOB <Job ID> [BLOCK <Block Name>]
START JOB <Job ID> TESTCASE <Testcase name> [KEY <Key>]
[PARENT <Testcase name>]
STOP JOB <Job ID> TESTCASE <Testcase name> [KEY <Key>]
UPDATE JOB <Job ID> TESTCASE <Testcase name> STATUS <Status>
[MESSAGE <Message text>] [FORCE [PARENT <Testcase name>]]
LOG JOB <Job ID> MESSAGE <Message> [LEVEL <Level>] [SEND]
SEND JOB <Job ID> MESSAGE <Message>
ADD JOB <Job ID> BREAKPOINT
< FUNCTION <Function Name> |
LINE <Line Number> FILE <XML File> [MACHINE <Machine Name>] >
REMOVE JOB <Job ID> BREAKPOINT <Breakpoint ID>
RESUME JOB <Job ID> THREAD <Thread ID>
STEP JOB <Job ID> THREAD <Thread ID> [INTO | OVER]
STOP JOB <Job ID> THREAD <Thread ID>
PYEXEC JOB <Job ID> THREAD <Thread ID> CODE <Python Code>
SET [CLEARLOGS <Enabled | Disabled>]
[LOGTCELAPSEDTIME <Enabled | Disabled>]
[LOGTCNUMSTARTS <Enabled | Disabled>]
[LOGTCSTARTSTOP <Enabled | Disabled>]
[PYTHONOUTPUT <Python Output>]
[PYTHONLOGLEVEL <Log Level>]
[FILECACHING <Enabled | Disabled>]
[MAXFILECACHESIZE <Max Files>]
[FILECACHEALGORITHM <LRU | LFU>]
[MAXFILECACHEAGE <Number>[s|m|h|d|w]]
[MAXMACHINECACHESIZE <Max Machines>]
[MAXRETURNFILESIZE <Number>[k|m]]
[MAXGETQUEUEMESSAGES <Number>]
[MAXSTAXTHREADS <Number>]
NOTIFY REGISTER ONENDOFJOB <Job ID> [BYNAME] [PRIORITY <Priority>]
NOTIFY UNREGISTER ONENDOFJOB <Job ID>
NOTIFY LIST [JOB <Job ID>]
PURGE <FILECACHE | MACHINECACHE> CONFIRM
VERSION [JYTHON]
HELP
Запуск STAX Monitor
Для запуску STAX Monitor потрібно в командному рядку прописати C:/STAF/services/stax для переходу в каталог із даною службою та java -jar STAXMon.jar для безпосереднього запуску.
Після запуску ми отримаємо вікно:
Для запуску STAX Monitor потрібно в командному рядку прописати C:/STAF/services/stax для переходу в каталог із даною службою та java -jar STAXMon.jar для безпосереднього запуску.
Після запуску зявляється вікно рис. 3:
Рис. 3. STAX
Рис. 4. Головне вікно налаштувань STAXMon
Запуск простого завдання STAX
Щоб запустити нове завдання STAX потрібно натиснути клавішу «Submit New Job..» на панелі STAX Monitor і в вікні параметрів вибрати налаштування, зокрема шлях до файлу *.xml , який є завданням, машину, на якій це завдання буде виконуватися, додаткові сценарії, параметри логування, точки переривання та інші.
Рис. 5. Параметри запуску нового завдання STAX
Після запуску ми отримаємо вікно на рис. 6
Рис. 6. Вікно виконання завдання STAX
Висновок
На даній лабораторній я детально ознайомився з середовищем для автоматизованого тестування програмного забезпечення STAF, розглянув його особливості роботи, налаштування, тестування, управляння а також використання служб, зокрема STAX.