Soap UI Groovy Script Test Adımı Nedir ?


Herkese Merhaba , bu yazımda Soap UI ‘ ın Groovy Script test adımından ve kullanım yerlerinden bahsedeceğim.Haydi Başlayalım..

Groovy Script test adımı, SoapUI ‘da özel otomasyon test komut dosyası oluşturmak
için dahil edilmiştir.
Groovy, tüm Java kitaplıklarını içeren bir komut dosyası dilidir, bu nedenle java ile
ilgili tüm anahtar kelimeler ve işlevler groovy komut dosyasında doğrudan
kullanılabilir. Java kütüphaneleri SoapUI ile birlikte gelir ve harici bir kurulum
gerektirmez.

Bu yazımda test amaçlı  http://tckimlik.nvi.gov.tr adresinde hizmete sunulan vatandaşlık numarası doğrulama hizmetini ele aldım.

Test Servis adresi : https://tckimlik.nvi.gov.tr/Service/KPSPublic.asmx

Servise ait örnek istek-cevap xml içeriği aşağıdaki tabloda yer almaktadır.

1.Adım – Otomatik Değer Atama

İlk olarak yeni bir TestSuite tanımlanır. Örnek olarak ilgili servise ait request
barındıran TestSuite “ deneme ” değişken adı ile tanımlanmıştır.

Test Suite içeriğine Add Step seçenekleri üzerinden Groovy Script adımı eklenir.

Örnek olarak bu adımda servis response içeriğinde yer alan Ad alanına default ve
random bir değer atamayı inceleyeceğiz.
Groovy Script işlemlerine geçmeden ilk olarak Test Suite ‘in Properties alanına
değişken tanımlaması yapılır. Değişken için value alanı boş bırakılır , çünkü bu
değişkene değer atama işlemi Groovy Script ile gerçekleştirilecek.

Ardından servis reponse message alanında yer alan Ad parametre alanı otomatik
değer atanabilecek şekilde güncellenir.

Ardından Groovy Script ayarlarına geçilebilir.
1. Default olarak bir değer atama : Ad alanına Emine değeri atanarak servis run edilir.

def test_prameters= testRunner.testCase.testSuite.project.getTestSuiteByName("dene
me").getTestCaseByName("TestCase 1")
test_prameters.setPropertyValue("Ad","Emine")
def sn_degeri = context.expand('${#TestCase#ad}')
log.info("ad değeri: " + sn_degeri)

Response Mesaj içeriği :

Fri Jul 24 14:31:57 MSK 2020:INFO:ad değeri: Emine

2. Random bir değer atama : Ad alanına random bir string atanarak servis run edilir.

import org.apache.commons.lang.RandomStringUtils
charset = ('A'..'Z').join()
length = 9
def test = RandomStringUtils.random(length, charset.toCharArray())
def
test_prameters=testRunner.testCase.testSuite.project.getTestSuiteByName("dene
me").getTestCaseByName("TestCase 1")
test_prameters.setPropertyValue("Ad","test")
//Değer Okuma
def ad_degeri= context.expand('${#TestCase#ad}')
log.info("ad değeri: " + ad_degeri)

Response Mesaj içeriği :

Fri Jul 24 14:32:20 MSK 2020:INFO:ad değeri: SVFUZWMXL
İlk değer için servisin true , ikinci değer için ise servisin false cevabını dönmesi
beklenmektedir.

2.Adım – Response Değerlendirme


Servis response mesaj içeriğini kontrol edip , test case ‘in başarılı veya başarız
olduğunu görüntülemek istiyorsak bunun için aşağıdaki kod satırlarını Groovy Script
alanına eklemeliyiz.

def groovyUtils = new com.eviware.soapui.support.GroovyUtils(context)
def holder = groovyUtils.getXmlHolder( "Request#Response" )
holder.namespaces["ns1"] = "http://tckimlik.nvi.gov.tr/WS"
def Result = holder.getNodeValue("//ns1:TCKimlikNoDogrulaResult")
log.info "Service Response Message : " + Result
if(Result=="true")
{ log.info "Pass" }
else
{ log.info "fail"}

Eğer ad parametresi “Emine” olarak atanmış ise :
● Fri Jul 24 15:36:34 MSK 2020:INFO:Service Response Message : true
● Fri Jul 24 15:36:34 MSK 2020:INFO:Pass


Eğer ad parametresi random bir değer atanmış ise :
● Fri Jul 24 15:41:05 MSK 2020:INFO:Service Response Message : false
● Fri Jul 24 15:41:05 MSK 2020:INFO:fail

3.Adım – Test Sonuçlarını Dosyaya Yazma


Herhangi bir test sonucunu dönen prametreyi dosya içeriğinde depolayabilmek için
Groovy Script içerisine aşağıdaki kod parçacığını eklemeniz gerekmektedir.


def groovyUtils = new com.eviware.soapui.support.GroovyUtils(context)
def holder = groovyUtils.getXmlHolder( "Request#Response" )
holder.namespaces["ns1"] = "http://tckimlik.nvi.gov.tr/WS"
def addResult = holder.getNodeValue("//ns1:TCKimlikNoDogrulaResult")
log.info "Service Response Message : " + addResult
if(addResult=="true")
{ log.info "Pass" }
else
{ log.info "fail"}
def date = new Date()
def dts = date.format("yyyy-MM-dd-HH-mm-ss")
def fileName = "C:\Users\sedat\Desktop\test.txt"
new File(fileName).write(dts +" Tarihli Servis Response Mesaji : "+addResult)

Umuyorum yararlı bir yazı olmuştur.

Bir sonraki yazımda görüşmek üzere..

                         Emine Aktürk

7 Comments Kendi yorumunu ekle

  1. I precisely desired to appreciate you once more. I am not sure the things
    that I could possibly have carried out without
    those suggestions provided by you directly on my situation. It was a very hard scenario
    for me personally, however , observing this expert technique you
    dealt with it made me to jump for joy. I will be happy for
    the help and thus pray you are aware of a powerful job you have
    been accomplishing instructing the mediocre ones with the
    aid of your webblog. Probably you haven’t got to know all of us.

    My site custom name necklace

    Liked by 1 kişi

  2. Korey dedi ki:

    It’s awesome t᧐ pay a quick visit tһіѕ website and reading the views оf aⅼl mates concеrning
    thіs post, whilе I am also eager ᧐f getting experience.

    Liked by 1 kişi

  3. bts gun dedi ki:

    Some really quality articles on this site, saved to favorites.

    Here is my web-site: bts gun

    Beğen

  4. Greetings I am so happy I found your website,
    I really found you by error, while I was searching on Bing for something
    else, Anyways I am here now and would just like to say many thanks for a
    marvelous post and a all round exciting blog (I also love
    the theme/design), I don’t have time to browse it all at the minute but I have bookmarked it and also added in your RSS feeds,
    so when I have time I will be back to read a great deal more, Please
    do keep up the great work.

    Also visit my web site – rubber iphone case

    Beğen

  5. seo expertise dedi ki:

    Hi to all, how is all, I think every one is getting more from this web page, and your views
    are fastidious for new visitors.

    Liked by 1 kişi

  6. This is very interesting, You’re a very skilled blogger.
    I’ve joined your feed and look forward to seeking more of your fantastic post.
    Also, I have shared your website in my social networks!

    my web blog: charity haunted house

    Liked by 1 kişi

  7. Hello to every one, the contents existing at this site are
    truly awesome for people experience, well, keep up the good work fellows.

    Beğen

Yorum bırakın