Apache tarafından geliştirilmiş JMeter, özellikle HTTPS, FTP, LDAP, vb protokolleri destekleyen altyapısı sayesinde performans testi projelerimizde tercih ettiğimiz açık kaynak kodlu performans test araçlarındandır.
Çevik (Agile) yazılım geliştirme metodolojilerinin kullanıldığı projeler ile birlikte “Continuous Performance Testing” kavramı da hayatımıza girmeye başladı. Projelerimizde, bu ortamlarda geliştirilen ya da güncellenen servislerin sisteme etkisini takip etmek için otomatize ettiğimiz regresyon testlerinin tamamlanmasının ardından, performans testlerinde de otomasyon yapılmasına yönelik taleplerde artış gözlemlediğimizi söyleyebiliriz.
Bu yazımızda JMeter ve Jenkins ile bu sürecin nasıl kurgulanacağı hakkında bilgiler paylaşacağız.
Adım 1: JMeter Senaryolarını Çalıştıracak BAT Dosyasının Yaratılması
Oluşturduğumuz JMeter senaryolarımızı console üzerinden tetikleyecek *.bat dosyasını yazmalıyız. Bu sayede *.bat dosyası çalıştırıldığında JMeter ayağa kalkar ve *.jmx dosyasında bulunan senaryoları koşturmaya başlar.
Örnek:
cd\
cd samples
jmeter -n -t WebLoadTest.jmx -l C:\samples\reports.jtl
Adım 2: Jenkins İçin Ant.xml Dosyası Oluşturmak
Jenkins’in *.bat dosyasını çalıştırması için bir ant.xml dosyası oluşturulmalı. Bu dosya sayesinde Jenkins hangi *.bat dosyasını çalıştıracağını öğrenmiş olacak.
<?xml version="1.0"?>
<project name="JMeter">
<target name="RunTest">
<exec executable="cmd">
<arg value="/c"/>
<arg value="runtest.bat"/>
</exec>
</target>
</project>
Adım 3: Jenkins’in Konfigüre Edilmesi
Sonraki adımımız ise Jenkins’te bir job oluştururarak işin Continuous Integration kapsamına alınması. Bunun için Jenkins’te Ant Build çalıştırabileceğimiz bir proje alanı yaratıyoruz. Projenin Target (Hedefler) alanına ant.xml dosyasınızdaki target name parametresini (Örnek: “RunTest“) yazıyoruz. Bu sayede testimiz Jenkins tarafından tetiklenebilir hâle geliyor.
Testler koşulduğunda raporların okunabilmesi için Jenkins Performance Plugin’ine ihtiyacımız olacak. JMeter testi sonrasında oluşacak *.jtl dosyamızı bu konfigürasyona ekliyoruz ve bu sayede dashboard’da gerekli raporları görebiliyoruz.
Aşağıdaki örnekte performans testi sonrası üretilen Throughtput (server’dan yayınlanan anlık veri miktarı) ve Response Time (sistemin/sayfaların/servislerin cevap süresi) raporlarını görebilirsiniz.
Not: Anlattığımız bu örneğin oldukça genel olduğunu ve “sürekli performans testi” yaklaşımının ihtiyaçlara göre uyarlanması gereken bir yapısı olduğunu hatırlatmak isteriz.