JMeter Kullanarak Dinlendirici Web Servisinizi Nasıl Ararsınız? Basit Bir Yük Testi ve Otomasyon Gerçekleştirin
Yayınlanan: 2018-02-12Temsili Durum Aktarımı (REST), SOAP ve Web Hizmetleri Açıklama Dili (WSDL) tabanlı Web hizmetlerine daha basit bir alternatif olarak Web'de yaygın olarak kabul görmüştür.
Arayüz tasarımındaki bu kaymanın temel kanıtı, SOAP ve WSDL tabanlı arayüzleri daha kolay kullanım lehine reddeden veya bu arayüzlere geçiş yapan Yahoo, Google ve Facebook dahil olmak üzere ana akım Web 2.0 servis sağlayıcıları tarafından REST'in benimsenmesidir. hizmetlerini ortaya çıkarmak için kaynak odaklı model. Bazen RESTFul web hizmetinizi test etmeniz gerekir. Birkaç seçeneğiniz olabilir:
- Tek URL kullanarak Web Hizmetinize ulaşın
-
JMeter
kullanın ve döngüde WebService'e basın. Bu test ayrıca bazı BasitLoad Test
de gerçekleştirir.
İşte bu örnekte size Simple Hello World WebService
nasıl oluşturacağınızı ve JMeter kullanarak aynı WebService'i nasıl vuracağınızı açıklayacağım.
Aşağıdaki sorulardan herhangi birine sahipseniz doğru yerdesiniz:
- JMeter Kullanarak SOAP/REST Web Servislerini Test Etme
- JMeter kullanarak RESTful API'nin Performans Testi
- JMeter'de Rest API Otomasyonu – Performans Testi
- JMeter kullanarak REST API nasıl test edilir
- RESTful web hizmetini test etmek için JMeter'i kullanma (Jersey)
Eylem Özeti:
-
Pre-Requisite:
Bu RESTFul hizmetini tamamen uygulayın. - Basit Java sınıfı oluşturun: CrunchifyJMeterTest.java (JMeter kullanarak vuracağımız hizmet).
- Aynı Uygulamayı Apache Tomcat Web Sunucusunda Yeniden Dağıtın.
- JMeter'i çalıştırın ve sağlanan
.jmx
dosyasını aşağıda açın - Testinizi Çalıştırın ve Analiz Edin
Bir diğeri okumalı:
- SOAP vs REST: Basit Nesne Erişim Protokolü vs. Temsili Devlet Transferi
Aşama 1
Pre-Requisite:
Bu RESTFul hizmetini tamamen uygulayın. Uygulamayı Dağıtın ve Çalıştırın.
Bununla ilgili herhangi bir sorun görürseniz bana bildirin.
Adım 2
CrunchifyJMeterTest.java
Dosyası Oluşturun
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 |
package com . crunchify . restjersey ; import java . io . FileNotFoundException ; import java . io . IOException ; import javax . ws . rs . GET ; import javax . ws . rs . Path ; import javax . ws . rs . Produces ; /** * @author Crunchify * */ @ Path ( "/index" ) public class CrunchifyJMeterTest { @ GET @ Produces ( "text/html" ) public String checkECV ( ) throws InterruptedException , FileNotFoundException , IOException { String result = "<br><div align='center'><h2>Hey This is Crunchify's JMeter Test...</h2></div>" ; System . out . println ( result ) ; Thread . sleep ( 1000 ) ; return result ; } } |
Aşağıda Eclipse Dizin Yapısını görmelisiniz:
Aşama 3
Aynı CrunchifyRESTJerseyExample Projesini Tomcat'te yeniden dağıtın. REST Hizmetinizde test edin.
URL:
http://localhost:8080/CrunchifyRESTJerseyExample/crunchify/index/
4. Adım
Dosyaya aşağıdaki Kodu kopyalayın ve Crunchify-JMeter-Test.jmx
olarak kaydedin.
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" properties = "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 = "Arguments" guiclass = "ArgumentsPanel" testclass = "Arguments" testname = "User Defined Variables" enabled = "true" > < collectionProp name = "Arguments.arguments" / > < / elementProp > < stringProp name = "TestPlan.user_define_classpath" > < / stringProp > < / TestPlan > < hashTree > < ThreadGroup guiclass = "ThreadGroupGui" testclass = "ThreadGroup" testname = "Crunchify's REST Service JMeter Test" enabled = "true" > < stringProp name = "ThreadGroup.on_sample_error" > continue < / 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 Request" enabled = "true" > < boolProp name = "HTTPSampler.postBodyRaw" > true < / boolProp > < elementProp name = "HTTPsampler.Arguments" elementType = "Arguments" > < 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 / > < ResultCollector guiclass = "StatGraphVisualizer" testclass = "ResultCollector" testname = "Aggregate Graph" enabled = "true" > < boolProp name = "ResultCollector.error_logging" > false < / boolProp > < objProp > < name > saveConfig < / name > < value class = "SampleSaveConfiguration" > < time > true < / time > < 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 > < assertions > true < / assertions > < 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 / > < ResultCollector guiclass = "StatVisualizer" testclass = "ResultCollector" testname = "Aggregate Report" enabled = "true" > < boolProp name = "ResultCollector.error_logging" > false < / boolProp > < objProp > < name > saveConfig < / name > < value class = "SampleSaveConfiguration" > < time > true < / time > < 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 > < assertions > true < / assertions > < 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 > |

Adım 5
- Apache JMeter'ı indirin.
- Jmeter.bat veya jmeter.sh dosyasını kullanarak JMeter'i çalıştırın
-
File -> Open
tıklayın - Crunchify-JMeter-Test.jmx dosyasını kaydettiğiniz klasöre gidin ve dosyayı seçin
Adım-6
- Şimdi aşağıdaki resimde gördüğünüz gibi Crunchify'ın Dinlenme Hizmeti JMeter Testini genişletin
- HTTP İsteği'ne tıklayın
- Aşağıdaki parametrelerin doğru olduğundan emin olun
Adım-7
Test Sonucunuzu analiz edin.
JMeter'de Dinlenme API Otomasyonu?
Peki, her geliştirme döngüsünden sonra, belirli aralıklarla JMeter dosyasında tanımladığınız testi çalıştırabilirsiniz.
Test parametrelerinizi değiştirmenin başka yolları da vardır. Onunla oynayın ve nasıl gittiğini veya bununla ilgili herhangi bir sorun görürseniz bana bildirin.