En el post anterior vimos cómo utilizar Locust para simular usuarios consultando nuestra API.
Pero si queremos probar un POST, aparece un problema: ¿Qué datos enviamos?
Podríamos escribir siempre el mismo producto:
{
"name": "Notebook",
"price": 1000,
"stock": 10
}
Pero en una prueba de carga es mucho más interesante generar datos diferentes.
Python ya nos proporciona herramientas para hacerlo:
import random
import string
Podemos crear una función para generar nombres:
def random_name():
return ''.join(
random.choices(string.ascii_letters, k=10)
)
Y utilizarla en nuestro POST:
@task
def create_product(self):
product = {
"name": random_name(),
"price": random.randint(10, 1000),
"stock": random.randint(1, 100)
}
self.client.post(
"/products",
json=product
)
Cada vez que Locust ejecute la tarea se generará un producto diferente.
Por ejemplo:
{
"name": "aKxPqLmZtR",
"price": 742,
"stock": 34
}
Y en la siguiente ejecución:
{
"name": "QrTnYwBcLp",
"price": 156,
"stock": 82
}
De esta manera podemos evitar que nuestro test dependa siempre de los mismos datos.
Porque una prueba de carga debería intentar parecerse, dentro de lo posible, a lo que ocurre en producción.
En lugar de:
POST → siempre el mismo producto
POST → siempre el mismo producto
POST → siempre el mismo producto
podemos tener:
POST → producto A
POST → producto B
POST → producto C
POST → producto D
Y ya tenemos un escenario de prueba un poco más realista.

No hay comentarios.:
Publicar un comentario