Создание в Rational Performance Tester расширенного теста загрузки файла

Источник: IBM

Об этой статье

Многие Web-приложения имеют функциональность загрузки, позволяющую пересылать или хранить файлы в виде двоичных данных. Хотя в IBM Rational Performance Tester имеются функции для управления двоичными данными в записях тестов, иногда необходим более глубокий уровень настройки. Примеры статьи демонстрируют использование в Rational Performance Tester функции замены основного файла и создание более сложных тестов, использующих несколько файлов и несколько платформ.

Статья предназначена для пользователей Rational Performance Tester с уровнем квалификации от среднего до продвинутого.


Запись операции загрузки

Операции загрузки записываются обычным способом. В приведенном ниже примере показаны действия для Web-приложения, использующего протокол HTTP, но те же подходы применяются и для других сетевых протоколов.

  1. В Rational Performance Tester запустите программу записи с использованием HTTP, чтобы создать тест из новой записи - Test From New Recording (см. рисунок 1).
Рисунок 1. Настройки создания нового теста

Настройки создания нового теста

Запустится указанный в программе записи браузер (Windows > Preferences > RPT HTTP Recording), который используется для выполнения операции Upload (загрузка).

Совет.
При помощи панели инструментов Rational Performance Tester непосредственно перед выполнением загрузки вставьте комментарий или название операции, чтобы впоследствии ее можно было легко идентифицировать.

Рисунок 2. Панель инструментов Recorder Test Annotation

Панель инструментов Recorder Test Annotation

После завершения программы записи и закрытия браузера будет автоматически сгенерирован тест.

Rational Performance Tester автоматически определит двоичные данные, связанные с переменной MimeFileContent (см. рисунок 3).

Рисунок 3. Генерирование теста

Генерирование теста


Замена основного файла

В большинстве сценариев тестирования различные одновременно работающие пользователи многократно выполняют одни и те же операции. Это относится и к операциям загрузки. Сценарий тестирования будет более реалистичным, если пользователи будут загружать разные файлы, а не только тот, который использовался при записи.

В Rational Performance Tester это можно сделать за несколько шагов при помощи встроенных функций:

  1. Создайте каталог (например, C:\Datapool) и поместите в него все файлы, которые будут использоваться в тестах.
  2. Создайте CSV-файл с содержимым этого каталога, указав полный путь к каждому файлу. Для этого можно выполнить в командной строке следующую команду:
    C:\>dir /b /s c:\Datapool > datapool.csv
  3. Создайте новый пул, состоящий из одного столбца (см. рисунок 4).
Рисунок 4. Пример пула

Пример пула

  1. Снимите отметки с обоих флажков в разделе Options (см. рисунок 5):
    • First row contains variable names and optional suggested types
    • First column contains equivalence class names and optional row numbers
Рисунок 5. Пример пула 2, мастер New Datapool

Пример пула 2, мастер New Datapool

Пул приведен на рисунке 6.

Рисунок 6. Пример пула 3

Пример пула 3

  1. Дважды щелкните левой кнопкой мыши на имени столбца и укажите следующие значения:
    • Name:Path
    • Type:unManageFile
Рисунок 7. Пример пула 4, задание типа unManagedFile для переменной Path

Пример пула 4, задание типа unManagedFile для переменной Path

  1. Выберите переменную, связанную с двоичными данными в тестовых данных, и нажмите Substitute (см. рисунок 8).
Рисунок 8. Замена данных 1

Замена данных 1

  1. Нажмите Select Data Source.
Рисунок 9. Select Data Source

Select Data Source

  1. В диалоговом окне Select Data Source выберите Datapool.
Рисунок 10. Замена данных 2

Замена данных 2

  1. В диалоговом окне Select datapool column (см. рисунок 11) выберите пул и столбец, который хотите включить в тест.
Рисунок 11. Замена данных 3, выбор пула и столбца

Замена данных 3, выбор пула и столбца

  1. Выберите режим доступа, который будет использоваться в тесте (в нашем примере это Shared (per machine) для Open mode и Random для Access).

Настройки, показанные на рисунке 12, означают произвольный выбор файла при выполнении каждой итерации. При достижении последней строки пула выполнение начнется повторно с первой строки.

Рисунок 12. Настройки пула для режима доступа

Настройки пула для режима доступа

  1. Выберите столбец пула, который хотите связать с тестовой переменной (Path).
Рисунок 13. Замена данных 4

Замена данных 4

При правильном выполнении предыдущих шагов вы увидите замены в представлении Test Data (см. рисунок 14).

Рисунок 14. Замена данных 5

Замена данных 5

Теперь можно выполнить тест с несколькими пользователями. Каждый из них на каждой итерации будет выбирать из пула произвольный файл и менять двоичные данные в HTTP-запросе загрузки.

Такая настройка должна работать в большинстве случаев, хотя иногда может потребоваться замена и других переменных. Например, можно задать имя файла в другой переменной или может потребоваться также указать расширение файла. Некоторые из этих сценариев будут рассмотрены в следующем разделе.


Расширенные тесты

В данном разделе рассматриваются два примера расширенных тестов, дополняющих описанный выше базовый сценарий.

Выполнение теста на различных платформах

Одним из требований замены файла является указание в пуле полного пути к файлу. Это означает, что файл должен находиться в конкретном месте агента тестирования. Например, если создан сценарий для агента Microsoft Windows, его можно выполнить на любой Windows-машине, просто скопировав папку пула в то же самое место на машине тестирования. Однако он не будет работать на платформе Linux. Если в среде тестирования присутствуют агенты как под Windows, так и под Linux, можно после всех изменений данных создать копию теста и отредактировать ее для использования в Linux.

  1. Чтобы создать Linux-версию, выполните описанные выше шаги для создания пула Linux, а затем замените переменную двоичных данных на столбец пула Linux.
Рисунок 15. Замена данных, Linux

Замена данных, Linux

  1. Добавьте в начало теста специальный код, определяющий операционную систему машины, на которой будет выполняться тест.
Рисунок 16. Добавление специального кода

Добавление специального кода

  1. Измените метод exec специального кода в соответствии с листингом 1.
Листинг 1. Изменение метода exec специального кода test.GetOs
public String exec(ITestExecutionServices tes, String[] args) {
    String os = System.getProperty("os.name");
    if (!os.startsWith("Windows")){
           return "Linux";
    }else{
           return "Windows";
  }
  }

Вставьте все операции и страницы после специального кода в условии If и укажите следующие параметры условия и управления тестом (см. рисунок 17).

  • First operand: custom code: test.GetOS
  • Operator: Equals
  • Second operand: Linux
Рисунок 17. Параметры условия If

Параметры условия If

Примечание.
Измените Windows-сценарий аналогичным образом, но в качестве второго операнда (Second operand) условия If укажите Windows.

Теперь можно создать программу тестирования, содержащую обе версии теста загрузки. Во время исполнения в зависимости от операционной системы агента, на котором выполняется сценарий, будет запущена соответствующая версия, а другая будет пропущена.

Рисунок 18. Шаблон Upload Schedule

Шаблон Upload Schedule

Согласование других параметров

Простая функция замены файла достаточна для большинства случаев, но иногда необходимо согласовать другие параметры, чтобы запрос загрузки работал правильно. Это может быть:

  • Использование различных имен файлов.
  • Использование специфичного расширения файла.
  • Использование специфичного MIME-типа.

В следующем примере будут настроены параметры содержимого файла, а также сгенерировано произвольное имя файла, содержащее расширение, соответствующее типу файла, указанному в пуле. На рисунке 8 показан параметр HTTP-запроса file, который представляет имя файла. В нем задается имя файла, загружаемого в процессе записи (Desert.jpg). В пуле основного файла (см. рисунок 6) есть разные типы файлов (.bmp, .doc, .zip и т.д.). Если не коррелировать это значение во время исполнения (когда Rational Performance Tester меняет содержимое файла), файл будет загружен с именем, заданным в процессе записи. Во избежание этого нужно заменить данный параметр при помощи специального кода, который сгенерирует произвольное имя файла и добавит расширение, передаваемое в HTTP-запросе.

Существует много способов сгенерировать произвольное имя. Простейший из них - добавить к имени файла метку времени (которая является переменной Rational Performance Tester). Чтобы получить более реалистичные имена файлов, в следующем примере будут использованы четыре пула слов (Words), из которых будет выбираться произвольное число слов для создания имени файла. Кроме того, будет добавлено расширение на основании файла, выбранного из пула.

  1. Пулы Words можно создать из CSV-файла слов по аналогии с процедурой, примененной для пула Files. Слова не должны содержать специальных символов.

Результат должен быть похож на пул Words, показанный на рисунке 19.

Рисунок 19. Пул Words

Пул Words

  1. Создайте четыре копии этого пула, присваивая разные имена каждому экземпляру (например, Filenames_part1). Нужно просто сохранить данный пул четыре раза под разными именами (Files > Save As).
  2. Вставьте специальный код в начало теста. В листинге 2 приведен метод exec специального кода.
Листинг 2. Метод exec специального кода
  public String exec(ITestExecutionServices tes, String[] args) {
       Random randomGenerator = new Random(); 
       int random = randomGenerator.nextInt(100) + 1;
  
       String filename=args[0];
  
       if (random>25)filename=filename+" "+args[1];
       if (random>50)filename=filename+" "+args[2];
       if (random>75)filename=filename+" "+args[3];
       String extension=args[4].substring(args[4].lastIndexOf(".")+1,args[4].length());
       filename=filename+"."+extension;
return filename; }
  1. Добавьте переменные пула в качестве аргументов специального кода. Их нужно добавлять в следующем порядке:
    • Filenames_part1.string
    • Filenames_part2.string
    • Filenames_part3.string
    • Filenames_part4.string
    • TestFiles.Path
  2. Чтобы добавить эти переменные, просто нажмите кнопку Add на панели Arguments. Можно применить действия и настройки, которые использовались при импорте пула TestFile.

В итоге панель Arguments для специального кода должна быть похожа на рисунок 20.

Рисунок 20. Генерирование специального кода Filename

Генерирование специального кода Filename

  1. Теперь замените переменную файла при помощи только что созданного специального кода, применяя те же действия, которые использовались при замене содержимого файла.

Ваш запрос должен походить на рисунок 21.

Рисунок 21. Замена имени файла при помощи специального кода

Замена имени файла при помощи специального кода

Замена нескольких имен файлов

Если имя файла встречается в запросе несколько раз, просто повторите предыдущий шаг для всех экземпляров. В качестве альтернативы можно использовать функцию Find в Rational Performance Tester. Выполните следующие действия:

  1. Дважды щелкните левой кнопкой мыши на переменной файла в представлении Test Data (см. рисунок 21), чтобы перейти к экземпляру в HTTP-запросе.
  2. Щелкните правой кнопкой мыши на выделенном тексте (см. рисунок 22) и выберите Find more and substitute в ниспадающем меню (см. рисунок 23).
Рисунок 22. Замена нескольких экземпляров имени файла - 1

Замена нескольких экземпляров имени файла - 1

Рисунок 23. Замена нескольких экземпляров имени файла - 2

Замена нескольких экземпляров имени файла - 2

  1. В представлении Substitute multiple items пройдите по всем экземплярам имени файла в запросах и отметьте те из них, которые хотите заменить.
Рисунок 24. Замена нескольких экземпляров имени файла - 3

Замена нескольких экземпляров имени файла - 3

  1. Нажимайте Substitute checked до тех пор, пока все экземпляры не будут заменены.

 

Страница сайта http://www.interface.ru
Оригинал находится по адресу http://www.interface.ru/home.asp?artId=34748