Sobes.tech
Middle

Performans testlerinin temel yönleri nelerdir ve uygulama için hangi araçları kullandınız?

sobes.tech yapay zeka

AI'dan gelen yanıt

Performans testi şunları içerir:

  • Yük Testi (Load Testing): Sistemin beklenen yük altında davranışının değerlendirilmesi. Sistem, performansın bozulmaya başlamasından önce dayanabileceği maksimum kullanıcı veya işlem sayısını belirler.
  • Stres Testi (Stress Testing): Sistemi, beklenenden fazla aşırı yük altında test etmek, arıza noktasını ve bu koşullardaki davranışını belirlemek. Amaç, sistemin aşırı yüklenmeden sonra toparlanıp toparlanmadığını doğrulamaktır.
  • Dayanıklılık/Soak Testi (Endurance/Soak Testing): Sistemi uzun süre boyunca yüksek yük altında test ederek, bellek sızıntıları veya zamanla ortaya çıkan diğer sorunları tespit etmek.
  • Ani Yük Artış Testi (Spike Testing): Sistemde ani yük artışları yaparak, sistemin ani kullanıcı aktivitesi artışlarına tepkisini gözlemlemek.
  • Hacim Testi (Volume Testing): Büyük veri hacmiyle veritabanı veya dosya sistemini test ederek, sistemin büyük miktarda bilgiyle nasıl başa çıktığını değerlendirmek.
  • Ölçeklenebilirlik Testi (Scalability Testing): Sistemin, donanım kaynakları ekleyerek veya yazılımı optimize ederek yük artışlarına ne kadar dayanabildiğini belirlemek.

Performans testi gerçekleştirmek için kullanılan araçlar şunlardır:

  • Apache JMeter: Çeşitli protokolleri (HTTP, HTTPS, FTP, JDBC vb.) destekleyen açık kaynaklı Java aracı. Parametrizasyon, korelasyon, kayıt ve detaylı raporlar oluşturmayı sağlar.
    // JMeter'da HTTP isteği örneği (JMX dosyası)
    <HTTPSamplerProxy guiclass="HttpTestSampleGui"
                       testclass="HTTPSamplerProxy"
                       testname="Örnek"
                       enabled="true">
      <elementProp name="HTTPsampler.Arguments" elementType="Arguments">
        <collectionProp name="Arguments.arguments"/>
      </elementProp>
      <stringProp name="HTTPSampler.domain">example.com</stringProp>
      <stringProp name="HTTPSampler.port">80</stringProp>
      <stringProp name="HTTPSampler.protocol">http</stringProp>
      <stringProp name="HTTPSampler.path">/api/users</stringProp>
      <stringProp name="HTTPSampler.method">GET</stringProp>
    </HTTPSamplerProxy>
    
  • LoadRunner (Micro Focus): Kurumsal projelerde sıkça kullanılan, protokol ve sonuç analizi konusunda geniş özelliklere sahip ticari araç.
  • Gatling: Scala tabanlı modern açık kaynaklı araç. Performansı ve test senaryosu dili (DSL) ile tanınır.
    // Gatling senaryosu örneği (Simulation.scala)
    import io.gatling.core.Predef._
    import io.gatling.http.Predef._
    
    class BasicSimulation extends Simulation {
    
      val httpProtocol = http
        .baseUrl("https://example.com")
        .inferHtmlResources()
        .proxy(Proxy("localhost", 8888).httpsPort(443))
    
      val scn = scenario("Kullanıcılar")
        .exec(http("Kullanıcıları al").get("/api/users"))
    
      setUp(scn.inject(rampUsers(100) during (5 minutes))).protocols(httpProtocol)
    }