Càlcul de nombre d'usuaris concurrents a simular en unes Proves de Rendiment

No podem definir les condicions de concurrència d’usuaris en unes proves de rendiment partint únicament del nombre d’usuaris potencials que poden accedir a l’aplicació.

Habitualment aquest és el nombre plantejat de forma equivocada per molts equips. A continuació es descriu la guia de com calcular-ho.

Cal definir el volum de transaccions desitjades, i vincular-ho al període horari de més peticions (pic horari). A partir d’aquesta informació es pot obtenir el nombre d’usuaris concurrents que necessitem simular, usant la següent fórmula:

Fórmula de càlcul d'usuaris concurrents a provar

És a dir, quantes vegades es farà la transacció durant el període establert de màxima càrrega (habitualment 1 o 2 hores), i quin temps es preveu que es tardarà en fer-se. Quan parlem de transacció ens referim a diferents passos amb pantalles.

Exemple

Partint de l’exemple utilitzat en la descripció dels temps de resposta, anirem pas a pas en el càlcul del nombre d’usuaris virtuals que s’han de simular per a cada navegació:

  • Definir el període d’interès amb major pic (PER)

    Durada en hores i minuts en el que el sistema tindrà una major càrrega. Habitualment, en aplicacions de l’administració pública els pics es concentren a primera hora del dia, durant 1 hora o 1 hora i mitja.

    En l’exemple existeix un període molt alt de càrrega durant 2 hores de preinscripció, per tant PER = 2h.

  • Calcular l’objectiu de transaccions (OTR)

    Calcular el nombre de transaccions desitjades o esperades que s’han de poder executar en el període d’interès.

    • 2.500 preinscripcions en 2 hores de la convocatòria A (OTR_A)
    • 1.750 preinscripcions en 2 hores de la convocatòria B (OTR_B)
  • Calcular el temps de cada transacció (TTR)

    El temps total d’una transacció de negoci es pot calcular partint de valors reals (amb una eina d’anàlisi) o bé estimant-los. En el cas d’exemple teníem que el temps de la transacció A era de 180 segons.

    Podem usar en casos que no els coneguem o no es vulgui estimar, les dades obtingudes en l’execució d’una prova de rendiment amb 1 sol usuari i executar-la durant un temps mínim (1 hora recomanada).

    Cada transacció es podrà executar durant el període d’interès(PER) un total de: PER / TTR.

    Per exemple, la transacció A, podrà fer 40 iteracions de prova durant les 2 hores (3.600 segons / 180 segons TTRA).

    calcul_usuaris_concurrents_2

  • Calcular el nombre d’usuaris virtuals o concurrents (VU)

    Per últim, ja podem calcular el nombre d’usuaris virtuals necessaris a simular segons les variables anteriors: període de la prova, nombre de transaccions que volem aconseguir i del temps total d’una execució de la transacció.

    VU = (TTR * OTR) / PER (tot en segons)

    VU_A = (TTR_A * OTR_A) / PER = (180 * 2500)/ (2*3600) = 63 usuaris virtuals

    VU_B = (TTR_B * OTR_B) / PER = (130 * 1750)/ (2*3600) = 32 usuaris virtuals

    I el nombre total d’usuaris virtuals a simular seria la suma dels calculats per cada transacció: 63 + 32 = 95

Podem simular les proves amb menys usuaris virtuals però amb les mateixes condicions?

Si no tenim especial interès en veure el comportament real, però en estressar el sistema i veure els temps de resposta de les interaccions podem reduir els think times a zero.

En el cas exemple tindríem:

TTR_A : 3 + 1 + 7 + 1 + 5 + 1 + 30 (on cada 1 és el temps del think-time entre pantalles) = 48 segons TTR_B : 3 + 1 + 7 + 1 + 10 + 1 + 20 = 53 segons

Amb aquesta compactació necessitem:

VU_A = (TTR_A * OTR_A) / PER = (48* 2500)/ (2*3600) = 17 usuaris virtuals

VU_B = (TTR_B * OTR_B) / PER = (53 * 1750)/ (2*3600) = 13 usuaris virtuals

Hem passat de necessitar 95 usuaris virtuals concurrents a necessitar únicament 30 usuaris.