Köprü tasarlayan bir mühendis olduğunuzu düşünün. Bu köprüyü tasarlarken nelere dikkat ederdiniz ?
Köprünün üzerinden geçebilecek maksimum araba sayısını ve bu arabaların ortalama ağırlığını hesaplardınız. Benzer şekilde yazılım dünyasında da, uygulamalar belirli bir eşzamanlı kullanıcı yükü için tasarlanmıştır.
Yük Testi (Load Test) Nedir ?
Yük testi, sistemin belirli bir yük altında davranışını değerlendirmek için yapılan belirli bir performans testi şeklidir. Yük testi sırasında, yanıt sürelerini, verimi, sunucu koşullarını ve daha fazlasını izleyebilirsiniz. Bu test, birden fazla kullanıcı aynı anda eriştiğinde uygulamanın nasıl davranacağını belirlemeye yardımcı olur.
Yük Testi Senaryoları
Bir API’yi yük testine sokarken, API’nın olası yük altında nasıl işlediğini görmek için farklı yüklenme stratejileri kullanmanız gerekir.
Yük testlerinizin yanıtlaması gereken bazı sorular:
- API ile aynı anda kaç kullanıcı çalışabilir?
- Kullanıcılar API ile ne kadar süre çalışabilir?
- Çok sayıda kullanıcı API ile uzun süre çalışacaksa ne olur?
- API’nin işleyemediği ani bir kullanıcı artışı olursa ne olur?
SoapUI Nedir ?
“Bir yazılımcının Sırf Çantası” yazısında SoapUI’in kesinlikle yazılımcının çantasında olması gerektiğini belirtmiştik. SoapUI, açık kaynak kodlu API test aracıdır. Arayüzü hem teknik hem de teknik olmayan kullanıcıların sorunsuzca kullanmalarını sağlamaktadır.
Daha çok webservis testlerinde kullanılan soapUI, SOAP, REST, HTTP, JMS, AMF ve JDBC gibi birçok protokolü de desteklemektedir. Çok hızlı bir şekilde yük testleri de hazırlamaya imkan vermektedir.
Örnek API Tasarlayalım
Basit bir SpringBoot projesi oluşturarak yük testi yapacağımız servisimizi yazalım. Rastgele olarak 0-5 sn’ye kadar servisden cevap dönecek şekilde kodumuzu yazdık ve uygulamamızı ayağa kaldırdık. Artık yük testi yapmaya hazırız.
1 2 3 4 5 6 7 8 9 10 11 |
@RestController public class LoadTestController { @GetMapping(value = "/runLoadTest", produces = MediaType.APPLICATION_JSON_VALUE) public ResponseEntity<String> run() throws InterruptedException { double randomNumber = Math.random(); long sleepDuration = (long) (5000L * randomNumber); Thread.sleep(sleepDuration); return ResponseEntity.ok("OK"); } } |
SoapUI ile Yük Testi Nasıl Yapılır ?
SoapUI kullanarak webservisimizi tanımladık.Test case’ini oluşturduktan sonra son olarak yük testi oluşturuyoruz ve yük testlerimizi yapmaya başlıyoruz.
Eş zamanlı 20’şer olarak 1 dakika boyunca toplamda 467 sorgu yaptık ve min cevap verme süresi 24 milisaniye iken maksimum cevap sürmesi 5 sn oldu ve ortalama cevap verme süresi 2.493 sn’ dir. Soap UI yük testi ekranındaki parametrelerinin detaylı anlamlarını buradan okuyabilirsiniz. Farklı stratejiler ile yük testlerinizi yapabilirsiniz.
Başka Yük Testi Araçları
Web uygulaması performansını ve yük stresi kapasitesini ölçmek için en yaygın kullanılan performans testi araçlarının listesi aşağıdaki gibidir. Listede lisanslı performans test araçlarının yanı sıra açık kaynak kodlu araçlar da bulunmaktadır.
- Apache JMeter
- Loadium
- Grinder
- Gatling
- Tsung
- WebLOAD
- LoadNinja
- SmartMeter.io
- LoadView
- LoadUI NG Pro
- ve daha fazlası …
Kaynaklar
- https://www.soapui.org/load-testing/concept.html
- https://www.3pillarglobal.com/insights/load-testing-with-soapui-2
- https://www.tutorialspoint.com/soapui/soapui_load_testing.htm
- https://searchsoftwarequality.techtarget.com/tip/Testing-web-services-performance-with-soapUI
- https://learnsoapui.wordpress.com/2011/08/29/load-testing-with-soapui/
- https://www.soapui.org/load-testing/reference/loadtest-window.html