Skip to main content
search

k6, performans testini verimli ve keyifli bir deneyim haline getirmek için oluşturulmuş, geliştirici merkezli, ücretsiz ve açık kaynaklı bir yük testi aracıdır. Geliştirme iş akışınıza ve CI/CD otomasyon pipeline’larınıza uygun, entegre olacak şekilde tasarlanmıştır. Kullanıcıları genellikle Geliştiriciler, QA Mühendisleri ve DevOps ekipleridir. API’lerin, mikroservislerin ve web sitelerinin performansını test etmek için k6 kullanılmaktadır ve Windows, Linux ve Mac OS işletim sistemlerinde çalışır. Ayrıca topluluk tarafından test oluşturma sürecini kolaylaştırmak için tarayıcı kaydedici ve dönüştürücüler (JMeter, Postman, Swagger/OpenAPI) oluşturulmuştur. Yaygın k6 kullanım durumları aşağıdaki gibidir: 

  • Yük testi 

k6, sistem kaynaklarının minimum tüketimi için optimize edilmiştir. Ön üretim ve kalite güvence ortamlarında yüksek yüklü (ani yükselme, stres) testleri yürütmek için tasarlanmış yüksek performanslı bir araçtır. 

  • Performans İzleme 

Üretim ortamınızın performansını sürekli olarak izlemek için az miktarda yükle testler çalıştırabilirsiniz. Performans izleme konusunda daha detaylı bilgi edinmek için linki ziyaret edebilirsiniz.

 

k6 Yük Testi Manifestosu

k6, performans testinin doğru bir biçimde yapılmasına yardımcı olmak için kılavuz olarak kullanılmak üzere bir yük testi manifestosu sunuyor;

  • Basit test, test etmemekten iyidir.
  • Yük testi hedefe yönelik olmalıdır. 
  • Geliştiriciler için yük testi 
  • Geliştirici deneyimi çok önemlidir. 
  • Üretim öncesi bir ortamda yük testi 

Manifesto maddeleri ile ilgili detaylara linkten erişebilirsiniz.

k6 Alternatifi Bazı Performans Testi Araçları 

k6’ya alternatif gösterilecek bazı araçlar:

  • Apache JMeter
  • WebLOAD
  • WAPT
  • Loadster
  • SmartMeter.io

k6 ile ilgili daha detaylı bilgilere ve örneklere k6 docs üzerinden erişebilirsiniz, bu yazımızda k6 ile basitçe bir RESTful API testinin GET ve POST metotları için nasıl yapılabileceğinden bahsedeceğiz.

k6 üzerinde RESTful API Yük Testi Oluşturma

k6’nın sunduğu bir yazıya göre REST API’leri şu anda kullanımda olan tüm API’lerin yaklaşık% 83’ünü oluştuyor. REST API uç noktalarının performansını test etmek için basit bir örnek gerçekleştireceğiz.

Konu Başlıkları:

  1. Ortak erişime açık bir API
  2. GET isteklerini gerçekleştirme
  3. POST isteklerini gerçekleştirme

Örneğimize ilk aşamamızla başlıyoruz.

Ortak erişime açık bir API 

Bu senaryomuz için Meta Weather API uç noktası kullanarak yük testi gerçekleştirdik. Denemek için API sorgularını repository üzerindeki linklerden ilgili API’nin sitesine giderek görüntüleyebilirsiniz.

https://github.com/public-apis/public-apis

 

GET isteklerini gerçekleştirme

Script.js adında bir dosya oluşturup, GET isteklerini gerçekleştirmek için içerikteki gibi bir script oluşturuyoruz.

url = Yük testi yapmak istediğimiz API uç noktasını bu değişkene tanımlıyoruz.

k6 genel Bakış

GET Request Script

Yukarıdaki komut dosyası, bu API uç noktasına verilen her yanıtın HTTP 200 durum kodu döndürüp döndürmediğini kontrol eder. Ek olarak, başarılı işlemlerin yüzdesini son çıktıda elde etmek için başarısız istekleri de kaydederiz.

Pratik olarak minimum sayıda sanal kullanıcıyla (2–3) başlayıp aşama aşama bu sayıyı arttırarak ilerlememiz gerekir fakat biz bu demo için 60 sanal kullanıcıyla yük testimizi 30 saniye için başlatıyoruz.

k6 Genel Bakış, performans testleri

GET Request Load Testing

İlk yük testi çalıştırma sonuçları, isteklerin tamamının yanıt aldığını gösteriyor.

Terminal çıktılarından şunları yorumlayabiliriz:

  • http_req_duration kısmını incelediğimizde p(95) kullanıcılarımızın %95’inin 991.25 ms’nin altında bir yanıt aldığını görüntülüyoruz.
  • http_reqs kısmını incelediğimizde toplam 4645 yanıt alındığını ve saniye başına yaklaşık 151 istek atıldığını görüntülüyoruz.

 

POST isteklerini gerçekleştirme

Bu işlemi gerçekleştirebilmek için API’nin post methodunu desteklemesi gerekiyor, bu senaryo için {JSON} Placeholder kullanıyoruz.

url = Yük testi yapmak istediğimiz API uç noktasını (JSON Placeholder) bu değişkene tanımlıyoruz.

k6 Genel Bakış

POST Request Script

GET scriptine göre yaptığımız bazı değişiklikler:

  • Http.get’i http.post olarak değiştirdik. 
  • Şimdi, uç noktalar için oldukça yaygın olan bir HTTP 201 durum kodu bekliyoruz. 
  • VU ve ITER olmak üzere 2 sihirli değişken ekledik. Bunları, gönderi verilerimiz için benzersiz dinamik veriler oluşturmak için kullanıyoruz. Detaylı bilgi için linke tıklayabilirsiniz.

POST Request Load Testing

POST isteklerimizin %99 seviyesinde başarıyla gerçekleştirildiğini görüyoruz.

Terminal çıktılarından şunları yorumlayabiliriz:

  • http_req_duration kısmını incelediğimizde p(95) kullanıcılarımızın %95’inin 434.65 ms’nin altında POST isteklerine başarıyla hizmet verildiğini görüyoruz
  • http_reqs kısmını incelediğimizde toplam 460 POST request yapıldığını da söyleyebiliriz.

Bu yazımızda k6’nın ne olduğundan ve k6 ile basitçe bir RESTful API testinin GET ve POST metotları için nasıl yapılabileceğinden bahsettik. Bu konuyla ilgili detaylı bilgilere k6 Docs üzerinden ulaşabilirsiniz.

 

Referanslar:

https://k6.io/deliver-fast-and-reliable-digital-experiences-with-k6/

https://k6.io/docs/examples/

https://k6.io/docs/#what-is-k6

https://www.softwaretestinghelp.com/performance-testing-tools-load-testing-tools/

 

Tolga Yayıcı

Yazılım Test Stajyeri

Close Menu