СМ-Консалт
 

Обработка тестовых данных с помощью IBM Rational Performance Tester 7.0: Часть 2: Использование файлов для очень больших наборов тестовых данных

Статьи Тестирование программного обеспечения

Введение

Тестовые данные являются важной деталью при тестировании большей части программного обеспечения, особенно при тестировании производительности, которое обычно требует большого количества тестовых данных. IBM® Rational Performance Tester использует структуры пула данных Eclipse Test and Performance Tools Platform (TPTP) для обработки тестовых данных. Rational Performance Tester включает в себя много возможностей, делающих использование этих пулов данных чрезвычайно простым и гибким. Тем не менее, после начала использования пулов данных, содержащих более 10000 строк данных, могут возникать длительные задержки при запуске теста. При тестировании производительности больших систем потребность в тестовых данных объёмом в миллион и более записей не является чем-то невообразимым. В таких ситуациях пулы данных TPTP могут быть не самым эффективным решением.

Цель

Данная серия показывает, как создать в Rational Performance Tester тесты, использующие вместо пулов данных файлы для хранения и обработки тестовых данных. Данная методика может быть использована для реализации потребности в использовании больших наборов тестовых данных при тестировании производительности с использованием Rational Performance Tester.

В Части 1 этой серии из двух статей вы создали тест при помощи пула данных. Сейчас, в Части 2, вы преобразуете этот же тест для использования файла тестовых данных вместо пула данных.

Примечание: Данная статья была написана с использованием Performance Tester версии 7.0.0. Всё, что в ней указано, должно работать и с последующими версиями, хотя отдельные процедуры могут измениться. Данную статью можно также использовать с RPT версии 6.1.2, хотя некоторые скриншоты и процедуры могут не совсем совпадать. Performance Tester версии 6.1.1 и более ранние работать не будет ввиду изменений в API Performance Tester.


Обработка больших объёмов тестовых данных с помощью Rational Performance Tester

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

 
Важно! Пример в данной статье использует Web-сайт IBM® developerWorks® для записи и запуска очень маленького теста. Этот Web-сайт не должен использоваться для тестирования нагрузки. Пожалуйста, не запускайте больше пользователей, чем указано в данной статье. Кроме того, не запускайте повторений теста больше, чем необходимо для выполнения заданий из данной статьи.

Установка файлов статьи

К данной статье прилагаются несколько файлов следующего назначения:
  • TestData.csv: Файл, содержащий 50 случайных имён, используемых как строки для поиска.
  • GetTestData.java: Законченный пользовательский модуль с кодом, из которого вы можете копировать и вставлять.
  • SetupTestDataArea.java: Законченный пользовательский модуль с кодом, из которого вы можете копировать и вставлять.

Эти файлы уже должны быть загружены и распакованы в директорию C:\temp\, если вы выполнили соответствующие шаги в Части 1 данной статьи; если нет — сделайте это. Если разместить эти файлы в другом месте, вам придётся выполнить несколько операций, чтобы обновить их размещение. Об этом идёт речь в следующих разделах.

Стратегия Rational Performance Tester в области пользовательского кода

Вы будете добавлять код к тесту, эмулирующему встроенную в Rational Performance Tester функциональность пула данных. Это означает, что вам требуется моделирование работы множества пользователей, одновременно запускающих экземпляры одного и того же теста, каждый из которых выбирает уникальную запись тестовых данных из файла. Каждый раз, когда экземпляр теста получает запись из файла тестовых данных, вам нужно прирастить общий указатель на строку в файле, чтобы следующий экземпляр теста (смоделированный пользователь) извлекал следующую строку.

Чтобы использовать общий указатель строки, вам нужен интерфейс сервисов выполнения тестов IDataArea из Rational Performance Tester. Запустите его как отдельный тест перед запуском других тестов, получающих тестовые данные. Чтобы получить тестовые данные из файла, используйте простые методы java.io, например StreamTokenizer.

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

Создание теста при помощи файла данных для тестовых данных

Для создания теста и тестовых данных выполните следующие шаги:

  1. Скопируйте первый записанный тест.
    Теперь вы создадите второй тест, использующий исходный CSV-файл для тестовых данных вместо пула данных. Так как требуется выполнить точно такие же шаги, вам не понадобится перезаписывать тест. Создайте копию первоначальной записи и используйте её как новый тест.
    1. На панели инструментов нажмите кнопку icon1 Create New Test From Recording.
    2. В окне Create New Test выберите Create Test From Existing Recording и HTTP Recording, как показано на Рисунке 1. Нажмите Next.

      Рисунок 1. Создание теста из существующей записи
      Выбор типа рекордера

    3. В следующем окне Create New Test From Recording выберите запись LargeTestData_datapool.rec, которая была записана в Части 1 (Рисунок 2).

      Рисунок 2. Выбор существующей записи для создания нового теста
      Выбор места для записи

    4. В следующем окне Create New Test From Recording, выберите папку tests и введите имя LargeTestData_data_file, как показано на Рисунке 3. Нажмите Finish для создания нового теста.

      Рисунок 3. Выбор места и имени для нового теста
      выбор места для тестовой последовательности

  1. Добавьте пользовательский код для доступа к файлам тестовых данных.

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

    1. Добавьте новый класс пользовательского кода к тесту LargeTestData_data_file, нажав правой кнопкой мыши на второй странице (озаглавленной developerWorks : Rational : Products : Performance Tester) в разделе Test Contents и выбрав Add > Custom Code, как показано на Рисунке 4.

      Рисунок 4. Добавление пользовательского кода
      Содержание теста

    2. Будет создан модуль пользовательского кода как раз перед поисковой страницей под названием IBM developerWorks > Search results в разделе Test Contents. Если пользовательский код находится не прямо перед последней страницей, можно использовать кнопки Up и Down в середине редактора теста для правильного размещения кода.
    3. Введите имя test.custom.GetTestData в поле Class name (Рисунок 5) and нажмите Generate Code.
      Примечание: Обязательно поставьте точку после custom в имени класса. Будет создан пакет под названием custom, содержащий код, который вы разрабатываете. Так легче отличить ваш пользовательский код от других файлов Java™, созданных Rational Performance Tester в тестовом пакете. Не рекомендуется редактировать сгенерированные Rational Performance Tester Java-файлы в тестовом пакете.

      Рисунок 5. Имя и размещение пользовательского кода
      Содержание теста и детали элементов тестов

    4. В окне Code Editor для GetTestData.java class введите код, данный ниже в листингах. Можно также скопировать его из прилагающихся к статье файлов.

      Листинг 1. Получение указателя строки в текущем файле и инициализация переменной возврата






      Листинг 2. Открытие файла, переход к текущей строке и получение значения
      Редактирование пути, переход к текущей строке, приращение указателя, переход вверх





      Листинг 3. Обновление нового указателя строки и возврат тестовых данных
      put TestDataRowPtr


      Код GetTestData делает следующее:

      • Получает указатель строки текущего файла, хранимый как объект, но используемый как целое, из переменной global в области данных для тестового движка (будет настроено позже)
      • Открывает файл тестовых данных для чтения с помощью StreamTokenizer, чтобы анализировать значения (имя файла и путь жёстко заданы)
      • Переходит к текущей общей строке файла тестовых данных при помощи метода nextToken
      • Приращивает указатель строки для следующего виртуального пользователя или, если достигнут конец файла, переходит к его началу и сбрасывает указатель в значение 1 
      • Получает значение из файла при помощи метода sval
      • Перехватывает и обрабатывает потенциальные исключения файла и ввода/вывода
      • Возвращает значение файла в тест

      Примечание: Более подробная информация по пользовательскому коду в Rational Performance Tester содержится в разделе помощи Расширение выполнения тестов при помощи пользовательского кода.

    5. Помимо кнопки View Code в редакторе теста, открывать и редактировать классы пользовательского кода можно также открыв представление Navigator и перейдя в папку \src\test\custom, как показано на Рисунке 6.

      Рисунок 6. Открытие пользовательского кода вне теста
      Выбор Java-файла в представлении Navigator


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

    6. Создайте новый пустой тест, нажав правой кнопкой на папку tests и выбрав New > Other > Test > Test Assets > New HTTP Test, как показано на Рисунке 7.

      Рисунок 7. Новый HTTP-тест
      Выбор мастера

    7. В окне New HTTP Performance Test введите имя LargeTestData_setup, а затем нажмите Next.
    8. Введите описание и нажмите Next.
    9. В последнем окне New HTTP Performance Test измените Number of HTTP pages to generate на 0 (ноль), как показано на Рисунке 8.
    10. Нажмите Finish.

      Рисунок 8. Создание пустого теста
      Мастер расширения HTTP

    11. Добавьте новый класс пользовательского кода к тесту LargeTestData_setup, нажав правой кнопкой в разделе Test Contents и выбрав Add > Custom Code.
    12. Введите имя класса test.custom.SetupTestDataArea как показано на Рисунке 9, а затем нажмите Generate Code.

      Рисунок 9: LargeTestData_setup test
      Ввод имени класса в Test Element Details

    13. В окне редактора кода введите для класса SetupTestDataArea.java строки кода, показанные в Листинге 4. Также их можно скопировать из прилагаемых к статье файлов.

      Листинг 4. Код SetupTestDataArea




      Код SetupTestDataArea делает следующее:
      • Создаёт переменную testDataRowPtr, инициализируемую со значением 1
      • Хранит глобальную переменную в области данных для тестового движка, что обеспечивает доступ из различных тестов и различных групп пользователей.
    14. Сохраните и закройте и SetupTestDataArea.java, и тест LargeTestData_setup.
  1. Замените записанное искомое значение на значение, возвращённое кодом.

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

    1. В тесте LargeTestData_data_file разверните последнюю страницу в Test Contents, она должна быть озаглавлена IBM developerWorks > Search results.
    2. Выберите первый запрос (первая строка/узел на развёрнутой странице). В разделе Request Attributes справа вы увидите URL, отображаемый с закодированными параметрами, в том числе «query=RecordedSearch» с RecordedSearch — это строка для поиска, которую вы ввели во время записи. Это значение отображается инвертированным тёмно-зелёным цветом, что означает, что в настоящий момент оно подменяется на значение пула данных.
    3. В окне URL нажмите правой кнопкой мыши на значение RecordedSearch и выберите Substitute From > Custom Code: test.custom.GetTestData, как показано на Рисунке 10. В результате подмена будет выполняться не из значения пула данных, а из значения, возвращаемого классом пользовательского кода.

      Рисунок 10. Подмена значения пользовательского кода
      Запрос атрибутов

    4. В разделе Test Data редактора тестов вы теперь должны видеть, что запрос заменён на пользовательский код GetTestData, как показано на Рисунке 11.

      Рисунок 11. Подмена параметров тестовыми данными пользовательского кода
      Раздел Test Data

    1. Создайте новый график, нажав правой кнопкой мыши на папку schedules на панели Test Navigator и выбрав New > Performance Schedule.
    2. В окне Performance Schedule введите имя LargeTestData, а затем нажмите Finish.
    3. Добавьте ещё одну группу пользователей, нажав правой кнопкой в разделе Schedule Contents и выбрав Add > User Group.
    4. Введите имя группы Initialization и измените размер группы на Absolute со значением 1. Если эта группа расположена не в самом верху раздела Schedule Contents, то нажимайте кнопку Up для её перемещения наверх.
    5. Добавьте тест к группе Initialization, нажав правой кнопкой Initialization (1 user) в разделе Schedule Contents (Рисунок 11) и выбрав Add > Test.
    6. В окне Select Performance Tests выберите LargeTestData_setup и нажмите OK.

      Рисунок 12. График работы группы пользователей Initialization
      Schedule Contents и Schedule Element Details

    7. Измените имя другой группы пользователей, выбрав группу в разделе Schedule Contents и введя Users в поле имени группы. Размер группы должен остаться Percentage со значением 100.
    8. Добавьте цикл к группе Users, нажав правой кнопкой мыши Users в разделе Schedule Contents и выбрав Add > Loop.
    9. При выбранном цикле в правой части Schedule Element Details введите количество итераций 3.
    10. Отметьте чекбокс Control the rate of iterations и введите частоту итераций 10 в минуту, как показано на Рисунке 13.

      Рисунок 13. График работы частоты повтора цикла
      Раздел Schedule Contents

    11. Добавьте тест к группе Users, нажав правой кнопкой мыши на Loop в разделе Schedule Contents и выбрав Add > Test.
    12. В окне Select Performance Tests выберите LargeTestData_data_file (Рисунок 14) и нажмите OK.

      Рисунок 14. График работы группы Users
      График работы для LargeTestData

    13. Установите опцию графика, выбрав имя графика LargeTestData в верхней части раздела Schedule Contents.
    14. В разделе Schedule Element Details на вкладке General отметьте чекбокс Add a delay between starting each user и введите задержку в 500 миллисекунд.
    15. Нажмите вкладку Test Log в разделе Schedule Element Details для установки уровня регистрации событий. Установите Log Level для And also show all other types в состояние Action Details, как показано на Рисунке 15. Можно проигнорировать предупреждение с рекомендацией, так как тест не будет регистрировать чрезмерно большой объём данных.

      Рисунок 15. График работы LargeTestData
      Выбор событий для регистрации и уровней регистрации



      Важно! Как указывалось ранее, сайт IBM developerWorks Web не должен использоваться в качестве сайта для нагрузочного тестирования. Пожалуйста, не запускайте больше пользователей, чем указано в данной статье. Кроме того, не запускайте повторений теста больше, чем необходимо для выполнения заданий из данной статьи.
  1. Выполнение теста и верификация используемых тестовых данных.
    1. Запустите график, нажав на панели инструментов кнопку icon2 Run.
    2. В окне Run configurations отредактируйте конфигурацию, созданную в Части 1 данной серии.
    3. Нажмите вкладку Schedule и выберите график LargeTestData. Нажмите Run для начала выполнения.
    4. После завершения теста откройте историю выполнения, нажав правой кнопкой мыши LargeTestData [дата+время] в представлении Performance Test Runs и выбрав Display Execution History.
    5. Разверните события и убедитесь, что значения запросов различны и совпадают со значениями из файла тестовых данных. См. Часть 1 данной серии, где более подробно описывается, как это сделать.

Тестовые данные с файлами: резюме

Использование файлов для обработки тестовых данных в Rational Performance Tester позволяет вам работать с большими наборами данных, например в миллион и более записей, не испытывая длительных задержек при запуске тестов, как в случае с пулом данных аналогичных размеров. Данная методика не является более трудоёмкой по сравнению с использованием пулов данных, как в отношении пользовательского кода, так и при управлении файлами вне рабочего пространства Rational Performance Tester.


Заключение

Хотя пулы данных — это легкий способ связать тестовые данные с вашими тестами Rational Performance Tester, они могут стать неэффективными в случае очень больших размеров общем случае больше 10000 записей). Для преодоления этой проблемы Rational Performance Tester позволяет использовать файлы тестовых данных напрямую через пользовательский код, чтобы обрабатывать любой объём данных, необходимый для тестирования.

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

Вы даже не ограничены возможностями кодирования, присущими Rational Performance Tester: поскольку весь код Rational Performance Tester написан на Java, можно задействовать бесчисленные Java-библиотеки (многие из которых являются открытыми) для обработки файлов, манипуляций со строками, и любых других операций, необходимых вам для выполнения задач в области тестирования.



Загрузка

ОписаниеИмяРазмерМетод загрузки
50 random names used for search strings TestData2.zip 1 KB HTTP
A completed custom code module GetTestData2.zip 2 KB HTTP
A completed custom code module SetupTestDataArea2.zip 1 KB HTTP

24.02.2008

Комментарии

  • Need to contact admin
    Автор:   ·  14.02.2017 20:13:29
    Hello. I need to contact admin. Thank you.
  • Panamycin
    Автор:   ·  29.01.2017 23:34:03
    Where To Buy Viagra Pills Bulk Cialas Propecia Testosterone Buy Cialis Low Cost Viagara Vasotec Cephalexin 500 Mg Picture Generic Dutasteride Low Price Amex Accepted Free Consultation Buy Cialis Amoxicillin By Vbulletin Intitle View Profile Dosage For Amoxil For Children Buy Xenical Online Australia No Prescriptionalli Orlistat Fast Delivery Overdose On Keflex Viagra Professionnelle viagra cialis Cialis Netpharm Clomid Effets Indesirables levitra for sale Dutasteride Avolve Bangor Zithromax Therapeutic Class Viagra Battute Amoxicillin Improvement Noticed In Bowel Bacteria viagra cialis Antabuse Greece Necesito Tomar Cialis Comparatif Viagra Cialis Levitra viagra forum Propecia Target Rx Express Canada Drugs Prix Cialis 10 Mg Maroc Order Effexor Xr Without Prescription Cheap Viagra Propecia 1mg Approved Levitra 10 Rover Orodispersible Prix Du Propecia Online Viagra Cialis Kaufen Amoxicillin Order Online viagra online prescription Viapro Without Prescription Prednisone Side Effects Bentyl Best Website Next Day Meilleure Facon De Durer Plus Longtemps Amoxicillin And Creatine Interactions viagra Orlistat 120mg Online No Script Come Il Viagra Priligy Dapoxetine Viagra perte propecia effets secondaires Prix Reel Viagra Se Puede Comprar Viagra Sin Receta En Farmacias
  • VzOpdbsxdiiho
    Автор: Deep thinking - adds a new diemnsion to it all.  ·  23.07.2016 12:49:57
    Deep thinking - adds a new diemnsion to it all.
  • nUHfRAWLETKcvAdN
    Автор: I had no idea how to approach this beon-erfow I'm locked and loaded. http://hovskx.com [url=http://xuujmfm.com]xuujmfm[/url] [link=http://hegxvq.com]h  ·  23.07.2016 06:40:41
    I had no idea how to approach this beon-erfow I'm locked and loaded. http://hovskx.com [url=http://xuujmfm.com]xuujmfm[/url] [link=http://hegxvq.com]hegxvq[/link]
  • fpvNTIXpePapGxAceFAT
    Автор: That's a que-ckwittid answer to a difficult question  ·  21.07.2016 20:35:23
    That's a que-ckwittid answer to a difficult question
  • MpmsnsdnKrPW
    Автор: Small BBW, looking for a "Friend" I are Geeky, outgoing, trryhwoutts, and smart. You should like bigger young women, im a fine . No one over x i high  ·  21.07.2016 00:14:58
    Small BBW, looking for a "Friend" I are Geeky, outgoing, trryhwoutts, and smart. You should like bigger young women, im a fine . No one over x i highly single women recommend you. If you want in hang dating forum ing released, let me find out: ) . cybersex chat Plei Soen, Neszele, Mongheri

Добавить комментарий (анонимные комментарии не публикуются!!!)

ФИО: 
E-mail: 
Тема: 
Комментарий: 
Оценка:   
 
 
 
 
 
Код подтверждения:
   

Новости СМ-Консалт

Мастер-класс для тренеров и руководителей "Работа в аудитории". 1 ступень уже в марте

Обновлено расписание тренингов до марта 2017 года

Бесплатный вебинар 14 декабря в 14 00 по Мск - «Секреты управления ИТ-командой: 10 важных практик, которые сделают команду эффективной»

Новые статьи в библиотеке

Примеры отраслевых решений на основе BIPULSE

Практика реализации модуля интеграции для Rational Software Architect, позволяющего преобразовывать низкоуровневое представление процесса из IBM Rational ClearQuest в UML

Что удивляет в русских менеджерах иностранцев

Разработка ПО с использованием лучших мировых практик и инструментов на Иркутском авиационном заводе

Презентация доклада для IT Global Meetup Санкт-Петербург: "Почему Agile так популярен? Взгляд циника и психолога"

Отчет, презентация и видео доклада для Октябрьской встречи Петербургского клуба менеджеров проектов в IT - SPM Meetup #36

Заказчики и истории успеха

Наши тренинги, семинары, курсы

Дружите с нами на FaceBook

Проверить настройки
Компания
Сделано в СМ-Консалт
Услуги 
Компетенция
  • CMC-TotalTest (скоро)
    уникальная разработка автоматизации функционального тестирования. Альтернатива HP UFT, IBM RFT и Microsoft!
  • CMC-Bisquiter
    автоматизированное тестирование АБС "Бисквит"
  • CMC-Formater
    тестирование печатных и экранных форм
  • CMC-TerminalTest
    тестирование терминальных приложений
  • ProjectTracker
    интеграция ALM и MS Project
  • GanttChart
    модуль управления проектами для IBM Rational ClearQuest и TeamConcert
    Все разработки СМ-Консалт >
  • ИТ-консалтинг
  • Автоматизированное тестирование
  • Ручное тестирование
  • Аутсорсинг тестирования
  • Оптимизация бизнес-процессов
  • Внедрение методологии и инструментов ALM
  • Обучение и коучинг
  • Разработка ПО
  • Интеграция
ООО СМ-Консалт (СМК), 2004-2016.
Карта сайта