Содержание
Передача репрезентативного состояния ( 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 (Джерси)
Сводка действий:
Pre-Requisite:Реализуйте этот сервис RESTFul полностью .- Создайте простой Java-класс : CrunchifyJMeterTest.java (Сервис, который мы будем использовать с помощью JMeter).
- Повторно разверните то же приложение на веб-сервере Apache Tomcat .
- Запустите JMeter и откройте ниже предоставленный
.jmxфайл - Запустите и проанализируйте свой тест
Другой должен прочитать:
Шаг 1
Pre-Requisite: Реализуйте этот сервис RESTFul полностью . Развернуть и запустить приложение.
Дайте мне знать, если увидите какие-либо проблемы с этим.
Шаг 2
Создайте 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 … h2> div> ; Система. вне. println ( результат ) ;
Thread. сон ( 1000 ) ;
вернуть результат ;
}
}
|
Вы должны увидеть ниже структуру каталогов Eclipse :
Шаг 3
Повторно разверните тот же проект CrunchifyRESTJerseyExample на Tomcat. Проверьте это в вашем REST Service.
URL: HTTP: // локальный: 8080 / CrunchifyRESTJerseyExample / crunchify / индекс /
Шаг 4
Скопируйте ниже код в файл и сохраните его как 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 / >
< 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 / >
< 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, через определенный интервал.
Существует ряд других способов изменить параметры теста. Поиграйте с ним и дайте мне знать, как оно идет или если вы видите какие-либо проблемы с этим
0.00 (0%) 0 votes











