Ana içeriğe atla

Visual Studio 2008 Test Edition Web ve Load Test İncelemesi (Bölüm 7) – Load Test

Bir önceki makalemizde Web Testi ile test senaryosunu oluşturmuş ve yük testi için hazır hale gelmiştik. Load Test/Yük testi, uygulamanın farklı senaryolarda sergileyeceği performansın ölçülmesini sağlayan bir test yöntemidir. Çoğu zaman, eğer uygulamamız tek bir makinede çalışıyorsa, performansı hakkında bir fikir sahibi olabiliriz. Fakat web uygulaması gibi performansın etkilenebileceği pek çok faktörün bir araya geldiği durumlarda, uygulamamızı ancak yük testinden geçirerek sonuçlarına göre iyileştirmeler yaptıktan sonra daha sağlıklı fikrimiz olur.
Visual Studio içerisinde gelen yük testi, farklı tarayıcılarla, farklı kullanıcı profilleri için hafif ve ağır yük senaryolarını oluşturabilecek pek çok özellik içermektedir. Bunu, yerel makinemizde basitçe uygulayabileceğimiz gibi (gerçekçi sonuçlar vermeyebilir), pek çok farklı makineyi dâhil ederek de (bir “Controller”, bir veya birden fazla “Agent”) uygulayabiliriz.
Yük Testi Oluşturulması
Daha önce oluşturduğumuz test projesi içerisinde, yeni test ekleme ekranını açıp, yük testini seçelim.
image
Yük testinin adını girdikten sonra ekranı kapatalım. Karşımıza, yük testinin en genel özeliklerini ayarlayabileceğimiz bir sihirbaz gelecektir.

image
Sihirbazda açılış ekranı sonrasında, aşağıdaki ekran görüntüsünde olduğu gibi, yük testi adını girebileceğimiz bir giriş kutusu ve altında sanal kullanıcılar için, senaryoların çalıştırılması sırasında kullanılacak bekleme süresi girilebilir. Bu bekleme süresinin, Visual studio tarafından yorumlanıp değişkenlik göstermesini veya devre dışı kalmasını istiyorsak, gösterilen üç profilden uygun olanını seçmemiz gerekir.
image
Bir sonraki adımda ise, yük deseni belirlenir. Burada iki tip yük deseni mevcuttur. İlki “Constant Load” (Sürekli yük) olup, yük testinin başlaması anında, belirlenen sanal kullanıcı sayısı kadar kullanıcı hemen yaratılır ve yartılan her kullanıcı aynı anda yük oluşturmaya başlar.
İkinci seçenek olan “Step Load” test, belirlenen aralıklarla arttırılan sanal kullanıcı sayısına bağlı yük testidir. Burada; “Start User Count” yük testi başlar başlamaz aktif olup yük yaratacak kullanıcı sayısıdır. “Step duration” saniye cinsinden bir değer olup, belirtilen süre kadar sonra, “Step User Count” değerindeki sanal kullanıcı sayısını sisteme yükler. “Maximum user count” ise, en fazla yaratılması gereken kullanıcı sayısını gösterir.
image

Bir sonraki adımda ise, test karışım modeli seçilir. Burada üç seçeneğimiz vardır.
  • “Based on the number of tests“:  Seçilen test senaryoları, “Test Mix” adımında verilen oranlar doğrultusunda paylaştırılarak çalıştırılır.
  • “Percentage Based on Virtual Users”: Sadece “Test Mix” adımında belirtilen oran doğrultusunda çalıştırılmayıp, yük biçimi adımında belirlenen yöntem de kullanılarak, mutlaka verilen süre içerisinde belirlenen sayıda sanal kullanıcı yaratılıp yük oluşturulur.
  • “Based on user pace”: Test karışımında olan her testin her bir kullanıcı tarafından çalıştırılma oranı belirlenir. Örneklemek gerekirse;
    • A testi: Bir sanal kullanıcı bir saatte 4 test
    • B testi: Bir sanal kullanıcı bir saatte 2 test
    • C testi: Bir sanal kullanıcı bir saatte 0.125 test
gibi değerler verilebilir. Dolayısıyla Visual Studio, belirlenen testlerin en fazla ne kadar sürmesi gerektiğini hesaplayıp, bu süre zarfında sonlanmayan testler için hata döndürür.
image
Bir sonraki adımda test karışımının içeriği belirlenir.
image
Açılan ekrandan “Add” tuşuna basıp, test seçim ekranı açılır ve yük testine dâhil olması istenen “webtest” eklenir.
image
Eklenen “webtest” için çalıştırılma dağılımları aşağıdaki ekrandan girilir. Dağılımların toplamı her zaman 100 olmalıdır. Olmadığı durumda bir sonraki adıma geçmenize izin verilmez.
image
Ek olarak bu adımda, açılış ve kapanış için sadece bir kez çalıştırılmak istenen “webtest” girilebilir. Dolayısıyla web uygulamanız, sayfaların çalışabilmesi için mutlaka giriş bilgisine ihtiyaç duyuyorsa (örn: forms authentication), uygulamanızın giriş sayfası için üretilen “webtest” senaryosunu, “initialization test” olarak seçebilirsiniz. Böylece, her sanal kullanıcı önce bu adımdan geçip gerekli oturum bilgilerini oluşturduktan sonra, test senaryolarını çalıştıracaktır.
Bir sonraki adımda, tarayıcı tipi dağılımını belirleyebilirsiniz. Uygulamanızın çalışmasını istediğiniz tarayıcı tip / sürümlerini seçip ekledikten sonra gerçekte kullanımı göz önünde bulundurarak dağılımlarını düzenleyebilirsiniz.
image
Bir sonraki adımda yine benzer şekilde, bağlantı tiplerini seçebilirsiniz. Hizmet vereceğiniz bölgedeki ISP hızlarını dikkate alıp uygun olan bağlantıları eklemeniz, gerçek hayat simülasyonu yapmanız anlamında önemlidir. Buna ek olarak, uygulamanız hem Internet hem de intranet ortamından kullanılacaksa, LAN bağlantısını da ekleyip, intranet kullanıcılarının toplam kullanıcı sayısına oranına göre bu bağlantının dağılımını da belirleyebilirsiniz.
image
Bir sonraki adımda, varsayılan değerlerle kullanılacak sayaçlar ve bu sayaçların hangi makinelerde kullanılacağını belirleyebilirsiniz. Varsayılan değerleri incelediğimizde, “Controller” ve “Agent” servislerinden metriklerin toplanabileceğini görürüz. Bunlara ek olarak, servis kurmadan metrik toplamak istediğimiz sistemlerimiz varsa, bunun için “Add Computer” tuşuna basıp, ilgili makineleri sırasıyla eklememiz gerekir.
image
Not: Servislerin kurulmadığı ve/veya erişim haklarının yönetici seviyesinde olmadığı durumlarda, test sırasında metrikler toplanamayabilir.
Son olarak, yük testi çalışma süresinin neye göre belirlenmesi gerektiğini düzenleyeceğimiz adıma gelmiş oluruz. Bu adımda yük testi süresi iki şekilde planlanabilir.
  1. Çalışma süresi
  2. Iterasyon sayısı
image
Çalışma süresi olarak planlanmak istediğimiz zaman, yük testi bilgilerinin tamamlanabilmesi için en azından, “Run Duration” (çalışma süresi) girişinin yapılması zorunludur. “Warm-up duration” (ısınma süresi), “Constant Load” veya “Step Load” test seçildiğinde başlangıç için belirtilen sanal kullanıcı sayısına ulaşmak için geçmesi gereken süredir. Bu değerler girilmediği durumda (varsayılan sıfırdır), test hemen başlatıldığı gibi eş zamanlı bir şekilde başlangıç kullanıcı sayısı kadar sanal kullanıcı yaratılmaya çalışılır.
Iterasyon sayısı olarak planlamak istediğimiz zaman ise, toplamda çalışmasını istediğimiz test sayısını belirlemiş oluruz. Bu sayı çerçevesinde, gerekli sanal kullanıcı sayısını visual studio kendisi belirler. Çalıştırılan testlerin uzunluğu ve yük deseni için belirlenen parametreler de bu sayının belirlenmesinde rol oynar.
Ali KALFAOĞLU

Yorumlar

  1. Her ne kadar eski bir blog yazisi olsa da isime yaradi. Tesekkürler.

    YanıtlaSil
  2. Arkadaşlar ellerinize sağlık çok güzel bir çalışma teşekkürlerreplika telefonlar

    YanıtlaSil

Yorum Gönder

Bu blogdaki popüler yayınlar

UML ve Modelleme – Bölüm 4 (Class (Sınıf) Diyagramları)

Bir önceki makalemizde UML modellemede kullanılan ilk diyagram olan Use Case diyagramını incelemiştik. Bu makalemizde nesne tabanlı programlamada kullanılan sınıflar ve sınıfların arasındaki ilişkileri modelleyebileceğimiz diyagramlar olan Class(Sınıf) diyagramlarını inceleyeceğiz. UML’de sınıflar, nesne tabanlı programlama mantığı ile tasarlanmıştır. Sınıf diyagramının amacı bir model içerisinde sınıfların tasvir edilmesidir. Nesne tabanlı uygulamada, sınıfların kendi özellikleri (üye değişkenler), işlevleri (üye fonksiyonlar) ve diğer sınıflarla ilişkileri bulunmaktadır. UML’de sınıf diyagramlarının genel gösterimi aşağıdaki gibidir. Şekil 1. Class Diyagram Şekil1’de görüldüğü üzere bir dikdörtgeni 3 parçaya bölüyoruz. En üst bölüm sınıf adını, orta kısım özellik listesini (üye değişkenler) ve en son kısım, işlev listesini (üye fonksiyonlar) göstermektedir. Çoğu diyagramlarda alt iki bölüm çıkarılır. Genelde tüm özellik ve işlevler gösterilmemektedir. Ama

Yazılım Maliyet Tahmineleme Tecrübeleri

Yazılım mühendisliğinde maliyet hesabı her zaman problem olmuştur. "Bu iş kaç Adam/Gün tutar?" sorusuyla sıkça karşılaşıyoruz. Adam/gün veya Adam/ay ölçütleri bir kaynağın/kişinin belirtilen zaman dilimindeki iş gücü anlamına gelir. Tabi bu noktada yine kafa karışıklıkları başlar. 6 A/G'lik bir işi hızlandıralım diye 2 kişi ile yapmaya çalışsak ve kaynak/kod, modül, altyapı, insan vb. her bir şeyi bir kenara bıraksak, matematiksel basit formülle 6/2=3 A/G'de biter? Gerçek hayat böyle değil, öncelikle bunu anlamamız lazım. Hep şu örnek verilir; "Aynı bebeği 2 kadın birlikte daha kısa sürede doğurur mu?" Eğer bunun cevabı "Evet" ise (veya bir gün böyle bir durum ortaya çıkarsa), yazımı değiştirmem gerekecek:) Mevzu gerçekten derin...Maliyet hesabı; bulunduğunuz firmanın yazılım süreçlerini hangi methodlarla uyguladığına, ilgili işin o dönemdeki aciliyetine, (şirket yönetiminin baskısına:)) vb. bir çok duruma bağlı olabilir. Örneğin; bizim firmada e

UML ve Modelleme – Bölüm 3 (Use Case Diyagramlar)

Önceki iki makalemizde ( 1 , 2 ) UML’e genel olarak değinip ve modellemede kullanacağımız dokuz diyagram hakkında bilgiler vermiştik. Bu makalemizde Use Case diyagramından detaylı bahsedeceğiz. Öncelikle, genel Use case diyagramının tanımını hatırlayalım. “Bir kullanıcı ve bir sistem arasındaki etkileşimi anlatan senaryo topluluğudur.” Ivar Jacobson Senaryo tanımı için der ki: “Aktörle sistem arasında gerçekleştirilen, sonucunda aktöre farkedilir getirisi/ faydası oluşan etkileşimli diyalogdur. ” UML Use Case Diyagramları  sistemin işlevselliğini açıklamak amacıyla kullanılır. Sistemin birbirinden ayrı özelliklerinin detaylarını göstermekten ziyade, Use Case Diyagramlar, tüm mevcut işlevselliği göstermek için kullanılabilir. Buradaki en önemli noktalardan biri,   Use Case Diyagramlar temelde sequence diyagram ve akış diyagramlarından farklıdır. Use Case diyagramlar dört ana elemandan oluşmaktadır. Aktörler , Sistem (Proje kapsamını belirtir) , Use Caseler ve bunlar ara