Sobes.tech
Middle

Jaké jsou hlavní aspekty testování výkonu a jaké nástroje jste použili k jeho realizaci?

sobes.tech AI

Odpověď od AI

Testování výkonu zahrnuje:

  • Zátěžové testování (Load Testing): Hodnocení chování systému při očekávané zátěži. Určuje maximální počet uživatelů nebo transakcí, které systém zvládne, než se začne snižovat výkon.
  • Stresové testování (Stress Testing): Testování systému při extrémních zátěžích přesahujících očekávané, za účelem určení bodu selhání a chování systému za těchto podmínek. Cíl – zajistit, že systém se po přetížení zotaví.
  • Odolnostní testování (Endurance/Soak Testing): Testování systému po delší dobu při značné zátěži za účelem odhalení úniků paměti nebo jiných problémů, které se objevují časem.
  • Spike testing (Testování špičkové zátěže): Náhlé zvýšení zátěže systému za účelem ověření reakce systému na náhlé výkyvy aktivity uživatelů.
  • Testování objemu (Volume Testing): Testování s velkým objemem dat v databázi nebo souborovém systému za účelem hodnocení výkonu systému při práci s velkým množstvím informací.
  • Testování škálovatelnosti (Scalability Testing): Určení schopnosti systému zvládnout zvýšení zátěže přidáním hardwarových zdrojů nebo optimalizací softwaru.

Pro realizaci testování výkonu byly použity následující nástroje:

  • Apache JMeter: Víceúčelový open-source nástroj v jazyce Java, podporující různé protokoly (HTTP, HTTPS, FTP, JDBC atd.). Umožňuje vytvářet složité testovací scénáře, včetně parametrizace, korelace, logování a generování podrobných zpráv.
    // Příklad HTTP požadavku v JMeteru (JMX soubor)
    <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ámý svými širokými možnostmi podpory protokolů a analýzy výsledků. Často se používá ve velkých podnikových projektech.
  • Gatling: Moderní open-source nástroj založený na jazyce Scala. Je známý svou výkonností a výstižným jazykem tvorby testovacích scénářů (DSL).
    // Příklad scénáře 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("Uživatelé")
        .exec(http("Získat uživatele").get("/api/users"))
    
      setUp(scn.inject(rampUsers(100) during (5.minutes))).protocols(httpProtocol)
    }