Sobes.tech
Middle

Care sunt aspectele principale ale testării performanței și ce instrumente ați folosit pentru implementare?

sobes.tech AI

Răspuns de la AI

Testarea performanței include:

  • Testarea încărcării (Load Testing): Evaluarea comportamentului sistemului sub încărcare așteptată. Determină limita maximă de utilizatori sau tranzacții pe care sistemul le poate suporta înainte ca performanța să înceapă să se degradeze.
  • Testarea de stres (Stress Testing): Testarea sistemului sub încărcări extreme care depășesc așteptările, pentru a determina punctul de eșec și comportamentul în astfel de condiții. Scopul este de a asigura că sistemul se recuperează după o supraîncărcare.
  • Testarea rezistenței (Endurance/Soak Testing): Testarea sistemului pe o perioadă lungă de timp cu o încărcare semnificativă pentru a identifica scurgeri de memorie sau alte probleme care apar în timp.
  • Testarea vârfului (Spike Testing): Creșterea bruscă a încărcării sistemului pentru a observa reacția sistemului la creșteri rapide de activitate ale utilizatorilor.
  • Testarea volumului (Volume Testing): Testarea cu volume mari de date în baza de date sau sistemul de fișiere pentru a evalua performanța sistemului cu cantități mari de informații.
  • Testarea scalabilității (Scalability Testing): Determinarea capacității sistemului de a face față creșterii încărcării prin adăugarea de resurse hardware sau optimizarea software-ului.

Pentru realizarea testelor de performanță se folosesc următoarele instrumente:

  • Apache JMeter: Instrument Java open source care suportă diverse protocoale (HTTP, HTTPS, FTP, JDBC etc.). Permite crearea de scenarii de testare complexe, incluzând parametrizare, corelație, logare și generare de rapoarte detaliate.
    // Exemplu de solicitare HTTP în JMeter (fișier JMX)
    <HTTPSamplerProxy guiclass="HttpTestSampleGui"
                       testclass="HTTPSamplerProxy"
                       testname="Exemplu"
                       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): Instrument comercial recunoscut pentru capacitățile sale extinse de suport pentru protocoale și analiză a rezultatelor. Este frecvent utilizat în proiecte corporative mari.
  • Gatling: Instrument modern open-source bazat pe Scala. Este cunoscut pentru performanța sa și limbajul expresiv pentru crearea scenariilor de test.
    // Exemplu de scenariu Gatling (Simulation.scala)
    import io.gatling.core.Predef._
    import io.gatling.http.Predef._
    
    class BasicSimulation extends Simulation {
    
      val httpProtocol = http
        .baseUrl("https://example.com")
        .inferHtmlResources()
        .proxy(Proxy("localhost", 8888).httpsPort(443))
    
      val scn = scenario("Utilizatori")
        .exec(http("Obține utilizatori").get("/api/users"))
    
      setUp(scn.inject(rampUsers(100) during (5 minutes))).protocols(httpProtocol)
    }