Sobes.tech
Middle

Millised on jõudlustestimise peamised aspektid ja milliseid tööriistu te kasutasite selle rakendamiseks?

sobes.tech AI

Vastus AI-lt

Jõudluse testimine hõlmab:

  • Koormustest (Load Testing): Süsteemi käitumise hindamine oodatud koormuse ajal. Määrab maksimaalse kasutajate või tehingute arvu, mida süsteem suudab taluda enne jõudluse halvenemist.
  • Stressitest (Stress Testing): Süsteemi testimine äärmuslikes koormustes, mis ületavad ootusi, et määrata rikkepunkt ja süsteemi käitumine sellistes tingimustes. Eesmärk on veenduda, et süsteem taastub ülekoormusest.
  • Kestvus/test (Endurance/Soak Testing): Süsteemi testimine pika aja jooksul märkimisväärse koormusega, et avastada mälulekkeid või muid probleeme, mis ilmnevad aja jooksul.
  • Tippkoormuse test (Spike Testing): Äkilise koormuse tõus süsteemis, et määrata selle reaktsioon ootamatutele kasutajate aktiivsuse hüpetel.
  • Andmemahtude test (Volume Testing): Testimine suure andmemahuga andmebaasis või failisüsteemis, et hinnata süsteemi jõudlust suure teabemahtude korral.
  • Skaleeritavuse test (Scalability Testing): Süsteemi võime toime tulla koormuse kasvuga, lisades riistvaralisi ressursse või optimeerides tarkvara.

Jõudluse testimise teostamiseks kasutati järgmisi tööriistu:

  • Apache JMeter: Mitmeotstarbeline Java tööriist avatud lähtekoodiga, mis toetab erinevaid protokolle (HTTP, HTTPS, FTP, JDBC ja teised). Võimaldab luua keerukaid teststsenaariume, mis hõlmavad parameetrite sisestust, korrelatsiooni, logimist ja üksikasjalike aruannete genereerimist.
    // HTTP-päringu näide JMeteris (JMX fail)
    <HTTPSamplerProxy guiclass="HttpTestSampleGui"
                       testclass="HTTPSamplerProxy"
                       testname="Sample"
                       enabled="true">
      <elementProp name="HeaderManager" elementType="HeaderManager" guiclass="HeaderPanel" testclass="HeaderManager" testname="HTTP Header Manager" enabled="true">
        <collectionProp name="HeaderManager.headers">
          <elementProp name="Content-Type" elementType="Header">
            <stringProp name="Header.name">Content-Type</stringProp>
            <stringProp name="Header.value">application/json</stringProp>
          </elementProp>
        </collectionProp>
      </elementProp>
      <url>https://example.com/api/users</url>
      <method>GET</method>
    </HTTPSamplerProxy>
    
  • LoadRunner (Micro Focus): Kommerts tööriist, tuntud oma laia protokollide toe ja tulemuste analüüsi poolest. Sageli kasutatakse suurtes ettevõtetes.
  • Gatling: Kaasaegne avatud lähtekoodiga tööriist, mis põhineb Scala-l. Tuntud oma jõudluse ja väljendusliku teststsenaariumikeele (DSL) poolest.
    // Gatlingi scenaristi näide (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")
        .inferHtmlResources
        .proxy(Proxy("localhost", 8888).httpsPort(443))
    
      val scn = scenario("Kasutajad")
        .exec(http("Hangi kasutajad").get("/api/users"))
    
      setUp(scn.inject(rampUsers(100).during(5.minutes))).protocols(httpProtocol)
    }