Sobes.tech
Middle

Aké sú hlavné aspekty testovania výkonu a aké nástroje ste použili na jeho realizáciu?

sobes.tech AI

Odpoveď od AI

Testovanie výkonu zahŕňa:

  • Zaťažovací test (Load Testing): Hodnotenie správania systému pri očakávanom zaťažení. Určuje maximálny počet používateľov alebo transakcií, ktoré systém dokáže zvládnuť, skôr než sa výkon začne zhoršovať.
  • Stresové testovanie (Stress Testing): Testovanie systému pri extrémnych zaťaženiach, ktoré presahujú očakávania, na určenie bodu zlyhania a správania systému za takýchto podmienok. Cieľ – zabezpečiť, že systém sa po preťažení obnoví.
  • Test odolnosti (Endurance/Soak Testing): Testovanie systému počas dlhého časového obdobia pri značnom zaťažení, na odhalenie únikov pamäte alebo iných problémov, ktoré sa objavujú časom.
  • Spike testing (Test špičkovej záťaže): Náhla zvýšenie zaťaženia systému na overenie reakcie systému na náhle výkyvy aktivity používateľov.
  • Test objemu (Volume Testing): Testovanie s veľkým objemom dát v databáze alebo súborovom systéme na hodnotenie výkonu systému pri práci s veľkým množstvom informácií.
  • Test škálovateľnosti (Scalability Testing): Určenie schopnosti systému zvládnuť zvýšenie zaťaženia pridaním hardvérových zdrojov alebo optimalizáciou softvéru.

Na realizáciu testov výkonu boli použité nasledovné nástroje:

  • Apache JMeter: Viacúčelový open-source nástroj v jazyku Java, podporujúci rôzne protokoly (HTTP, HTTPS, FTP, JDBC a pod.). Umožňuje vytváranie zložitých testovacích scenárov, vrátane parametrizácie, korelácie, logovania a generovania podrobných správ.
    // Príklad HTTP požiadavky v JMeteri (JMX súbor)
    <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): Komerčný nástroj, známy svojimi širokými možnosťami podpory protokolov a analýzy výsledkov. Často sa používa v veľkých korporátnych projektoch.
  • Gatling: Moderný open-source nástroj založený na Scala. Je známy svojou výkonnosťou a výstižným jazykom tvorby testovacích scenárov (DSL).
    // Príklad scenára Gatling (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("Používatelia")
        .exec(http("Získať používateľa").get("/api/users"))
    
      setUp(scn.inject(rampUsers(100) during (5.minutes))).protocols(httpProtocol)
    }