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) }