loadrunner transactions
java röportaj kodlama soruları ve cevapları
VuGen Komut Dosyasının temel geliştirmelerine giriş:
Biz keşfettik LoadRunner'da Korelasyon bu konudaki önceki eğitimimizde ayrıntılı olarak LoadRunner Eğitim Öğreticilerinin Tamamı .
Son iki öğreticide, verileri bir VuGen betiğinde (Korelasyon ve Parametreleme) işlemeye çalıştık.
Bu LoadRunner eğitiminde, komut dosyamız için gerekli olan diğer temel geliştirmeleri (aşağıda listelenmiştir) göreceğiz:
- İşlemler - Kullanıcı eylemlerinin oranını ve yanıt süresini ölçmek.
- Metin ve Resim kontrolleri - Döndürülen yanıtın doğru olduğundan emin olmak için.
- Yorumlar
- Buluşma noktaları - Vusers'ın aynı anda bir görevi yerine getirmesini sağlamak.
=> LoadRunner Eğitimlerinin Tam Serisi İçin Buraya Tıklayın
Ne öğreneceksin:
- VuGen Scriptindeki İşlemler
- VuGen Komut Dosyasında Metin ve Resim Kontrolleri
- VuGen Komut Dosyasında Yorumlar
- VuGen Komut Dosyasında Buluşma Noktası
- Sonuç
- Önerilen Kaynaklar
VuGen Scriptindeki İşlemler
Performans betiklerinin yalnızca yeniden oynatılması, yalnızca uygulamaya bir yük getirir, ancak hiçbir şeyi ölçmez. Herhangi bir performans betiğinin nihai amacı, yükü enjekte etmek ve uygulamadaki kullanıcı eylemlerinin hızını ve yanıt süresini ölçmektir.
Örneğin ,100 kullanıcı uygulamadayken bir ürün araması ne kadar zaman aldı, 15 dakika gibi bir sürede kaç tane rapor üretildi vb. Bunları ölçmek için işlemleri bir VuGen betiğine eklemeliyiz (testten sonra bu işlemlerin oranını ve yanıt süresini sonuçlarda görebiliriz).
'İşlem, bir uygulamadaki bir kullanıcı eyleminin (veya bir grup kullanıcı eyleminin) uçtan uca ölçümüdür'.
İşlemler iki şekilde eklenebilir:
- Kayıt Sırasında
- Kayıttan Sonra (burada işlem işlevlerini komut dosyasına manuel olarak ekliyoruz)
'Web Turları' uygulamamıza 'Giriş' kullanıcı işlemi için işlem ekleyelim.
İlk eğitimimizde, kullanıcı eylemlerinin nasıl kaydedileceğini gördük. Kayıt sırasında, Giriş sayfasında 'Kullanıcı Adı' ve 'Şifre' yi girdikten sonra, 'Giriş' düğmesine tıklamadan hemen önce, kayan kayıt çubuğundaki 'İşlemi Başlat' simgesine tıklayın.
VuGen işlem adı ister. Herhangi bir anlamlı isim girin. Burada 'Oturum Aç' verdik, ancak bunun gibi bir kuralı (işlem numarası, Senaryo adı, kullanıcı işlemi vb.) İzlemek iyi bir uygulamadır: 01_WebTours_Launch 02_WebTours_Login (vb.).
Şimdi tıklayın Giriş düğmesi.
Ana sayfaya (ana sayfa) ulaştığımızda, kayan kayıt çubuğundaki 'İşlem Sonunu Ekle' simgesini tıklayın.
Sonlandırmak istediğimiz işlemi seçin (burada 'Giriş' işlemi).
Kaydı durdurun ve oluşturulan betiği görün. İşlem başlatma ve işlem bitiş işlevlerinin betiğe eklendiğini (sarı ile vurgulanmıştır) ve 'Oturum Aç' kullanıcı işlemine karşılık gelen tüm isteklerin bu işlevler arasında bulunduğunu görebiliriz.
lr_start_transaction('Login'); web_submit_data('login.pl', 'Action= http://127.0.0.1:1080/cgi-bin/login.pl ', 'Method= POST ', 'TargetFrame=', 'RecContentType= text/html ', 'Referer=http://127.0.0.1:1080/cgi-bin/nav.pl?in= home ', 'Snapshot= t3.inf ', 'Mode= HTML ', ITEMDATA , 'Name= userSession ', 'Value= 123530.624949372zDftVAzpfcAiDDDDDiVctpzDQVcf ', ENDITEM , 'Name= username ', 'Value= jojo ', ENDITEM , 'Name= password ', 'Value= bean ', ENDITEM , 'Name= JSFormSubmit ', 'Value= off ', ENDITEM , 'Name= login.x ', 'Value= 69 ', ENDITEM , 'Name= login.y ', 'Value= 8 ', ENDITEM , LAST ); lr_end_transaction('Login', LR_AUTO );
'İşlem başlatma' ve 'işlem sonu' işlevlerinin sözdizimi oldukça basittir. Her ikisinin de ilk bağımsız değişken olarak işlem adı vardır. 'İşlemi sonlandırma' işlevinin bir başka özniteliği vardır - 'LR_AUTO', bu, VuGen'e bir işlemi otomatik olarak Geçmesi veya Başarısız Olması talimatını verir (bir geçiş veya başarısızlık koşulunu açıkça belirtmemiz yerine).
Yük çalıştırıcısı, bir işlemdeki istekleri yürütürken herhangi bir hatayla karşılaşırsa, işlemi başarısız olur, aksi takdirde işlemi geçer.
VuGen Komut Dosyasında Metin ve Resim Kontrolleri
Metin kontrolleri, istek için döndürülen yanıtın doğru olup olmadığını doğrulamak için kullanılır. 'Korelasyon' eğitiminde, bazen VuGen'in herhangi bir hata göstermediğini, ancak döndürülen yanıtın doğru olmadığını gördük. Bu nedenle, yanıtın doğru olduğundan emin olmak için metin kontrolleri kullanıyoruz.
Örneğin, Web Tours uygulamasına giriş yaptığımızda, ana sayfaya gidiyoruz. Giriş yaptığımızda doğru yanıtı (ana sayfa) aldığımızı veya almadığımızı komut dizisinde doğrulayalım.
Bunu yapmak için, yanıtta (ana sayfa burada) yanıtın doğru olup olmadığını söyleyebilecek bir metin belirlemeliyiz. 'Hoş geldiniz' böyle bir metindir.
Metin kontrolü için ' web_reg_find ’ istekten hemen önce işlev görür.
Bu işlevin sözdizimi şöyledir:
web_reg_find(“Text=”,”SaveCount=”,”Fail=”,LAST);
Burada üç özelliğimiz var (özelliklerin tam listesini almak için VuGen yardımına bakın):
'Metin '- Hangi metnin aranacağını belirtmek için kullanılır.
'SaveCount' - Belirtilen metnin oluşum sayısını belirttiğimiz bir parametreye kaydeder.
'Başarısız' - 'Bulunan' ve 'Bulunamadı' olmak üzere iki değerden birini alır ve komut dosyasını buna göre başarısız olur.
Bu nedenle, web_reg_find ('Metin = Hoş Geldiniz', 'SaveCount = WelcomeCount', 'Başarısız = Bulunamadı', LAST) işlevi yanıtta 'Hoş Geldiniz' metnini arar ve oluş sayısını 'WelcomeCount' parametresine kaydeder (ve metin bulunmazsa komut dosyası başarısız olur).
Komut dosyası şöyle görünür:
web_reg_find('Text= Welcome ','SaveCount= WelcomeCount ','Fail= NotFound ', LAST ); web_submit_data('login.pl', 'Action= http://127.0.0.1:1080/cgi-bin/login.pl ', 'Method= POST ', 'TargetFrame= body ', 'RecContentType= text/html ', 'Referer=http://127.0.0.1:1080/cgi-bin/nav.pl?in= home ', 'Snapshot= t2.inf ', 'Mode= HTML ', ITEMDATA , 'Name= userSession ', 'Value= 123531.149939247zDftVDDpfcfDiVctpiAVVf ', ENDITEM , 'Name= username ', 'Value= jojo ', ENDITEM , 'Name= password ', 'Value= bean ', ENDITEM , 'Name= JSFormSubmit ', 'Value= off ', ENDITEM , 'Name= login.x ', 'Value= 66 ', ENDITEM , 'Name= login.y ', 'Value= 12 ', ENDITEM , LAST );
Şimdi betiği tekrar oynatırsak, oturum açma isteği için bir hata alacağız (aktarma günlüğüne bakın) çünkü VuGen yanıtta belirttiğimiz metni bulamadı. Bunun nedeni, doğru ana sayfayı almamış olmamızdır ('çalışma zamanı görüntüleyicide' gösterildiği gibi).
Şimdi komut dosyamızı düzeltelim (userSession ile ilişkilendirelim) ve komut dosyasını tekrar oynatalım.
web_reg_find('Text=Welcome','SaveCount=WelcomeCount','Fail=NotFound', LAST ); web_submit_data('login.pl', 'Action=http://127.0.0.1:1080/cgi-bin/login.pl', 'Method=POST', 'TargetFrame=body', 'RecContentType=text/html', 'Referer=http://127.0.0.1:1080/cgi-bin/nav.pl?in=home', 'Snapshot=t2.inf', 'Mode=HTML', ITEMDATA , 'Name=userSession', 'Value={corUserSession}', ENDITEM , 'Name=username', 'Value=jojo', ENDITEM , 'Name=password', 'Value=bean', ENDITEM , 'Name=JSFormSubmit', 'Value=off', ENDITEM , 'Name=login.x', 'Value=66', ENDITEM , 'Name=login.y', 'Value=12', ENDITEM , LAST );
Bu sefer tekrar oynatma günlüğünde herhangi bir hata görmüyoruz ancak metin kontrolümüzün başarılı olduğunu belirten bir mesaj görüyoruz. Dolayısıyla bu sefer doğru yanıtı aldık ('çalışma zamanı görüntüleyicisi' tarafından da desteklendiği üzere).
Metin kontrollerini işlemlerle birleştirebilir ve metin kontrolü başarılı olursa VuGen'in bir işlemi geçmesini ve bir metin kontrolü başarısız olursa bir işlemin başarısız olmasını sağlayabiliriz.
Bu aşağıda gösterilmiştir:
lr_start_transaction('Login'); web_reg_find('Text=Welcome','SaveCount=WelcomeCount',LAST); web_submit_data('login.pl', 'Action=http://127.0.0.1:1080/cgi-bin/login.pl', 'Method=POST', 'TargetFrame=body', 'RecContentType=text/html', 'Referer=http://127.0.0.1:1080/cgi-bin/nav.pl?in=home', 'Snapshot=t2.inf', 'Mode=HTML', ITEMDATA, 'Name=userSession', 'Value={corUserSession}', ENDITEM, 'Name=username', 'Value=jojo', ENDITEM, 'Name=password', 'Value=bean', ENDITEM, 'Name=JSFormSubmit', 'Value=off', ENDITEM, 'Name=login.x', 'Value=66', ENDITEM, 'Name=login.y', 'Value=12', ENDITEM, LAST); if(atoi(lr_eval_string('{WelcomeCount}'))>0) { lr_end_transaction('Login',LR_PASS); } else { lr_end_transaction('Login',LR_FAIL); }
Burada 'SaveCount' özelliğiyle 'if ifadesi' kullandık. 'WelcomeCount' parametresi (metnin geçtiği sayıları kaydeder) işlemi geçmek / başarısız olmak için bir koşul olarak kullanılır. İşlem işlevlerinin 'LR_PASS' ve 'LR_FAIL' öznitelikleri, bir işlemi açıkça geçmek ve (sırasıyla) başarısız olmak için kullanılır.
Not: Burada iki yeni işlev kullandık - 'Atoi' ve 'Lr_eval_string' . Bu işlevler hakkında daha sonra konuşacağız.
'Web_reg_find' işlevi özelliklerinin kombinasyonu hakkında biraz daha bilgi:
# 1) Yalnızca 'Metin' özelliği kullanılırsa -
Misal: web_reg_find ('Metin = Hoş Geldiniz', SON) -
VuGen metni arar ve arama başarısız olursa komut dizisinde başarısız olur.
# 2) Yalnızca 'Metin' ve 'SaveCount' özellikleri kullanılıyorsa -
Misal: web_reg_find ('Text = Welcome', 'SaveCount = WelcomeCount', LAST) - VuGen metni arar ve oluşum sayısını (sıfır olsa bile) belirtilen parametreye kaydeder (arama başarısız olursa komut dizisinde başarısız olmaz ).
# 3) Yalnızca 'Metin' ve 'Başarısız' özellikleri kullanılıyorsa -
Misal: web_reg_find ('Metin = Hoş Geldiniz', 'Başarısız = Bulunamadı', SON) - VuGen metni arar ve metin bulunursa / bulunmazsa komut dizisinde başarısız olur.
Metin kontrolleri, kayan kayıt çubuğundaki 'Metin kontrolü ekle' simgesi kullanılarak kayıt sırasında da eklenebilir. Bu aynısını ekleyecek 'Web_reg_find' betiğe işlev.
Ancak, esas olarak öznitelikler üzerinde daha iyi kontrole sahip olacağımızdan, bu işlevi manuel olarak eklememiz daha iyidir.
Metin kontrolünü net bir şekilde anladık, şimdi resim kontrolüne geçelim.
Görüntü kontrolü, yanıtta belirli bir görüntünün varlığını doğrulamak için kullanılır. ‘ web_image_check ’ işlevi, görüntü kontrolü için kullanılır. Bu işlev, istekten sonra (görüntüyü beklediğimiz yanıta) yerleştirilmelidir.
Bu işleve örnek:
web_image_check(“Image”,”Src=/WebTours/images/flights.gif”,LAST)
İlk öznitelik herhangi bir anlamlı isim ve ikinci öznitelik ('Src') görüntü adı / bağlantısı olduğunda (özniteliklerin tam listesini almak için VuGen yardımına bakın).
VuGen Komut Dosyasında Yorumlar
Bir VuGen komut dizisindeki yorumlar kayıt sırasında ve ayrıca komut dosyası kaydedildikten sonra manuel olarak girilebilir.
Kayıt sırasında, 'Yorum Ekle' kayan kayıt çubuğundaki simgesi.
Yorumu girin (buraya 'Giriş' deyin).
Kayıt yaptıktan sonra komut dosyasındaki yorumları aşağıda gösterildiği gibi görebiliriz.
/* Login */ web_submit_data('login.pl', 'Action=http://127.0.0.1:1080/cgi-bin/login.pl', 'Method=POST', 'TargetFrame=body', 'RecContentType=text/html', 'Referer=http://127.0.0.1:1080/cgi-bin/nav.pl?in=home', 'Snapshot=t6.inf', 'Mode=HTML',
VuGen'de, aşağıda gösterildiği gibi satırın önüne '//' koyarak tek bir satır yorumlanabilir:
// web_add_cookie('SRCHD=AF=IESS3N; DOMAIN=www.bing.com'); web_add_cookie('SRCHUID=V=2&GUID=89730C3AA700412BAB917005DE9F5F47&dmnchg=1; DOMAIN=www.bing.com'); web_add_cookie('SRCHUSR=DOB=20180312; DOMAIN=www.bing.com');
Başına '/ *' ve sonuna '* /' koyarak birden çok hat bağlanabilir (aşağıda gösterildiği gibi)
/* web_add_cookie('SRCHD=AF=IESS3N; DOMAIN=www.bing.com'); web_add_cookie('SRCHUID=V=2&GUID=89730C3AA700412BAB917005DE9F5F47&dmnchg=1; DOMAIN=www.bing.com'); web_add_cookie('SRCHUSR=DOB=20180312; DOMAIN=www.bing.com'); */
Not: Yukarıda gösterilen örneklerde, çerez işlevlerini ( web_add_cookie ). Bu eğitim dizisinin ilerleyen bölümlerinde çerez işlevleri hakkında konuşacağız.
Kayıt sırasında her adımda yorum eklemek iyi bir uygulamadır çünkü koddaki istekleri uygulamadaki kullanıcı eylemleriyle ilişkilendirmemize yardımcı olacaktır.
VuGen Komut Dosyasında Buluşma Noktası
Çok sayıda kullanıcının uygulamada aynı anda bir eylem gerçekleştirdiği (sonuçları kontrol etme gibi) bir senaryomuz varsa ve performans testimizde aynısını simüle etmemiz gerekirse, bir 'Buluşma noktası' kullanabiliriz.
'Rendezvous point', bir VuGen betiğindeki tek ve basit bir işlevdir ve yük çalıştırıcısına (birden fazla kullanıcıyla yapılan bir test sırasında) tüm Vusers (betiği çalıştıran) bu adıma gelene kadar betikte belirtilen bir adımda beklemesi talimatını verir. bu sonraki istek aynı anda yürütülebilir.
Rendezvous işlevinin sözdizimi şöyledir:
lr_rendezvous(“MeaningfulName”);
Bu işlev kayıt sırasında ve ayrıca komut dosyası kaydedildikten sonra manuel olarak eklenebilir.
'Web Turları' uygulamamızdaki ödeme adımına eşzamanlı bir yük koymak istediğimizi varsayalım. Bu adımda kayıt sırasında (ödeme ayrıntılarını göndermeden önce), kayan kayıt çubuğundaki 'Rendezvous Ekle' simgesini tıklayın.
Ve buluşma noktası adını (herhangi bir anlamlı ad) girin.
Kayıttan sonra, betikte buluşma işlevini bu şekilde görebiliriz.
lr_rendezvous('Payment'); web_submit_data('reservations.pl_3', 'Action= http://127.0.0.1:1080/cgi-bin/reservations.pl ', 'Method= POST ', 'TargetFrame=', 'RecContentType= text/html ', 'Referer= http://127.0.0.1:1080/cgi-bin/reservations.pl ', 'Snapshot= t13.inf ', 'Mode= HTML ', ITEMDATA , 'Name= firstName ', 'Value= Jojo ', ENDITEM , 'Name= lastName ', 'Value= Bean ', ENDITEM , 'Name= address1 ', 'Value= 1st Lane , Down Street', ENDITEM , 'Name= address2 ', 'Value= 567123 ', ENDITEM , 'Name= pass1 ', 'Value= Jojo Bean ', ENDITEM , 'Name= creditCard ', 'Value= 123456789101 ', ENDITEM , 'Name= expDate ', 'Value= 0520 ', ENDITEM , 'Name= oldCCOption ', 'Value=', ENDITEM , 'Name= numPassengers ', 'Value= 1 ', ENDITEM , 'Name= seatType ', 'Value= Coach ', ENDITEM , 'Name= seatPref ', 'Value= None ', ENDITEM , 'Name= outboundFlight ', 'Value= 020 ;338;05/03/2018', ENDITEM , 'Name= advanceDiscount ', 'Value= 0 ', ENDITEM , 'Name= returnFlight ', 'Value=', ENDITEM , 'Name= JSFormSubmit ', 'Value= off ', ENDITEM , 'Name= .cgifields ', 'Value= saveCC ', ENDITEM , 'Name= buyFlights.x ', 'Value= 63 ', ENDITEM , 'Name= buyFlights.y ', 'Value= 12 ', ENDITEM , LAST );
Şimdi bu komut dosyasını Controller'da birden fazla kullanıcıyla çalıştırdığımızda, komut dosyası Vusers tarafından bağımsız olarak yürütülecek ancak Vusers, tümü (veya Rendezvous politikasında tanımlanan Vuser'lerin bir kısmı) bu adıma ulaşana kadar bu 'Ödeme' adımında bekleyecek ve ardından gerçekleştirecekler bu adım aynı anda.
Denetleyici eğitiminde buluşma politikası (seçenekler) hakkında daha fazlasını göreceğiz.
Sonuç
Şimdiye kadar, önceki eğitimlerde ve İşlemlerde, Metin / Görüntü kontrollerinde, Yorumlarda ve Yorumlama noktalarında Korelasyon ve Parametrelendirmeyi tartıştık, ayrıca en önemli komut dosyası geliştirme yöntemlerini de ele aldık.
Bir sonraki eğitimimizde, bunları ele alma yollarının yanı sıra daha fazla komut dosyası oluşturma zorluğu göreceğiz.
=> LoadRunner Eğitimlerinin Eksiksiz Serileri İçin Burayı Ziyaret Edin
PREV Eğitimi | SONRAKİ Eğitici
Önerilen Kaynaklar
- HP LoadRunner Öğreticileriyle Yük Testi
- Micro Focus LoadRunner'a Giriş - LoadRunner Öğreticisi # 1 ile Yük Testi
- Korelasyon - LoadRunner ile Yük Testi
- Yeni Başlayanlar İçin LoadRunner Eğitimi (Ücretsiz 8 Günlük Kapsamlı Kurs)
- Test Sonucu Analizi ve Raporları - LoadRunner ile Yük Testi
- LoadRunner VuGen Komut Dosyası Kullanarak Web Hizmetleri Performans Testi
- LoadRunner ve Performans Merkezi Arasındaki Fark
- LoadRunner VuGen Komut Dosyası Dosyaları ve Çalışma Zamanı Ayarları Nasıl Kurulur