Skip to main content
search

Yazılımların fonksiyonel olarak istenilen şekilde çalışması ardından, fonksiyonel olmayan gereksinimlere daha fazla odaklanılır. “Performans”da bu bahsettiğimiz fonksiyonel olmayan (non-functional) gereksinimlerden biridir. Yazılımın yüksek performanslı çalışmasını sağlamak için yapılabilecekleri ise Proaktif ve Reaktif aktiviteler olmak üzere iki grup altında toplayabiliriz.

Performans Testinde Proaktif ve Reaktif Yaklaşımlar

Reaktif yaklaşımda, kodlanan yazılımı uygun zaman geldiği düşünüldüğünde (genellikle proje sonlarında) teste tabi tutarak, mevcut performansı hakkında bilgi sahibi olunması amaçlanır.

Proaktif yaklaşımda ise kodlamanın başlamasından itibaren yazılım performansı ölçümlenerek gerekli iyileştirmelerin vakit kaybetmeden yapılması hedeflenir.

Sektörde ileri gelen Yazılım Geliştirme uzmanlarının çoğunun Teknik Borcu (Technical Debt) mümkün olduğunca düşük tutmak için, Proaktif yöntemi desteklediğini gözlemliyoruz. Bu durum maintainability konusunda olduğu gibi, Performans tarafında da bire bir geçerlidir. Yüksek performanslı yazılımlar üretmenin bir numaralı şartı, yazılım geliştirme sürecine başlanan ilk günden itibaren kaliteyi sahiplenerek gereken adımları atmaktan geçer.

Proaktif yaklaşım içerisinde ise Kod Analizi aktivitelerinin oldukça önemli bir yeri vardır. Kod Analizini de bu minvalde Statik ve Dinamik Kod Analizi şeklinde ikiye ayırmamız mümkün.

Dinamik Kod Analizi ile Performans Artışı Sağlama Yöntemleri

Proaktif Performans Testi yaklaşımının, kritik aktivitelerinden Dinamik Kod Analizi yönteminden performans iyileştirmeleri için nasıl yararlanacağımızdan biraz bahsedelim.

 

 

 

 

 

 

 

 

 

Code Profiling

Kısaca, çalıştırmakta olduğunuz kod içerisinde çeşitli instrumentation işlemleri yaparak, farklı seviyelerde CPU ve Memory kullanımını analiz etmeye olanak sağlayan bir yöntemdir. Doğası gereği oldukça yoğun bir şekilde araç/tool kullanımı gerektirmektedir. Keytorc olarak projelerimizde uzun süredir kullandığımız araçlara .Net platformu için aşağıdaki örnekleri sıralayabiliriz:

  • Visual Studio Performance Profiler
  • JetBrains dotTrace / dotMemory
  • ANTS Performance / Memory Profiler
  • Nprofiler

Benzer şekilde çalışan araçlardan güncel projelerimizden birinde faydalandığımız dotTrace’i daha detaylı şekilde ele alabiliriz.

dotTrace

Birçoğumuzun kullanmaktan oldukça hoşnut olduğu IntelliJ’in yaratıcısı JetBrains tarafından geliştirilmiş oldukça kullanışlı bir araç. Aracın 14 günlük Trial versiyonu süresince ürünü tam fonksiyonlu şekilde deneyimlemek ve PoC’ler oluşturmak mümkün.

Öne çıkan bazı özelliklerine göz atacak olursak:

Performance Profiler

  • Kodun çalışması esnasında hangi kaynaklarının ne ölçüde ve sıklıkla kullanıldığını analiz etme imkanı veriyor.
  • Ek olarak Visual Studio içerisine entegre olarak, IDE’nizden ayrılmadan tüm işlemleri tek bir ekrandan yapma olanağı sunuyor.

Local & Remote

  • Local veya Remote Server’lar üzerinden çalışan farklı türdeki .Net uygulamalarına bağlanarak dinamik Performans Analizi gerçekleştirmenize olanak sağlıyor.
  • Remote analiz için ek olarak hedef server üzerinde “Remote Tool”ların kurulması gerekiyor.

    Profiler Options

  • Farklı Profiling metotları ile, kodunuzu istediğiniz şekilde analiz etmenize yardımcı olabiliyor.
  • Herhangi bir an için Snapshot alarak, uygulamanızın o anki durumunu sonraki ile karşılaştırmak üzere saklayabiliyor.

  • Continuous Integration için Teamcity kullanmanız durumunda, Plug-in’i sayesinde performans değerlendirmelerini otomatik yaparak herhangi bir regresyon etkisi sonucunda oluşabilecek sorunları önceden tespit ederek, Release sürecini durdurabilmenize olanak veriyor.

Bağlantılar


Berk Dülger
Keytorc, Consultant

Close Menu