Les proves de rendiment són un aspecte crucial del procés de proves de programari, especialment quan es tracta d'aplicacions que han de gestionar grans volums de dades o un alt nombre d'usuaris simultanis. Aquest tipus de proves s'enfoca en determinar la velocitat, escalabilitat i estabilitat d'un sistema sota una càrrega determinada.

Objectius de les Proves de Rendiment

  1. Mesurar la Velocitat: Determinar el temps de resposta del sistema sota diferents condicions de càrrega.
  2. Avaluar l'Escalabilitat: Com el sistema gestiona l'augment de càrrega i si pot escalar adequadament.
  3. Comprovar l'Estabilitat: Assegurar que el sistema es manté estable sota càrregues prolongades.
  4. Identificar Cols d'Ampolla: Detectar i solucionar els components que limiten el rendiment del sistema.

Tipus de Proves de Rendiment

  1. Proves de Càrrega:

    • Objectiu: Avaluar el rendiment del sistema sota una càrrega esperada.
    • Exemple: Simular 1000 usuaris accedint al sistema simultàniament.
  2. Proves d'Estrès:

    • Objectiu: Determinar els límits del sistema portant-lo més enllà de la seva capacitat màxima.
    • Exemple: Incrementar progressivament la càrrega fins que el sistema falli.
  3. Proves de Resistència:

    • Objectiu: Comprovar el rendiment del sistema sota càrrega durant un període prolongat.
    • Exemple: Executar el sistema sota càrrega constant durant 24 hores.
  4. Proves de Pic:

    • Objectiu: Avaluar el rendiment del sistema durant pics de càrrega.
    • Exemple: Simular un augment sobtat d'usuaris durant un esdeveniment especial.
  5. Proves de Configuració:

    • Objectiu: Avaluar el rendiment del sistema amb diferents configuracions de maquinari i programari.
    • Exemple: Provar el sistema amb diferents versions de bases de dades.

Eines per a Proves de Rendiment

  • Apache JMeter: Una eina de codi obert per a proves de càrrega i rendiment.
  • LoadRunner: Una eina comercial que permet simular milers d'usuaris.
  • Gatling: Una eina de codi obert per a proves de càrrega amb un enfocament en l'automatització.
  • BlazeMeter: Una plataforma basada en el núvol per a proves de càrrega i rendiment.

Exemple Pràctic amb Apache JMeter

A continuació, es mostra un exemple bàsic de com configurar una prova de càrrega amb Apache JMeter:

<testPlan>
  <ThreadGroup>
    <numThreads>100</numThreads> <!-- Nombre d'usuaris virtuals -->
    <rampTime>60</rampTime> <!-- Temps per escalar fins al nombre total d'usuaris -->
    <loopCount>10</loopCount> <!-- Nombre de vegades que cada usuari executarà el test -->
    <httpSampler>
      <domain>www.exemple.com</domain>
      <path>/api/test</path>
      <method>GET</method>
    </httpSampler>
  </ThreadGroup>
</testPlan>

Explicació del Codi

  • numThreads: Defineix el nombre d'usuaris virtuals que simularan l'accés al sistema.
  • rampTime: Temps en segons per escalar fins al nombre total d'usuaris.
  • loopCount: Nombre de vegades que cada usuari executarà el test.
  • httpSampler: Configura la petició HTTP que cada usuari enviarà al servidor.

Exercici Pràctic

Objectiu: Configurar una prova de càrrega utilitzant Apache JMeter per simular 500 usuaris accedint a una pàgina web durant 5 minuts.

  1. Instal·la Apache JMeter.
  2. Crea un nou pla de proves.
  3. Configura un grup de fils (Thread Group) amb 500 usuaris i un temps d'escalat de 300 segons.
  4. Afegeix un mostrejador HTTP (HTTP Sampler) per accedir a la pàgina web desitjada.
  5. Executa la prova i analitza els resultats.

Solució

<testPlan>
  <ThreadGroup>
    <numThreads>500</numThreads>
    <rampTime>300</rampTime>
    <loopCount>1</loopCount>
    <httpSampler>
      <domain>www.exemple.com</domain>
      <path>/home</path>
      <method>GET</method>
    </httpSampler>
  </ThreadGroup>
</testPlan>

Conclusió

Les proves de rendiment són essencials per garantir que un sistema pugui gestionar la càrrega esperada i mantenir un rendiment òptim. Mitjançant l'ús d'eines com Apache JMeter, els provadors poden simular diferents escenaris de càrrega i identificar àrees de millora. Aquestes proves ajuden a assegurar que el sistema sigui robust, escalable i preparat per a l'ús real.

© Copyright 2024. Tots els drets reservats