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