LoadRunner'da Web_Reg_Save_Param Örneği ile Korelasyon

Korelasyon nedir?

Korelasyon, adından da anlaşılacağı gibi, iki değişken veya varlık arasındaki ilişkiyi tanımlamaya yönelik bir mekanizmadır. A Dictionary, bunu “iki veya daha fazla değişken arasındaki istatistiksel ilişki, diğerindeki sistematik değişikliklerin bir değişkenin değerindeki sistematik değişikliklere eşlik etmesi” olarak tanımlıyor.

Neden Korelasyona ihtiyacımız var?

Aşağıdaki senaryo ile korelasyonu anlayalım.

LoadRunner'ı kullanarak bir komut dosyası kaydettiğinizi düşünün.

İstemci-Sunucu İletişimi

  1. Kayıt sırasında istemci sunucuya bir oturum başlatma isteği gönderir.
  2. Sunucu isteği alır ve yeni bir oturum kimliği ABC tahsis eder
  3. İstemci ABC oturum kimliğini kodda saklar.
  4. İstemci oturumu ID ABC ile başlatır ve kayıt yapmasına izin vermek için sunucuya bir istek gönderir.
  5. Sunucu ABC kimliğini tanır ve istemcinin betiği kaydetmesine izin verir

Kayıt Sırasında Korelasyon

  1. Şimdi tekrar oynatma sırasında istemci-sunucu iletişimini inceleyelim
  2. Tekrar oynatma sırasında istemci, sunucuya bir oturum başlatma isteği gönderir.
  3. Sunucu isteği alır ve yeni bir oturum kimliği XYZ tahsis eder
  4. Bir İstemci, oturumu daha önce kaydedilen ABC oturum kimliğiyle başlatır ve kayıt yapmasına izin vermek için sunucuya istek gönderir.
  5. Bir Sunucu, tahsis ettiği XYZ kimliğini beklediğinden ve oturum başarısız olduğundan ABC kimliğini tanımlayamıyor.

Tekrar Oynatma Sırasında Korelasyon

Çalışma zamanında gönderilen dinamik değeri ayrıştırıp bu değeri sunucuya geri döndürecek bir çözüme ihtiyacımız var. Bu çözümle istemci-sunucu iletişimi şu şekilde görünecek:

  1. Tekrar oynatma sırasında istemci, sunucuya bir oturum başlatma isteği gönderir.
  2. Sunucu isteği alır ve yeni bir oturum kimliği ZZZ tahsis eder.
  3. Bir İstemci bu yeni oturum kimliğini ZZZ istekten ayrıştırır.
  4. Bir Müşteri, ZZZ kimliğiyle oturumu başlatmak için bir istek gönderir
  5. Bir Sunucu ZZZ kimliğini tanır ve istemcinin betiği yeniden oynatmasına izin verir

Korelasyona İhtiyacımız Var

Bu başka bir şey değil ilişki.

Tıkla okuyun videoya erişilemiyorsa

VUGen durumunda korelasyon, bir yanıt ile önceki herhangi bir istek arasındaki bağlayıcı bir ilişkidir.

Bir isteğin, Oturum Kimliği, sunucudan alınan sunucu tarihi/saati gibi sunucudan önceden alınmış bir yanıta dayandığı çeşitli durumlar vardır. Bu değerler, bir uygulamayı her çalıştırdığınızda veya bir komut dosyasını kaydettiğinizde farklıdır. Açıkçası, betiğin yürütülmesi sunucu tarafından döndürülen bir değere bağlıysa, bu, sunucu yanıtını "yakalayabileceğiniz" ve sunucunun beklediği isteklere ekleyebileceğiniz bir mekanizma bulmanız gerektiği anlamına gelir. Buna genellikle LoadRunner'da Korelasyon adı verilir.

Basit bir ifadeyle Korelasyonu kullanarak çözüm şudur:

  1. Bir adımdan çıkış değerini yakalayın
  2. Sonraki tüm adımlara girdi olarak hizmet etmek için yukarıdaki yakalanan değeri kullanın

Korelasyon VUGen/LoadRunner'da 2 kategoriye ayrılır:

  • Otomatik korelasyon
  • Manuel korelasyon

Otomatik Korelasyon

LoadRunner, korelasyonu otomatik olarak kolayca gerçekleştirecek bir mekanizma sağlar.

VUGen, sunucu yanıtındaki değişken değerleri dahili olarak karşılaştırabilmek için kayıtlı bir betiği en az iki kez çalıştırmanızı gerektirecektir.

Otomatik korelasyon 3 kategoriye ayrılabilir:

  • Korelasyonu Otomatik Algıla
  • Kural Tabanlı Korelasyon
  • Tüm İfadelerin İlişkilendirilmesi
Kural adı Ne zaman kullanılır?
Korelasyonu Otomatik Algıla HP LoadRunner tarafından desteklenen uygulama sunucuları için dinamik verileri tespit edin ve ilişkilendirin
Kural Tabanlı Bağlamın bilindiği, desteklenmeyen bir uygulama sunucusuyla çalışırken kullanılır.
Tümünü İlişkilendir Tüm dinamik verileri kör bir şekilde ilişkilendirmeye yardımcı olur.

Otomatik Korelasyon daha basit görünse de hataya açık olabilir ve vakaların %5'inden fazlasında işe yaramaz. Her zaman manuel korelasyonun kullanılması tavsiye edilir.

Kayıt sırasında otomatik korelasyonu yapılandırmak için, bir komut dosyası kaydedildikten sonra Kayıt Süresi Ayarında aşağıdaki yapılandırmayı gerçekleştirin.

Kayıt =>Kayıt Seçenekleri'ne tıklayın (veya Ctrl +F7'ye tıklayın),

Otomatik Korelasyon

Aşağıdaki pencere açılacaktır:

Otomatik Korelasyon

Korelasyon =>Konfigürasyon'a tıklayın – aşağıdaki pencere açılacaktır.

Otomatik Korelasyon

Burada konu uygulamanızda kullanılan tüm uygulamalara (ASPNET) vb. karşı kontrol edildi olarak işaretlemeniz gerekmektedir. Sağ tarafta, korelasyon için olası adayları tespit edecek kuralları görebilirsiniz, örneğin _VIEWSTATE. Ayrıca Yeni Kural düğmesine tıklayarak daha fazla uygulama veya özel kural ekleyebilirsiniz.

Ayrıca KURALLAR'a da tıklayabilirsiniz, aşağıdaki gibi göreceksiniz:

Otomatik Korelasyon

Otomatik Korelasyonun çalışması için Kural Taramasının işaretli olarak işaretlendiğinden emin olmanız gerekir. Bulunan değerleri otomatik olarak ilişkilendir seçeneğine tıklarsanız, VUGen bir korelasyon adayı bulunduğunda size seçim yapmayacaktır, bunun yerine yalnızca bunları ilişkilendirecektir.

Korelasyon için kullanılan API'yi daha sonra anlayacağız. Ancak, metin karşılaştırması yerine HTML karşılaştırması kullanılması tavsiye edilir.

Herhangi bir kuralı seçtikten sonra pencereleri kapatmak için Tamam butonuna tıklayın.

Tıklayın Otomatik KorelasyonMenüden VUGen, komut dosyasını (kaydetmeye gerek kalmadan) yeni yapılandırmalarla yeniden oluşturacaktır. VUGen, korelasyonu yönetmek için gerekli kod parçasını otomatik olarak ekleyecektir. Örneğe Manuel Korelasyon bölümünde daha ayrıntılı olarak bakacağız.

Korelasyonu manuel olarak gerçekleştirirseniz veya otomatik korelasyon kullanırsanız, kod parçasının tamamen aynı söz dizimini ve işlevi içereceğini lütfen unutmayın.

Bir betiği otomatik olarak ilişkilendirme adımları:

  1. Bir komut dosyasını kaydetme
  2. Komut dosyasını tekrar oynat
  3. İlişkilendirilecek değerleri belirleyin
  4. Değerleri seçin ve otomatik ilişkilendirme düğmesine tıklayın
  5. Komut dosyasını tekrar çalıştırarak doğrulayın. Başarılı bir çalışma, başarılı korelasyon anlamına gelir.

Bahşiş:

  • Korelasyon, komut dosyanızı farklı değerlerle çalıştırmanıza yardımcı olur
  • Korelasyon aynı zamanda betiğinizin boyutunu da azaltır

Manuel Korelasyon

Manuel korelasyon, sürekli değişen değerleri karşılamak için kodu doğrudan komut dosyanıza yazmakla ilgilidir. Bunu aşağıdaki adımlara ayırabiliriz:

  1. Yakalanacak değeri belirleyin
  2. Yakalanacak değerin sağ ve sol metin sınırlarını bulun (WEB)
  3. Metin sınırlarının hangi oluşumunun kullanılması gerektiğini bulun
  4. Yakalanacak değeri içeren sayfayı isteyen kod parçasının üstüne, betiğe bir web_reg_save_param işlevi ekleyin
  5. Fonksiyona bir parametre adı, sol sınır, sağ sınır ve oluşum ekleyin
  6. Her gerçekleştiğinde koddaki dinamik değeri parametrelendirin
  7. Doğru yürütmeyi doğrulayın
web_reg_save_param (" OracleAppJSESSIONID3",
	"LB/IC=JSESSIONID=",
	"RB/IC=;",
	"Ord=l",
	"Search=headers",
	"RelFrameId=l",
	LAST);

web_reg_save_param("Siebel_Analytic_ViewState2",
	"LB/IC=ViewState\" value=\"",
	"RB/IC=\"",
	"Ord=1",
	"Search=Body",
	"RelFrameId=l",
	LAST);

Manuel korelasyon VUser Comparison ile yapılabilir. VUser Karşılaştırma Korelasyon yöntemindeki adımlar aşağıdaki gibi bölünebilir:

  1. İlişkilendirilmesi gereken Dinamik değerleri belirleyin
  2. Dinamik değeri içeren Sunucuları Bul yanıtı
  3. Bir parametredeki Dinamik değeri yakalama
  4. Dinamik değerin her oluşumunu parametreyle değiştirin
  5. Değişiklikleri Doğrula

Web_reg_save_param işlevini anlama

VUGen, adayları ilişkilendirmek için aşağıdakiler de dahil olmak üzere birden fazla işlev veya API sağlar:

  • web_reg_save_param
  • web_reg_save_param_ex
  • web_reg_save_param_regexp
  • web_reg_save_param_xpath

Burada kısa bir giriş sağlansa da, fonksiyonlar ve parametreleri hakkında detaylı bir anlayış için VUGen'i açın, fonksiyon yazın (veya Steps Toolbox'ı kullanın), imleci fonksiyona getirin ve F1'e tıklayın - VUGen yardımı ile tanışın ve bir alışkanlık edinin. Sektörde çalışırken bununla çok uğraşmanız gerekecek.

İşte fonksiyon detayları:

web_reg_save_param(Parametre Adı, Sol Sınır, Sağ Sınır)

Niteliklerin Listesi

Dönüştürmek: Olası değerler şunlardır:

HTML_TO_URL: HTML kodlu verileri URL kodlu veri biçimine dönüştürün

HTML_TO_TEXT: HTML kodlu verileri düz metin biçimine dönüştürün; bu özellik isteğe bağlıdır.

Yönlendirmeleri Yoksay: “Yönlendirmeleri Yoksay=Evet” belirtilirse ve sunucu yanıtı yeniden yönlendirme bilgisi ise (HTTP durum kodu 300-303, 307), yanıt aranmaz. Bunun yerine, yeniden yönlendirme yanıtı alındıktan sonra, yönlendirilen konuma GET isteği gönderilir ve o konumdan gelen yanıt üzerinde arama yapılır.

Bu özellik isteğe bağlıdır. Varsayılan, “Yönlendirmeleri Yoksay=Hayır”dır.

1 POUND = 0.45 KG: Parametrenin veya dinamik verilerin sol sınırı. LB değeri belirtmezseniz verinin başlangıcından itibaren tüm karakterleri sınır olarak kullanır. Sınır parametreleri büyük/küçük harfe duyarlıdır. Arama metnini daha da özelleştirmek için bir veya daha fazla metin bayrağı kullanın. Bu özellik gereklidir. Sınır Argümanları bölümüne bakın.

BULUNAMADI: Sınır bulunamadığında ve boş bir dize oluşturulduğunda kullanılan işleme seçeneği.

Varsayılan değer olan “Bulunamadı=hata”, sınır bulunamadığında bir hatanın ortaya çıkmasına neden olur.

"Bulunamadı=uyarı" (Önceki sürümlerde "Bulunamadı=boş"), hata vermez. Sınır bulunamazsa parametre sayısını 0'a ayarlar ve betiği çalıştırmaya devam eder. Dizenin bulunup bulunmadığını görmek istiyorsanız ancak betiğin başarısız olmasını istemiyorsanız "uyarı" seçeneği idealdir.

not: Betik için Hata Durumunda Devam Et etkinleştirilmişse, NOTFOUND "hata" olarak ayarlandığında bile, sınır bulunamadığı zaman betik devam eder ancak genişletilmiş günlük dosyasına bir hata mesajı yazılır.

Bu özellik de isteğe bağlıdır.

ORD: Eşleşmenin sıralı konumunu veya örneğini belirtir. Varsayılan örnek 1'dir. "Tümü" seçeneğini belirtirseniz parametre değerlerini bir diziye kaydeder. Bu özellik isteğe bağlıdır.

Not: ORD yerine Örnek kullanımı geriye dönük uyumluluk açısından desteklenir, ancak kullanımdan kaldırılmıştır.

RB: Parametrenin veya dinamik verinin sağ sınırı. RB değeri belirtmezseniz verinin sonuna kadar tüm karakterleri sınır olarak kullanır. Sınır parametreleri büyük/küçük harfe duyarlıdır. Arama metnini daha da özelleştirmek için bir veya daha fazla metin bayrağı kullanın. Bu özellik gereklidir. Sınır Argümanları bölümüne bakın.

RelFrameID: HTML sayfasının istenen URL'ye göre hiyerarşi düzeyi. Olası değerler ALL veya bir sayıdır. Ayrıntılı bir açıklama için RelFrameID Özniteliği'ne tıklayın. Bu özellik isteğe bağlıdır.

Not: RelFrameID, GUI düzeyindeki komut dosyalarında desteklenmez.

SaveLen: Parametreye kaydedilecek, bulunan değerin alt dizesinin belirtilen uzaklıktan uzunluğu. Bu özellik isteğe bağlıdır. Varsayılan değer -1'dir ve dizenin sonuna kadar kaydedileceğini belirtir.

Ofseti Kaydet: Parametreye kaydedilecek, bulunan değerin bir alt dizesinin ofseti. Ofset değeri negatif olmamalıdır. Varsayılan 0'dır. Bu özellik isteğe bağlıdır.

Arama: Aramanın kapsamı - sınırlandırılmış verilerin nerede aranacağı. Olası değerler şunlardır: Başlıklar (Yalnızca üstbilgileri arayın), Gövde (başlıkları değil, yalnızca gövde verilerini arayın), Kaynak yok (tüm üstbilgileri ve kaynakları hariç tutarak yalnızca HTML gövdesini arayın) veya HEPSİ (arama gövdesi, başlıklar ve kaynaklar). Varsayılan değer ALL'dir. Bu özellik isteğe bağlıdır ancak genellikle tercih edilir.