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