Домой Учебники по Java и J2EE Как вызвать свой веб-сервис Restful с помощью JMeter? Выполните простое нагрузочное тестирование...

Как вызвать свой веб-сервис Restful с помощью JMeter? Выполните простое нагрузочное тестирование и автоматизацию

405
0

Передача репрезентативного состояния ( REST ) получила широкое признание в Интернете как более простая альтернатива веб-сервисам на основе SOAP и WSDL.

Основным свидетельством этого сдвига в дизайне интерфейса является принятие REST основными поставщиками услуг Web 2.0, включая Yahoo, Google и Facebook, которые устарели или перешли на интерфейсы на основе SOAP и WSDL в пользу более простого в использовании, ресурсно-ориентированная модель выставления своих услуг. Иногда вам нужно протестировать свой веб-сервис RESTFul. У вас может быть несколько вариантов:

  • Хит ваш веб-сервис, используя один URL
  • использование JMeter и нажмите WebService в цикле . Этот тест также выполняет некоторые простые Load Test ,

Здесь в этом примере я объясню вам, как создать простой Hello World WebService и нажмите тот же WebService, используя JMeter.

Если у вас есть какие-либо из следующих вопросов, вы находитесь в правильном месте:

  • Тестирование SOAP / REST Web-сервисов с использованием JMeter
  • Тестирование производительности RESTful API с использованием JMeter
  • Rest API Automation в JMeter — Тестирование производительности
  • Как протестировать REST API с помощью JMeter
  • Использование JMeter для тестирования веб-службы RESTful (Джерси)

Сводка действий:

  1. Pre-Requisite: Реализуйте этот сервис RESTFul полностью .
  2. Создайте простой Java-класс : CrunchifyJMeterTest.java (Сервис, который мы будем использовать с помощью JMeter).
  3. Повторно разверните то же приложение на веб-сервере Apache Tomcat .
  4. Запустите JMeter и откройте ниже предоставленный .jmx файл
  5. Запустите и проанализируйте свой тест

Другой должен прочитать:

Шаг 1

Pre-Requisite: Реализуйте этот сервис RESTFul полностью . Развернуть и запустить приложение.

Дайте мне знать, если увидите какие-либо проблемы с этим.

Шаг 2

Создайте CrunchifyJMeterTest.java файл

CrunchifyJMeterTest.java

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
пакет ком . crunchify. рестжерси ;
импорт Java . Ио. FileNotFoundException ;
импорт Java . Ио. IOException ;
импорт javax . WS. RS. ПОЛУЧИТЬ ;
импорт javax . WS. RS. Путь ;
импорт javax . WS. RS. Производит ;
/ **
* @author Crunchify
*
* /
@ Path ( / index )
общественности учебный класс CrunchifyJMeterTest {
@ GET
@ Производит ( text / html )
общественности строка checkECV ( ) выдает InterruptedException , FileNotFoundException , IOException {
строка результат знак равно

Эй, это тест Crunchify JMeter … ;

Система. вне. println ( результат ) ;
Thread. сон ( 1000 ) ;
вернуть результат ;
}
}

Вы должны увидеть ниже структуру каталогов Eclipse :

Шаг 3

Повторно разверните тот же проект CrunchifyRESTJerseyExample на Tomcat. Проверьте это в вашем REST Service.

URL: HTTP: // локальный: 8080 / CrunchifyRESTJerseyExample / crunchify / индекс /

Шаг 4

Скопируйте ниже код в файл и сохраните его как Crunchify-JMeter-Test.jmx ,

Crunchify-JMeter-Test.jmx

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
xml version = 1.0 encoding = UTF-8 ?>
< jmeterTestPlan version = 1.2 свойства = 2,4 jmeter = 2.9 r1437961 >
   < hashTree >
     < TestPlan guiclass = TestPlanGui testclass = TestPlan testname = App Shah Desktop Test enabled = true >
       < stringProp name = TestPlan.comments > < / stringProp >
       < boolProp name = TestPlan.functional_mode > false < / boolProp >
       < boolProp name = TestPlan.serialize_threadgroups > false < / boolProp >
       < elementProp name = TestPlan.user_defined_variables elementType = Аргументы guiclass = ArgumentsPanel testclass = Аргументы testname = Определяемые пользователем переменные enabled = true >
         < collectionProp name = Arguments.arguments / >
       < / elementProp >
       < stringProp name = TestPlan.user_define_classpath > < / stringProp >
     < / TestPlan >
     < hashTree >
       < ThreadGroup guiclass = ThreadGroupGui testclass = ThreadGroup testname = Тест JMeter службы REST Crunchify enabled = true >
         < stringProp name = ThreadGroup.on_sample_error > продолжить < / stringProp >
         < elementProp name = ThreadGroup.main_controller elementType = LoopController guiclass = LoopControlPanel testclass = LoopController testname = Loop Controller enabled = true >
           < boolProp name = LoopController.continue_forever > false < / boolProp >
           < intProp name = LoopController.loops >1 < / intProp >
         < / elementProp >
         < stringProp name = ThreadGroup.num_threads > 5 < / stringProp >
         < stringProp name = ThreadGroup.ramp_time > 2 < / stringProp >
         < longProp name = ThreadGroup.start_time > 1367432020000 < / longProp >
         < longProp name = ThreadGroup.end_time > 1367432020000 < / longProp >
         < boolProp name = ThreadGroup.scheduler > false < / boolProp >
         < stringProp name = ThreadGroup.duration > < / stringProp >
         < stringProp name = ThreadGroup.delay > < / stringProp >
       < / ThreadGroup >
       < hashTree >
         < HTTPSamplerProxy guiclass = HttpTestSampleGui testclass = HTTPSamplerProxy testname = HTTP-запрос enabled = true >
           < boolProp name = HTTPSampler.postBodyRaw > true < / boolProp >
           < elementProp name = HTTPsampler.Arguments elementType = Аргументы >
             < collectionProp name = Arguments.arguments >
               < elementProp name = elementType = HTTPArgument >
                 < boolProp name = HTTPArgument.always_encode > false < / boolProp >
                 < stringProp name = Argument.value > < / stringProp >
                 < stringProp name = Argument.metadata > = < / stringProp >
               < / elementProp >
             < / collectionProp >
           < / elementProp >
           < stringProp name = HTTPSampler.domain > localhost < / stringProp >
           < stringProp name = HTTPSampler.port > 8080 < / stringProp >
           < stringProp name = HTTPSampler.connect_timeout > 10000 < / stringProp >
           < stringProp name = HTTPSampler.response_timeout > 10000 < / stringProp >
           < stringProp name = HTTPSampler.protocol > < / stringProp >
           < stringProp name = HTTPSampler.contentEncoding > < / stringProp >
           < stringProp name = HTTPSampler.path > / CrunchifyRESTJerseyExample / crunchify / index < / stringProp >
           < stringProp name = HTTPSampler.method > GET < / stringProp >
           < boolProp name = HTTPSampler.follow_redirects > true < / boolProp >
           < boolProp name = HTTPSampler.auto_redirects > false < / boolProp >
           < boolProp name = HTTPSampler.use_keepalive > true < / boolProp >
           < boolProp name = HTTPSampler.DO_MULTIPART_POST > false < / boolProp >
           < boolProp name = HTTPSampler.monitor > false < / boolProp >
           < stringProp name = HTTPSampler.embedded_url_re > < / stringProp >
         < / HTTPSamplerProxy >
         < hashTree / >
         guiclass = StatGraphVisualizer testclass = ResultCollector testname = Совокупный график enabled = true >
           < boolProp name = ResultCollector.error_logging > false < / boolProp >
           < objProp >
             < name > saveConfig < / name >
             < value class = SampleSaveConfiguration >
               < время > правда < / время >
               < latency > true < / latency >
               < timestamp > true < / timestamp >
               < success > true < / success >
               < label > true < / label >
               < code > true < / code >
               < message > true < / message >
               < threadName > true < / threadName >
               < dataType > true < / dataType >
               < encoding > false < / encoding >
               < утверждения > верно < / утверждения >
               < subresults > true < / subresults >
               < responseData > false < / responseData >
               < samplerData > false < / samplerData >
               < xml > true < / xml >
               < fieldNames > false < / fieldNames >
               < responseHeaders > false < / responseHeaders >
               < requestHeaders > false < / requestHeaders >
               < responseDataOnError > false < / responseDataOnError >
               < saveAssertionResultsFailureMessage > false < / saveAssertionResultsFailureMessage >
               < assertionsResultsToSave > 0 < / assertionsResultsToSave >
               < bytes > true < / bytes >
             < / value >
           < / objProp >
           < stringProp name = filename > < / stringProp >
         < / ResultCollector >
         < hashTree / >
         guiclass = StatVisualizer testclass = ResultCollector testname = Совокупный отчет enabled = true >
           < boolProp name = ResultCollector.error_logging > false < / boolProp >
           < objProp >
             < name > saveConfig < / name >
             < value class = SampleSaveConfiguration >
               < время > правда < / время >
               < latency > true < / latency >
               < timestamp > true < / timestamp >
               < success > true < / success >
               < label > true < / label >
               < code > true < / code >
               < message > true < / message >
               < threadName > true < / threadName >
               < dataType > true < / dataType >
               < encoding > false < / encoding >
               < утверждения > верно < / утверждения >
               < subresults > true < / subresults >
               < responseData > false < / responseData >
               < samplerData > false < / samplerData >
               < xml > false < / xml >
               < fieldNames > false < / fieldNames >
               < responseHeaders > false < / responseHeaders >
               < requestHeaders > false < / requestHeaders >
               < responseDataOnError > false < / responseDataOnError >
               < saveAssertionResultsFailureMessage > false < / saveAssertionResultsFailureMessage >
               < assertionsResultsToSave > 0 < / assertionsResultsToSave >
               < bytes > true < / bytes >
             < / value >
           < / objProp >
           < stringProp name = filename > < / stringProp >
         < / ResultCollector >
         < hashTree / >
       < / hashTree >
     < / hashTree >
   < / hashTree >
< / jmeterTestPlan >

Шаг 5

  • Загрузите Apache JMeter.
  • Запустите JMeter, используя файл jmeter.bat или jmeter.sh
  • Нажмите на File -> Open
  • Перейдите в папку, где вы сохранили файл Crunchify-JMeter-Test.jmx и выберите файл

Шаг 6

  • Теперь расширьте Rest Service JMeter Crunchify в тест , как вы видите на изображении ниже
  • Нажмите на запрос HTTP
  • Убедитесь, что указанные ниже параметры верны

Шаг 7

Проанализируйте свой результат теста.

Rest API автоматизации в JMeter?

Что ж, после каждого цикла разработки вы можете запускать тест, который вы уже определили в файле JMeter, через определенный интервал.

Существует ряд других способов изменить параметры теста. Поиграйте с ним и дайте мне знать, как оно идет или если вы видите какие-либо проблемы с этим

Как вызвать свой веб-сервис Restful с помощью JMeter? Выполните простое нагрузочное тестирование и автоматизацию

0.00 (0%) 0 votes

ЧИТАТЬ ТАКЖЕ:  Простой пример базы данных Oracle JDBC Connect и ExecuteQuery на Java

ОСТАВЬТЕ ОТВЕТ

Пожалуйста, введите ваш комментарий!
пожалуйста, введите ваше имя здесь