code

Locust – Pruebas de carga modo “rookie”

Continuando con el tema de pruebas de carga, acá esta un post previo sobre siege, ahora comentaré el uso de Locust la cual es una herramienta desarrollada en Python.

Locust funciona de manera muy sencilla, empecemos con la instalación, para hacerlo únicamente hay que utilizar pip:

~/code/locustio$ pip install locustio

Ya instalado tenemos que realizar un pequeño script donde se detalla vía métodos post y get las urls a probar, en el caso del script abajo estamos definiendo tres, la primera es para enviar vía el método POST un usuario y contraseña a una url de login, la segunda url definida se utilizara para acceder la raíz del sitio que vamos a evaluar utilizando el método GET y la tercera es de nuevo la url de login via GET; al final se definen los tiempos de espera. Este script una vez almacenado nos servirá para invocar a Locust.

from locust import HttpLocust, TaskSet, task

class WebsiteTasks(TaskSet):
    def on_start(self):
        self.client.post("/login", {
            "email": "usuario",
            "password": "password"
        })

    @task
    def index(self):
        self.client.get("/")

    @task
    def about(self):
        self.client.get("/login")

class WebsiteUser(HttpLocust):
    task_set = WebsiteTasks
    min_wait = 5000
    max_wait = 15000

Para ejecutar Locust utilizando el script (asumamos que el script se llama “locustfile-post.py”) lo hacemos de la siguiente manera:

~/code/locustio$ locust -f locustfile-post.py --host=http://10.0.0.1/myapp
[2019-07-28 00:33:21,217] localhost/INFO/locust.main: Starting web monitor at *:8089
[2019-07-28 00:33:21,217] localhost/INFO/locust.main: Starting Locust 0.11.0

Como pueden ver nos indica que en el puerto 8089 se ha levantado la interfaz del dashboard que nos permitirá visualizar y configurar los usuarios a simular, la siguiente captura de pantalla muestra dicha interfaz web que nos solicita número de usuarios a simular y la tasa en la que irán incrementándose los usuarios por segundo:

Para este ejemplo hemos seleccionado 100 usuarios en total a una tasa de incremento de 1 por segundo, una vez ingresado esta información el dashboard lucirá como la captura de pantalla debajo:

Como se puede apreciar en la tabla aparecen las urls que se definieron en el script con las solicitudes hechas hasta el momento, fallas, tiempos de respuesta; asimismo en la parte superior derecha nos indica el host, los usuarios que han sido simulados hasta el momento, solicitudes por segundo y la tasa de fallas.

Locust es una herramienta sencilla de instalar, configurar y versátil en cuanto a la información que puede uno obtener de la misma. Se puede obtener más información en el sitio de documentación de Locust.

gg