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