Тестирование терминальных приложений при помощи Rational Functional Tester. Часть 3
Читать часть 2
Давайте познакомимся с приложением, которое мы будем тестировать с помощью IBM Rational Functional Tester . Благодаря этому у вас будет шанс увидеть эмулятор терминала модуля расширения до того, как вы начнете запись скрипта.
Инструмент Rational Functional Tester Extension for Terminal-Based Applications поставляется в комплекте с встроенным эмулятором терминала. Это исключает несовместимость с эмуляторами сторонних разработчиков или риск несовместимости версий благодаря тому, что эмулятор модуля расширения плотно интегрирован в Rational Functional Tester для обеспечения надлежащей синхронизации и распознавания данных с приложением мейнфрейма. Тем не менее вы можете использовать сторонние эмуляторы для тестирования вручную, если у вас есть такое желание. Просто используйте эмулятор модуля расширения для записи скриптов, и Functional Tester будет использовать его для воспроизведения таких скриптов.
- Нажмите на панели инструментов кнопку Launch the Extension for Terminal-based Applications.
Эта кнопка запускает эмулятор терминала модуля расширения. В верхней половине окна имеется несколько элементов управления, которые оказывают влияние на способ подключения эмулятора к вашему приложению. Здесь задаются свойства подключения, которые необходимы для подключения к мейнфрейму, на котором размещается приложение. Выполнив описанные ниже шаги, мы установим подключение к имитации мейнфрейма.
- Наше приложение имитации мейнфрейма выполняется на локальном компьютере, который называется localhost. Введите в поле Host значение
localhost .
- Эмулятор поддерживает тестирование приложений, использующих протоколы 3270, 3270 Enhanced и 5250. Эмулируемое приложение использует протокол 3270 Enhanced, поэтому в раскрывающемся меню Terminal Type выберите значение TN3270E.
- Нажмите кнопку Connect на панели инструментов.
Снимок экрана после этого шага показан на следующем рисунке.
Если на экран будет выведено окно уведомления Communication Error, то, скорее всего, причина заключается в том, что не был запущен Эмулятор сервера. Вернитесь в папку HostSim и выполните двойной щелчок на файле HostSim.bat.
Если вам кажется, что эмулятор подключился, но экран остается пустым, то, скорее всего, вы пытаетесь установить подключение с использованием протокола 3270 вместо 3270E. Чтобы вернуться на страницу настройки, нажмите кнопку Disconnect.
Затем измените протокол на TN3270E и повторите попытку подключения.
Обратите внимание на два ряда кнопок по нижнему краю окна эмулятора. Это программные кнопки, которые заменяют клавиши PF и другие специальные клавиши терминала. Эти клавиши мы впоследствии будем использовать в процессе записи.
IBM Rational Functional Tester Переходим к тестируемому приложению
Давайте познакомимся с приложением, которое мы будем тестировать. Если вы выполнили все шаги, описанные в предыдущем разделе, то на экране должно открыться окно приветствия DEMOnet в эмуляторе терминала. Именно с этого окна мы начнем изучение приложения.
- Введите в окне эмулятора терминала
cicsa . Вы должны увидеть, что вводимые символы появляются на экране после приглашения. Если этого не происходит, то убедитесь, что окно эмулятора терминала является активным. Cicsa - это имя сервера транзакций, который мы планируем использовать. Для вызова команды можно нажать либо клавишу Enter на клавиатуре, либо кнопку Enter в нижней части окна эмулятора.
- В следующем окне введите идентификатор пользователя
dnet256 . Дважды нажмите клавишу Tab. Теперь введите в поле password слово secret . Нажмите клавишу Enter.
- Мы выполнили вход в CICS. В следующем окне введите
RCTD . Это идентификатор транзакции для демонстрационного приложения Share Trading. Нажмите клавишу Enter.
- После этого вы окажетесь в диалоговом окне Share Trading Manager - окно входа в систему В правом верхнем углу экрана должен отображаться (синим шрифтом) идентификатор окна TRADER.T001. В этом окне вы должны ввести имя пользователя и пароль для приложения Share Trading. Введите
jan , нажмите клавишу Tab, а затем введите в поле password значение janpwd . Затем нажмите клавишу Enter.
- В следующем окне, TRADER.T002, выберите компанию, акции которой вы хотите продать. Введите число
1 для выбора команды Casey Import/Export и нажмите клавишу Enter.
- В следующем окне, TRADER.T003, будет выведено главное меню, содержащее команды для работы с программой. Задайте квоту в реальном времени, введя
1 и нажав Enter.
- В следующем окне, TRADER.T004, представлено несколько фрагментов информации. К этому окну мы будем возвращаться несколько раз, чтобы протестировать функции приложения. Обратите внимание, что у пользователя Jan нет акций этой компании. Это может послужить хорошей контрольной точкой, позволяющей убедиться, что в момент запуска тестового сценария у вас на счету нет акций этой компании. Теперь давайте вернемся в главное меню, нажав кнопку PF3 в нижней части окна эмулятора терминала.
- Предположим теперь, что нам нужно купить 100 акций и убедиться в правильности размещения заказа. Команда под номером 2 откроет окно, в котором вы сможете сделать именно это. Введите
2 и нажмите клавишу Enter.
- Теперь ввы должны увидеть окно TRADER.T005, т.е. окно для покупки акций. Введите
100 и нажмите Enter.
- После этого вы сразу же окажетесь в главном меню. Обратите внимание на сообщение в нижней части окна, которое подтверждает, что запрос был успешно выполнен. Вероятно, есть еще один момент, который вы хотели бы проверить - был ли запрос выполнен должным образом. Вы также захотите убедиться в том, что у вас на счету отображаются только что приобретенные акции. Вы снова можете воспользоваться окном Real-time Quote, чтобы убедиться, что количество ваших акций увеличилось. Команда главного меню под номером 1 служит для перехода в окно, в котором вы можете увидеть новую квоту, поэтому введите
1 и нажмите клавишу Enter.
- В этом окне обратите внимание на то, что количество акций, которыми вы теперь владеете, равно 100.
- Нажмите кнопку Disconnect, чтобы разорвать соединение с имитацией сервера.
- Все параметры подключения, которые мы использовали, можно сохранить в конфигурационном файле подключения. Благодаря этому вы не только сэкономите время на заполнение параметров настройки при каждом выполнении теста, но и получите постоянный профиль подключения, который смогут использовать все тестировщики вашей рабочей группы. Чтобы сохранить текущие настройки подключения, выберите из меню команды File > Save. Укажите имя конфигурационного файла подключения, например
ShareTraderV1.conn . (Обратите внимание, что в диалоговом окне Save As расширение .conn добавляется автоматически).
- Закройте окно эмулятора терминала.
Мы только что протестировали функцию покупки акций нашего приложения вручную. Мы имели дело с простым сценарием, но вы должны понимать, что если бы нам потребовалось вручную перезапускать этот тест - наряду с десятками или сотнями дополнительных регрессионных тестов - после каждого изменения приложения разработчиками, мы быстро превысили бы время на создание новой сборки. Вы готовы к записи автоматизированного скрипта, который может тестировать эту же функцию за меньшее время? Тогда давайте сделаем это!
Записываем первый сценарий
Чтобы создать автоматизированный сценарий, нужно всего лишь перевести Functional Tester в режим записи и повторить все те шаги, которые мы выполнили до этого. Правда, с одним отличием - по ходу выполнения мы добавим пару точек верификации.
- Нажмите кнопку Record a Functional Test Script на панели инструментов Functional Tester. На этой кнопке изображен красный круг.
В следующем диалоговом окне необходимо ввести имя записываемого скрипта. Пусть это будет Buy100SharesCasey . (Обратите внимание на то, что имена скриптов в Functional Tester фактически являются именами Java-классов. Следовательно, они должны соответствовать правилам назначения имен для Java-классов. Если вы попытаетесь нарушить эти правила, то в верхней части окна появится всплывающее окно с предупреждением.)
- Нажмите Finish.
- Окно IBM Rational Functional Tester автоматически перейдет в свернутое состояние, и начнется запись любых взаимодействий, которые мы будем выполнять. Не забывайте об этом! Все, что мы делаем, начиная с этого момента, будет записано в скрипт. Не так уж сложно удалить все ненужные взаимодействия из скрипта, но в этой первой записи постарайтесь избежать любых ненужных действий.
IBM Rational Functional Tester в режиме записи отображает маленькую панель инструментов Recording. В процессе записи вы можете использовать многие инструменты и утилиты, имеющиеся на этой панели: Например, вы можете приостановить запись, вставить комментарии и вызовы других скриптов, а также точки верификации. В этом учебном руководстве мы не будем рассматривать все утилиты. Просто имейте в виду, что многие действия можно выполнить при помощи мастеров и диалоговых окон в процессе записи, не написав ни одной строки кода скрипта.
- Первое, что нужно сделать в процессе записи - это запустить эмулятор терминала и подключиться к нашей имитации мейнфрейма. Чтобы запустить эмулятор терминала, нажмите кнопку Start Application на панели инструментов Recording.
- В раскрывающемся меню Application Name выберите Extension for Terminal Applications и нажмите кнопку OK.
- Поместите указатель мыши в поле Host эмулятора терминала, после чего нажмите и отпустите левую кнопку мыши. Введите "localhost" без кавычек.
- В комбинированном элементе управления Terminal type выберите TN3270E.
- Установите указатель мыши в поле Port после числа 23, нажмите и отпустите левую кнопку мыши. Дважды нажмите клавишу Backspace, чтобы стереть 23, а затем снова введите 23. (Сейчас это может показаться странным, но позже вы поймете, почему мы так сделали.)
- Нажмите кнопку Connect на панели инструментов.
- Введите
cicsa и нажмите Enter.
- Введите идентификатор пользователя
dnet256 . Дважды нажмите клавишу Tab. Теперь введите в поле password слово secret . Нажмите клавишу Enter.
- Введите
RCTD и нажмите Enter.
- Введите
jan , нажмите клавишу Tab, а затем введите в поле password janpwd . Нажмите клавишу Enter.
- Здесь будет полезно вставить в записываемый скрипт комментарий. Комментарии не влияют на воспроизведение скрипта, но могут значительно улучшить его удобочитаемость. Скрипты для терминалов иногда могут быть более сложными для чтения из-за того, что слишком многие взаимодействия осуществляются с использованием клавиатуры. Нажмите кнопку Insert Script Support Commands на панели инструментов Recording. Перейдите на вкладку Comment и введите комментарий
Company Selection Screen . Этот комментарий объясняет, что вы собираетесь сделать в этой точке скрипта. Нажмите кнопку Insert Code, а затем нажмите кнопку Close в диалоговом окне Exit the Script Support Functions.
- Нажмите клавишу Alt, чтобы перейти в окно эмулятора терминала. Введите число
1 для выбора команды Casey Import/Export и нажмите клавишу Enter.
- Введите
1 и нажмите Enter для запроса квоты в реальном времени.
- Для проверки того, что в окне Real-Time Quote не отображаются уже приобретенные акции, используйте точку верификации для информационного сообщения о состоянии (красный шрифт). Перетащите кнопку Insert Verification Point or Action Command с панели инструментов Recording на красный информационный текст в окне эмулятора терминала таким образом, чтобы в красную рамку входил только этот текст, а затем отпустите левую кнопку мыши.
- Нам нужно контролировать не только текст этого сообщения, но и его свойства, например, красный цвет шрифта. В открывшемся окне выберите Perform Properties Verification Point и нажмите кнопку Next два раза подряд. Вы можете контролировать любые свойства, перечисленные в окне мастера. Обратите внимание: многие из свойств отображаются непосредственно на установки атрибутивного бита в поле 3270. Мы будем контролировать не все эти свойства, а только некоторые из них. Установите флажки напротив свойств foreground, highIntensity и text. Затем нажмите кнопку Finish.
- Теперь давайте вернемся в главное меню, нажав кнопку PF3 в нижней части окна эмулятора терминала.
- Теперь нам нужно купить 100 акций. Введите
2 и нажмите клавишу Enter.
- Введите
100 и нажмите Enter.
- Теперь мы должны вставить точку верификации для сообщения о состоянии, чтобы проконтролировать успешность обработки запроса. Еще раз перетащите кнопку Insert Verification Point or Action Command на информационный текст в окне эмулятора терминала. На этот раз оставьте заданное по умолчанию значение Perform Data Verification Point и нажмите кнопку Next два раза подряд.
- Данная точка верификации будет контролировать только данные в объекте. Но мы видим, что здесь возможны проблемы: при каждом воспроизведении скрипта номер запроса будет изменяться. Мы не можем выполнить обычное сравнение по отношению к статичному тексту. На выручку придут регулярные выражения. Регулярные выражения представляют собой шаблонные выражения на языке программирования, которые можно использовать в точках верификации, чтобы эти точки могли обрабатывать динамические данные типа идентификатора запроса. Нажмите в окне мастера кнопку Convert Value to Regular Expression. После этого замените пятизначный номер в поле data следующей строкой:
Данное выражение означает, что вы хотите найти последовательность длиной в пять символов, причем символы в этой последовательности должны быть только цифрами. Данные должны выглядеть примерно так:
- Нажмите кнопку Finish, чтобы закончить настройку точки верификации.
- Нажмите клавишу Alt, чтобы перейти в окно эмулятора терминала. Введите
1 и нажмите клавишу Enter, чтобы получить новую квоту.
- Нам нужно вставить последнюю точку верификации. Это будет точка верификации данных для количества имеющихся акций. Перетащите кнопку Insert Verification Point or Action Command на количество акций,
0100 .
- Дважды нажмите кнопку Next, а затем кнопку Finish, чтобы закончить установку точки верификации.
- Нажмите кнопку Disconnect, чтобы отключиться от имитации сервера, и закройте окно эмулятора терминала.
- Нажмите кнопку Stop Recording на панели инструментов Recording.
Прекрасно, а теперь проанализируем, что именно мы сделали, выполнив описанные шаги. Собственно говоря, мы просто заставили Functional Tester записать все, что мы делали в ходе ручного тестирования нашего приложения. Мы выполнили несколько дополнительных шагов, чтобы проинструктировать IBM Rational Functional Tester , какие моменты важно контролировать. Теперь у нас есть тест, который можно повторять сколько угодно раз для выполнения тех же действий, которые были выполнены вручную. В следующем разделе мы рассмотрим, какие действия Functional Tester выполняет незаметно для пользователя в ходе записи теста.
Читать часть 4
|