Sobes.tech
Middle

Koji su glavni aspekti testiranja performansi i koje ste alate koristili za njihovu realizaciju?

sobes.tech АИ

Одговор од АИ

Testiranje performansi uključuje:

  • Test opterećenja (Load Testing): Procena ponašanja sistema pri očekivanom opterećenju. Određuje maksimalni broj korisnika ili transakcija koje sistem može izdržati pre nego što performanse počnu da opadaju.
  • Stres testiranje (Stress Testing): Testiranje sistema pri ekstremnim opterećenjima koja premašuju očekivano, kako bi se odredila tačka kvara i ponašanje sistema u takvim uslovima. Cilj – osigurati da se sistem oporavi nakon preopterećenja.
  • Test izdržljivosti (Endurance/Soak Testing): Testiranje sistema tokom dužeg vremenskog perioda uz značajno opterećenje, radi otkrivanja curenja memorije ili drugih problema koji se javljaju s vremenom.
  • Spike test (Test na vrhuncu opterećenja): Naglo povećanje opterećenja na sistemu radi provere reakcije sistema na iznenadne skokove aktivnosti korisnika.
  • Test volumena (Volume Testing): Testiranje sa velikim obimom podataka u bazi ili fajl sistemu radi procene performansi sistema pri radu sa velikom količinom informacija.
  • Test skalabilnosti (Scalability Testing): Određivanje sposobnosti sistema da se nosi sa povećanjem opterećenja dodavanjem hardverskih resursa ili optimizacijom softvera.

Za sprovođenje testova performansi korišćeni su sledeći alati:

  • Apache JMeter: Višefunkcionalni alat otvorenog koda u Javi, podržava različite protokole (HTTP, HTTPS, FTP, JDBC i dr.). Omogućava kreiranje složenih test scenarija, uključujući parametrizaciju, korelaciju, logovanje i generisanje detaljnih izveštaja.
    // Primer HTTP zahteva u JMeter-u (JMX fajl)
    <HTTPSamplerProxy guiclass="HttpTestSampleGui"
                       testclass="HTTPSamplerProxy"
                       testname="Sample"
                       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): Komercijalni alat, poznat po širokim mogućnostima podrške protokolima i analizi rezultata. Često se koristi u velikim korporativnim projektima.
  • Gatling: Moderni alat otvorenog koda zasnovan na Scala. Poznat po svojoj performansi i izražajnom jeziku za kreiranje test scenarija (DSL).
    // Primer Gatling scenarija (Simulation.scala)
    import io.gatling.core.Predef._
    import io.gatling.http.Predef._
    import scala.concurrent.duration._
    
    class BasicSimulation extends Simulation {
    
      val httpProtocol = http
        .baseUrl("https://example.com")
        .acceptHeader("application/json")
    
      val scn = scenario("Korisnici")
        .exec(http("Preuzimanje korisnika").get("/api/users"))
    
      setUp(scn.inject(rampUsers(100) during (5.minutes))).protocols(httpProtocol)
    }