|
|
|||||||||||||||||||||||||||||
|
Использование IBM Rational Performance Tester для обмена данными между модульными тестами. Часть 1Источник: IBM
Эта серия статей посвящена созданию модульных тестов производительности при помощи предоставляемой IBM Rational Performance Tester функциональности деления тестов с последующим динамическим обменом данными между тестами с использованием функциональности тестовых переменных. В серии объясняется, как выполнить следующие задачи: получить тестовые модули из существующих тестов, сохраняя при этом исходные тесты нетронутыми, разделить на части и аннотировать тест в режиме реального времени во время записи с помощью панели инструментов Rational Performance Tester Annotation, связать тестовые модули друг с другом, используя тестовые переменные, а также создать пользовательские сценарии с использованием различных тестовых модулей и моделирования рабочей нагрузки. В части 2 серии приведены пошаговые инструкции по использованию тестовой переменной для обмена данными между тестами. Преимущества использования модульных тестов Важной составной частью тестирования производительности является разработка и настройка тестов. Как тестировщик, вы, вероятно, тратите много времени на разработку и настройку тестов, которые приходится часто перезаписывать по причине изменений в тестируемом приложении или системе, а также в вариантах использования. Например, вам может понадобиться изменить сценарий теста, чтобы выбрать определенную часть системы для исследования новой проблемы производительности, обнаруженной в ходе теста. Для этого, вероятно, потребуется новый набор тестов, который нужно будет записать и настроить, тратя на это драгоценное время, которое можно было бы использовать для тестирования и анализа результатов. Модульное тестирование дает следующие преимущества:
Подход на основе модульных тестов предусматривает создание небольших тестовых модулей, которые затем можно использовать в качестве строительных блоков для построения больших или меньших сценариев, в зависимости от целей теста. В данной статье рассказывается, как можно применить функциональные возможности IBM Rational Performance Tester, такие как разделение тестов и тестовые переменные , могут помочь в создании более надежных и более пригодных для повторного использования модульных тестов. Прежде чем углубиться в эти функциональные возможности, дадим определения следующим понятиям в контексте Rational Performance Tester:
Создание записей модульных тестов Начиная с Rational Performance Tester версии 8.1 появилась возможность использовать функциональность разделения теста для деления большего теста на более мелкие тестовые модули при сохранении первоначального теста в неизменном состоянии. С помощью панели инструментов Annotation (начиная с версии 8.1.1) можно также определить границы тестовых модулей в процессе записи. Затем можно использовать тестовые переменные для связывания различных тестовых модулей друг с другом. Тестовые переменные
В трех следующих разделах вы познакомитесь с выполнением следующих задач:
Хотя данная статья посвящена графическому интерфейсу пользователя SAP и HTTP-расширению, все остальные расширения Rational Performance Tester также поддерживают функциональность разделения теста и тестовой переменной. После записи можно разделить SAP-тест, выбрав одну или несколько транзакций в редакторе тестов, и сохранить выбранные варианты в качестве нового теста. Если выбирается нескольких транзакций, они должны быть непрерывными. В противном случае опция сохранения выбранных вариантов в качестве нового теста будет отключена. Это важно, потому что могут существовать зависимости между транзакциями. Сплит-тесты
Процесс деления теста очень прост и не требует много времени:
Рисунок 1. Выбор транзакций для сплит-теста На рисунке 2 показан пример, в котором из одной записи SAP-теста получается три разных тестовых модуля. Эти тестовые модули включают тесты Login, Create order и Logout. Рисунок 2. Получение нескольких тестовых модулей из одной SAP-записи Переменные сплит-теста
Процесс деления сценария HTTP-теста аналогичен приведенному ранее для SAP, но с некоторыми отличиями:
Рисунок 3. Выбор страниц для сплит-теста HTTP На рисунке 4 показан пример нескольких модулей сплит-тестов, полученных из одной записи HTTP-теста. Модули включают тесты Login, Import, Create и Logout. Рисунок 4. Получение нескольких тестовых модулей из одной HTTP-записи Все тестовые модули на рисунке 4 содержат сгенерированные Rational Performance Tester тестовые переменные. Они генерируются и задаются автоматически при делении теста для создания связей между тестовыми модулями. Кроме того, некоторые тестовые модули включают в себя заданные Rational Performance Tester переменные для использования последующими тестовыми модулями. Деление HTTP-теста во время записи Используя панель инструментов Rational Performance Tester Annotation, можно делить HTTP-тест в режиме реального времени в процессе записи. Во время записи теста при помощи панели инструментов Annotation можно вставлять в тест точки деления. После завершения записи Rational Performance Tester автоматически сгенерирует отдельные тестовые модули, основываясь на вставленных точках деления и предоставленных именах тестов. Нотация и именование
Если после окончания записи вы поймете, что разделили тест неправильно, или по каким-либо другим причинам захотите записать единый тест, можете использовать файл recmodel из оригинальной записи, который содержит точки деления, для восстановления всего теста без разделения. Кроме того, панель инструментов Annotation предоставляет дополнительные функциональные возможности, которые можно использовать для аннотирования теста во время записи. Она позволяет вставлять в тест комментарии и транзакции в режиме реального времени. Кроме того, вы можете использовать ее для переименования страниц во время записи, чтобы дать им более содержательные имена. Эти задачи также можно выполнить после записи теста, но зачастую удобнее и эффективнее делать это во время записи. При вводе имени сплит-теста во время записи важно помнить, что это имя будет связано с тестом, созданным для предыдущей, а не следующей, части сеанса записи. На рисунке 4 показан пример записи, аннотированной при помощи панели инструментов Annotation. В частности, первым двум страницам были присвоены содержательные имена - Login и Home. Комментарии упрощают понимание цели теста и того, где можно разделить тест после завершения сеанса записи. Рисунок 5. Панель инструментов Recorder Test Annotation Напоминания
Теперь, когда вы узнали об использовании предоставляемой Rational Performance Tester функциональности разделения тестов для создания сценариев модульных тестов, мы познакомим вас с тем, как использовать их в следующих целях:
Построение сценариев тестирования из тестовых модулей Как показано на рисунках 2 и 4, тестовые модули можно создавать из тестов как во время записи, так и после нее. Каждый сплит-тест представляет собой взаимозаменяемый тестовый модуль. Такие модули можно реорганизовывать и объединять в сценарии большего или меньшего размера. На рисунке 6 показаны примеры использования различных тестовых модулей (от А до D) для создания различных сценариев тестирования. Также рисунок демонстрирует, что некоторые из модулей, такие как А и D, используются повторно в нескольких комбинациях сценариев. Рисунок 6. Создание сценариев тестирования с использованием тестовых модулей Некоторые рекомендации по записи и делению сценариев тестирования:
Динамический обмен данными между тестами при помощи тестовых переменных Функциональность тестовых переменных играет существенную роль в процессе деления теста. После деления записи теста на более мелкие тестовые модули становится необходим механизм для обмена данными между ними. Эту функциональность обеспечивают тестовые переменные, предоставляемые Rational Performance Tester. Вы можете определить переменную в одном тесте, чтобы получить и сохранить данные теста, а затем сослаться на тестовую переменную в другом тесте. Если установить для видимости (области действия) тестовой переменной значение All tests for this user (все тесты для данного пользователя), а не This test only (только данный тест), Rational Performance Tester сохранит значение тестовой переменной после окончания теста. При обращении к этой же тестовой переменной из будущего теста она будет иметь то же значение для данного виртуального пользователя при условии, что тестовая переменная была вновь определена с видимостью All tests for this user. Использование тестовой переменной С точки зрения программирования использование тестовой переменной в Rational Performance Tester аналогично другим языкам программирования. Вы можете объявлять и инициализировать тестовые переменные, устанавливать область их действия и изменять их значения. Отличие между использованием переменных в тестах Rational Performance Tester и других программах состоит в том, что все это можно делать с помощью графического пользовательского интерфейса, а программное обеспечение создаст программный код за вас. Кроме того, Rational Performance Tester предоставляет возможности обработки ошибок во время выполнения и совместного использования переменных тестовыми модулями. Рисунок 7. Блок-схема использования тестовой переменной Объявление переменных Следующим шагом после определения тестовых модулей, которые вы хотите связать друг с другом, является объявление переменных и присвоение им соответствующих значений. Процесс объявления переменной прост:
Рисунок 8. Объявление переменной Контейнер Test Variables в тесте, который генерируется из записи, нельзя удалить, но можно переименовать. Если вы определяете для теста много тестовых переменных, можно добавить вложенные контейнеры, чтобы лучше организовать переменные. Рекомендуется использовать осмысленные имена для тестовых переменных и контейнеров, которые вы определяете. При объявлении переменной по умолчанию присваивается значение в виде пустой текстовой строки. Можно заменить это значение своей собственной текстовой строкой или значением из другого источника данных, такого как пул данных, ссылка, пользовательский код или другая тестовая переменная. При желании можно изменить или деинициализировать тестовую переменную с помощью оператора присваивания. Пример приведен на рисунке 11. Также тестовую переменную можно вызывать и изменять с помощью пользовательского программного кода. Кроме того, у вас есть возможность обработки ошибок времени выполнения, если переменная не инициализирована. Вы можете ничего не предпринимать, можете занести ошибку или предупреждение теста в журнал, а можете выйти из теста. Хотя обработка ошибок времени выполнения не является обязательной, она важна при обмене данными между тестами. Если, например, ошибка произойдет в первом тесте, переменной не будет присвоено значение, в результате чего другие тесты получат пустое значение. См. пример на рисунке 9. Область действия переменной Тестовая переменная во время выполнения хранится в области данных. Ее область действия определяет, будет ли переменная видима для других тестов или нет. На рисунках 7 и 9 показаны два варианта для настройки области действия переменной. Можно установить область действия переменной в This test only или в All tests for this user. Это похоже на локальные или глобальные (переменные класса) переменные в других языках программирования. Рисунок 9. Настройка области действия переменных Использование тестовых переменных
Использование локальной переменной Локальная переменная - это переменная, областью действия которой является только данный тест (опция This test only). На такую переменную можно ссылаться только в том тесте, в котором она объявлена, но не в других тестах. Это происходит потому, что набор данных одного теста невидим для других тестов, даже если другой тест содержит переменную с таким же именем. Локальная тестовая переменная доступна только при посредстве пользовательского кода. На рисунке 10 приведен пример использования локальных переменных, которым присваиваются значения из пула данных (учетные данные). Затем значение тестовой переменной подставляется вместо данных, фигурировавших при записи теста (имя пользователя и пароль). Просто изменив область действия этих переменных, можно ссылаться на них в других тестах, которые используют для входа в систему эту же информацию. Рисунок 10. Тестовая переменная инициализируется значением из пула данных Пользовательская переменная Область действия пользовательской переменной устанавливается в All tests for this user, что делает переменную видимой для всех тестов, выполняемых одним и тем же виртуальным пользователем. На пользовательскую переменную можно ссылаться из другого теста, объявив переменную с тем же именем и установив ее область действия во втором тесте в All tests for this user. Чтобы переменная была видима для второго теста, область действия переменной в первом тесте также должна быть установлена в All tests for this user. Общие переменные
Обработка ошибок времени выполнения для тестовых переменных очень важна, особенно при совместном использовании их с другими тестами. Существует возможность, что во время выполнения первого теста возникнут ошибки, и переменной не будет присвоено значение. Если переменная не инициализирована, вы должны решить, что делать дальше. Rational Performance Tester предоставляет следующие возможности (см. рисунок 7):
На рисунках 11 и 12 приведены примеры передачи данных из одного теста в другой с помощью пользовательских тестовых переменных. На рисунке 11 тестовая переменная orderNumber объявляется и инициализируется текстовой строкой no-value. Впоследствии ее значение устанавливается равным номеру заказа в пользовательском коде при помощи операции присваивания. Рисунок 11. Пример использования тестовой переменной На рисунке 12 показан второй тестовый модуль (VA02), который использует переменную с тем же именем, что и тестовый модуль VA01. Тестовый модуль VA02 удаляет заказы, которые создает тестовый модуль VA01. В этом примере тестовый модуль VA02 ссылается на данные из теста VA01, а не, например, из пула данных, сгенерированного пользователем. Рисунок 12. Ссылка на тестовую переменную из другого теста Теперь, когда вы узнали, как создавать модульные тестовые сценарии и связывать их с помощью тестовых переменных, рассмотрим пример моделирования сценария при помощи тестовых модулей. Моделирование рабочей нагрузки Когда тестовые модули разработаны и настроены их можно объединять и комбинировать друг с другом для имитации сценариев рабочей нагрузки. На рисунке 13 приведен пример использования различных тестовых модулей для моделирования сценария рабочей нагрузки. В этом примере тестовые модули Login, Create order и Logout были получены из одного теста (VA01) при помощи функциональности разделения теста. Затем эти модули были объединены и скомбинированы с тестовым модулем Delete order (VA02), полученным из другого теста. Структура сценария При создании сценария важно придерживаться общей структуры теста. Например, структура SAP-теста включает в себя вход в систему, другие задачи и выход из системы. Эту структуру необходимо сохранять, чтобы тест воспроизводился правильно. Как уже было показано на рисунках 11 и 12, тестовые модули Create order и Delete order связаны между собой посредством тестовой переменной orderNumber . Рисунок 13. Модельные сценарии с различными тестовыми модулями SAP Этот сценарий рабочей нагрузки позднее можно расширить, включив другие функции путем вставки других тестовых модулей между входом и выходом из системы. Его также можно сократить, удалив или отключив тестовые модули, которые не нужны для конкретного сценария. При моделировании нагрузки с использованием записей HTTP-тестов всегда проверяйте переменные сплит-тестов, сгенерированные Rational Performance Tester, чтобы удостовериться, что переменные из последующих тестовых модулей создаются и получают значения в тестовом модуле, который выполняется перед ними.
Преимущества использования сплит-тестов и тестовых переменных Вот лишь некоторые преимущества использования функциональности разделения тестов и тестовых переменных:
Эта статья посвящена созданию модульных тестов производительности при помощи предоставляемой IBM Rational Performance Tester функциональности разделения тестов с последующим обменом данными между тестовыми модулями с использованием функциональности тестовой переменной. С помощью функциональности разделения тестов можно получать тестовые модули из существующих записей, сохраняя при этом исходные сценарии. Кроме того, можно разделять и аннотировать тест во время записи с помощью панели инструментов Annotation. Поддержка тестовых переменных облегчает обмен данными между тестовыми модулями. Тестовые переменные используются для обмена данными внутри теста и между тестами. Тестовые переменные также используются для обмена данными между обычными тестами, не разделенными на модули. Тестовые модули можно сочетать и заменять, создавая пользовательские сценарии большего или меньшего размера в зависимости от целей тестирования. Модульность тестов дает ряд преимуществ:
Во второй части руководства представлен реальный пример использования тестовых переменных Rational Performance Tester. Изучите этот пример шаг за шагом, чтобы получить практический опыт. Ссылки по теме
|
|