Sobes.tech
Middle

Quais são os principais aspetos do teste de desempenho e que ferramentas utilizou para a sua implementação?

sobes.tech IA

Resposta da IA

A avaliação de desempenho inclui:

  • Teste de carga (Load Testing): Avaliação do comportamento do sistema sob carga esperada. Determina o limite máximo de utilizadores ou transações que o sistema pode suportar antes de a performance começar a degradar.
  • Teste de stress (Stress Testing): Teste do sistema sob cargas extremas que excedem as expectativas, para determinar o ponto de falha e o comportamento nessas condições. O objetivo é garantir que o sistema se recupere após uma sobrecarga.
  • Teste de resistência (Endurance/Soak Testing): Teste do sistema durante um período prolongado com uma carga significativa para detectar fugas de memória ou outros problemas que surgem com o tempo.
  • Teste de picos (Spike Testing): Aumento súbito de carga no sistema para detectar a reação a picos de atividade inesperados.
  • Teste de volume (Volume Testing): Teste com grandes volumes de dados na base de dados ou sistema de ficheiros para avaliar o desempenho com grandes quantidades de informação.
  • Teste de escalabilidade (Scalability Testing): Avaliação da capacidade do sistema para lidar com aumentos na carga através da adição de recursos de hardware ou otimização do software.

Para realizar testes de desempenho, utilizam-se as seguintes ferramentas:

  • Apache JMeter: Ferramenta Java de código aberto que suporta diversos protocolos (HTTP, HTTPS, FTP, JDBC, etc.). Permite criar cenários de teste complexos, incluindo parametrização, correlação, registo e geração de relatórios detalhados.
    // Exemplo de requisição HTTP no JMeter (arquivo JMX)
    <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): Ferramenta comercial, reconhecida por suas amplas capacidades de suporte a protocolos e análise de resultados. Frequentemente usada em grandes projetos corporativos.
  • Gatling: Ferramenta moderna de código aberto baseada em Scala. Conhecida por seu desempenho e linguagem expressiva para criar cenários de teste.
    // Exemplo de cenário 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")
        .inferHtmlResources()
        .proxy(Proxy("localhost", 8888).httpsPort(443))
    
      val scn = scenario("Utilizadores")
        .exec(http("Obter utilizadores").get("/api/users"))
    
      setUp(scn.inject(rampUsers(100) during (5 minutes))).protocols(httpProtocol)
    }