Sobes.tech
Junior

Erzählen Sie mir von Lasttests.

sobes.tech KI

Antwort von AI

Lasttests sind eine Art von Tests, die darauf abzielen, die Leistung, Stabilität und Skalierbarkeit einer Anwendung (Systems) unter verschiedenen Lasten zu bestimmen.

Aufgaben der Lasttests:

  • Bestimmung der maximalen Belastung, die das System aushält.
  • Identifikation von Engpässen.
  • Bewertung der Reaktionszeit des Systems bei gegebener Last.
  • Überprüfung der langfristigen Stabilität des Systems unter Last.
  • Überprüfung der Skalierbarkeit des Systems.

Arten von Lasttests:

  • Lasttest (Load Testing): Überprüfung des Systemverhaltens bei erwarteter (Normal-)Last.
  • Stresstest (Stress Testing): Überprüfung des Systems bei einer die Norm übersteigenden Last bis zum Systemausfall. Ziel ist es, die Belastungsgrenze zu bestimmen.
  • Ausdauer-/Sättigungstest (Endurance/Soak Testing): Überprüfung der Stabilität des Systems bei mittlerer oder hoher Dauerbelastung, Erkennung von Speicherlecks und Leistungsverschlechterung im Laufe der Zeit.
  • Spike-Testing: Überprüfung des Systemverhaltens bei plötzlicher, hoher Laststeigerung.
  • Skalierbarkeitstest (Scalability Testing): Bewertung der Fähigkeit des Systems, wachsende Lasten durch horizontale oder vertikale Ressourcen skalierung zu bewältigen.
  • Volumentest (Volume Testing): Überprüfung des Systemverhaltens bei zunehmendem Datenvolumen in Datenbanken oder anderen Speichern.

Phasen der Lasttestdurchführung:

  1. Zieldefinition: Klare Definition von Leistungsmetriken (Antwortzeit, Durchsatz, Fehleranzahl) und Erfolgskriterien.
  2. Planung und Szenarienentwicklung: Analyse der Nutzer-Szenarien, Festlegung des Lastprofils (Anzahl virtueller Nutzer, Anfrageintensität).
  3. Entwicklung der Testscripte: Erstellung von Scripts zur Simulation von Nutzeraktionen mit Lasttest-Tools.
  4. Vorbereitung der Testumgebung: Einrichtung einer Testumgebung, die die Produktionsumgebung simuliert.
  5. Durchführung der Tests: Ausführung der Tests mit unterschiedlichen Lasten.
  6. Überwachung und Datensammlung: Sammlung von Leistungsmetriken des Systems, Servern, Datenbanken.
  7. Auswertung und Berichterstattung: Vergleich der Ergebnisse mit Zielmetriken, Problemerkennung, Berichterstellung.

Tools für Lasttests:

  • JMeter
  • LoadRunner
  • Gatling
  • k6
  • Locust

Beispiel eines einfachen JMeter-Skripts (HTTP-Anfrage):

<?xml version="1.0" encoding="UTF-8"?>
<jmeterTestPlan version="1.2" properties="5.0" jmeter="5.6.2">
  <hashTree>
    <TestPlan guiclass="TestPlanGui" testclass="TestPlan" testname="Beispiel-Lasttest">
      <hashTree>
        <ThreadGroup guiclass="ThreadGroupGui" testclass="ThreadGroup" testname="Thread-Gruppe">
          <intProp name="ThreadGroup.num_threads">100</intProp>
          <intProp name="ThreadGroup.ramp_time">10</intProp>
          <longProp name="ThreadGroup.duration">60</longProp>
          <boolProp name="ThreadGroup.scheduler">true</boolProp>
          <hashTree>
            <HTTPSamplerProxy guiclass="HttpTestSampleGui" testclass="HTTPSamplerProxy" testname="HTTP-Request Beispiel">
              <stringProp name="HTTPSampler.domain">example.com</stringProp>
              <stringProp name="HTTPSampler.path">/</stringProp>
              <stringProp name="HTTPSampler.method">GET</stringProp>
              <boolProp name="HTTPSampler.follow_redirects">true</boolProp>
              <boolProp name="HTTPSampler.auto_redirects">false</boolProp>
              <boolProp name="HTTPSampler.use_keepalive">true</boolProp>
              <boolProp name="HTTPSampler.DO_MULTIPART_POST">false</boolProp>
              <boolProp name="HTTPSampler.BROWSER_COMPATIBLE_MULTIPART">false</boolProp>
              <boolProp name="HTTPSampler.embedded_url_report">true</boolProp>
              <boolProp name="HTTPSampler.connect_timeout"></boolProp>
              <boolProp name="HTTPSampler.response_timeout"></boolProp>
              <stringProp name="HTTPSampler.protocol">https</stringProp>
              <stringProp name="HTTPSampler.contentEncoding"></stringProp>
              <stringProp name="HTTPSampler.comment"></stringProp>
              <stringProp name="HTTPSampler.port"></stringProp>
              <stringProp name="HTTPSampler.image_parser">true</stringProp>
              <stringProp name="HTTPSampler.concurrentDwn">Both</stringProp>
              <stringProp name="HTTPSampler.implementation">HttpClient4</stringProp>
              <stringProp name="HTTPSampler.implementation_status">OK</stringProp>
              <boolProp name="HTTPSampler.postBodyRaw">false</boolProp>
              <listProp name="HTTPSampler.HTTP_HEADERS"></listProp>
            </HTTPSamplerProxy>
            <hashTree/>
          </hashTree>
        </hashTree>
      </hashTree>
    </TestPlan>
  </hashTree>
</jmeterTestPlan>

Métricas coletadas durante os testes de carga:

  • Tempo de resposta
  • Capacidade de transferência
  • Número de erros por segundo
  • Número de requisições por segundo
  • Utilização da CPU
  • Uso de memória
  • Atividade do disco rígido
  • Atividade de rede
  • Métricas de banco de dados

Testes de carga ajudam a prevenir falhas do sistema em produção sob alta carga e a garantir um nível de qualidade aceitável para os usuários finais.