Webmaster ve Yazılım Geliştiriciler
Yazılım Performans, Yük Ve Stres Testleri
Yazılım Performans, Yük Ve Stres Testleri
-
Merhaba arkadaşlar. Başlıkta belirtmiş olduğum konularda fikirlerinizi almak istiyorum. Yazılım işiyle uğraşan arkadaşlar yaptıkları yazılımların performans, yük ve stres testlerini nasıl yapıyorsunuz acaba?
-
En son 5-6 sene önce yük testine dahil olmuştum. Web servis'e load test yapmıştık. Soap UI ile senaryoyu hazırlayıp çalıştırmıştık.
-
visual studio 2015 ile birlikte bu konuyla ilgili güzel şeyler geldi, anlık bellek, işlemci kullanımını görebiliyorsun, her verinin/değişkenin ne kadar alan kapladığını görebiliyorsun, bir işlemin ne kadar sürdüğünü ms bazında görebiliyorsun anlık olarak.. öyle bir tool v.s. yüklemene gerek yok
-
unbalanced bunu yazdı
visual studio 2015 ile birlikte bu konuyla ilgili güzel şeyler geldi, anlık bellek, işlemci kullanımını görebiliyorsun, her verinin/değişkenin ne kadar alan kapladığını görebiliyorsun, bir işlemin ne kadar sürdüğünü ms bazında görebiliyorsun anlık olarak.. öyle bir tool v.s. yüklemene gerek yok
e güzelmiş. 15e geçince kurcalamak lazım bi.
-
Java ile biraz kurcalamışlığım oldu. junit ile unit testleri hazırlıyorduk (ki bana ciddi anlamda külfet geliyor ama büyük projelerde yapılması gerekir.) Stress testleri ise olasılık tabanlı gerçek kullanıcı gibi çalışan multi-thread çalışan bir bot yazmıştım. 1 exectable 1000 kullanıcıyı simule ediyordu (ama paketler test edilen uygulamaya localhostta çalıştığı için süper hızlı iletildiği için aslında 1000 değil belkide 2000 kişilik bir yük oluşturuyordu). Kendi varsayımım kullanıcının ne yaptığını tam olarak kestiremediğin için olasılıksal olarak kullanıcı hareketlerini simule ettim. Mantık çok basit;
0-100 arasında bir sayı tuttum.
0-10 aralığındaysa (%10 olasılıjkla) A işlemini yap
11-50 aralığındaysa (%40 olasılıkla) B işlemini yap
51-100 aralığındaysa(%50 olasılıkla) C işlemini yap
Yapılan işlem karşısında test ettiğim yazılım network pakedi olarak bir cevap gönderdi bana. Gönderdiği cevabın türü de bir sonraki state imi belirlemiş oldu. Yani ilk başta A işlemi seçildiyse, A işleminden sonra 1,2,3 işlem alternatiflerinden birisi olasılıksal olarak yapılmalı. B işlemi seçildiyse 4,5,6 işlem alternatiflerinden irisi olasılıksal olarak yapılmalı. Düşük bir olaslıkla kullanıcı bir üst aksiyona geri döner şeklinde olaya yaklaşırsan botlar fıldır fıldır uygulamada gerçek kullanıcıymış gibi hareket ederler. Sende uygulamanı bu şekilde takip edebilirsin. Bu tarz simulasyonlar sana bir fikir verebilir ANCAK debug versiyon release versiyona göre daha yavaş çalışacaktır (uygulamaya atılan hooklardan dolayı) bu da debug versiyon ile release arasında farklı davranışlara neden OLABİLİR. Özellikle network işlemleri yapıyorsa ve düzgün bir lock mekanizması kullanmadan paketler işleniyorsa debug modda çatır çatır çalışan kod release de unstable bir hal alabilir. O yüzden denemeleri hem debug hem release versiyon üzerinde yapmakta fayda var. Uzun oldu muhtemelen kimse okumayacak ama olsun :D
Edit: Sözkonusu user interface içeren bir uygulama ise yıllar yıllar önce autoit ile basit scriptler yaparak mouse hareketlerini simule ediyordum. Muhtemelen autoit ile yapılabilecekler almış başını yürümüştür. User interface testi de bu şekilde hazırlanabilir.
-
Web servisleri için başka bir server kullanıyorsun. Flood engelini kaldırıyorsun. Biraz log tutuyorsun. Hücum ettiriyorsun. Sonuçları eline alıyorsun. Kod, server, veritabanı analizini yapıyorsun. Server değiştirmek mi kodu optimasyon etmek mi tool mu diye kendine soruyorsun. Hangisi faydalıysa ona yöneliyorsun.
-
Bir o kadar yapılması gereken işler olduğu gibi yazılımcıya bir o kadar da külfet olan işler bunlar yahu. Çok sinir bozucu.
-
DrKill bunu yazdı
Bir o kadar yapılması gereken işler olduğu gibi yazılımcıya bir o kadar da külfet olan işler bunlar yahu. Çok sinir bozucu.
Yapacak birşey yok hocam. Mecbur :D