Header Ads Widget

Ticker

6/recent/ticker-posts

Prueba de carga de tu API con Locust

 

Las pruebas de API son uno de los aspectos más críticos del desarrollo de API. Puede crear una API que funcione perfectamente bien y devuelva la respuesta esperada. Pero, ¿ha probado lo que sucederá cuando miles de usuarios accedan simultáneamente a su API? ¿Funcionará como se esperaba o volverá Error 500Bueno, eso depende de lo lejos que haya llegado para cargar su API.

Todas las preguntas anteriores se pueden responder mediante un tipo de prueba de rendimiento llamada prueba de carga. La prueba de carga es una técnica que mide el rendimiento de una API en diversas condiciones de carga. Es un proceso que ejerce mucha presión sobre un punto final de API para verificar si devuelve el resultado requerido o no. Por lo tanto, las pruebas de carga ayudan a identificar la capacidad máxima para sus puntos finales y revelan cuellos de botella. Puede ayudar a los desarrolladores de API a obtener una idea cualitativa de qué tan bien funciona la API en escenarios del mundo real.

Hay muchas herramientas disponibles para ayudarlo a cargar API de prueba, como Jmeter, Locust, LoadNinja y Webload. En este artículo, aprenderemos cómo realizar pruebas de carga con Locust , una herramienta de prueba de carga de código abierto. Pero antes de eso, entendamos qué es Locust.

Locust

Locust: una herramienta de prueba de carga de usuario escalable escrita en Python. Más información en Locust.io .

Locust es un módulo de prueba de carga para Python que es escalable y programable. Te permite crear scripts de Python que definen el comportamiento de los usuarios, lo que lo hace muy amigable para los desarrolladores. Puede realizar fácilmente comportamientos condicionales como bucles o cálculos. Ejecuta a cada usuario en una co-rutina separada que se llama greenlet. Esta co-rutina le permite escribir códigos de bloqueo de Python en lugar de funciones de devolución de llamada.

Características de la langosta:

  • Apto para desarrolladores
  • Distribuido y escalable
  • Viene con una interfaz de usuario basada en web
  • Puede utilizar cualquier sistema basado en protocolos

Ahora intentemos probar una API usando Locust. Para hacerlo, primero creemos una API mínima:

Requisitos previos:

  • Pitón
  • Virtualenv
  • Matraz
  • Langosta

Paso 1: instalación del matraz y configuración del servidor

Creemos un directorio o carpeta para su proyecto. Estamos usando "locust-test" como el nombre de la carpeta, pero puede elegir cualquier nombre para su proyecto.

mkdir locust-test

Luego,

cd locust-test

Ahora cree un entorno virtual para su proyecto para que las dependencias no estropeen la carpeta del paquete global.

Ejecute el siguiente comando ahora:

virtualenv .

Y entonces,

source bin/activate

Explicación del código:

Lo que estamos haciendo aquí es decirle al módulo que la carpeta actual se puede usar para el entorno virtual y luego activar el entorno virtual en el segundo paso.

Ahora, una vez que haya activado el entorno virtual, instalemos el paquete del matraz en ese entorno.

Ahora ejecute el siguiente comando:

python3 -m pip install Flask

Hasta ahora, hemos creado nuestra carpeta de proyecto, instalado y creado un entorno virtual para nuestro proyecto e instalado el matraz en el entorno. Vayamos hacia el Paso 2.

Paso 2: escribamos un código

Ahora cree un archivo app.pyy pegue el siguiente código:

from flask import Flask
app = Flask(__name__) @app.route('/') def hello_world(): return 'This is my first API call!'

Explicación del código:

Primero, estamos importando el flaskmódulo a nuestra aplicación y luego definiendo la ruta API. Se @utiliza para definir la ruta de la API. Estamos pasando /, lo que significa que esta es nuestra ruta base.

Ahora ejecute la API usando el siguiente comando:

flask run
Nota : Mantenga el comando anterior en ejecución.

Paso 3: creación de una prueba de langosta

Ahora abra otra pestaña en su terminal en la misma carpeta, es decir locust-test, y pegue el siguiente comando para instalar Locust:

pip3 install Locust

Una vez que Locust esté instalado, cree un archivo locustfile.pyAsegúrese de que el nombre del archivo sea idéntico y pegue el siguiente código:

from locust import HttpUser, task, between

class QuickstartUser(HttpUser):
    wait_time = between(5, 9)
    @task
    def getAPI(self):
        self.client.get("/")

Explicación del código:

Este código está importando todos los módulos requeridos de Locust como HttpUser, que se usa para hacer llamadas HTTP, tareas para crear usuarios y entre para establecer un intervalo.

Después de eso, haremos una GETsolicitud.

Una vez hecho esto, guarde el archivo y ejecute el siguiente comando:

locust --host=http://localhost:5000

Estamos pasando la URL de nuestro punto final de API.

Verá algo como esto en la terminal:

Starting web interface at http://0.0.0.0:8089 (accepting connections from all network interfaces)

Esto significa que el servidor Locust ahora se está ejecutando y está listo para probar la API.

Paso 4: probar la API

Ahora vaya a la URL en su navegador y debería ver la siguiente pantalla:http://0.0.0.0:8089

Ahora, en el primer cuadro de entrada, complete la cantidad de usuarios que desea cargar en la API. En el segundo cuadro, ingrese el intervalo entre cada llamada. Para este ejemplo, ingresé: 50 usuarios y 2 segundos.

Una vez que presione Start Swarming, comenzará la prueba y debería poder ver la siguiente pantalla:

Para verificar que su API se esté consumiendo, puede verificar la primera terminal donde ejecutó el comando flask runEn mi terminal, mostró algo como esto:

Ahora, en el navegador donde se ejecuta la interfaz de usuario de Locust, haga clic en la pestaña Gráfico. Aquí, debería poder ver cuántas solicitudes se realizan por segundo, la cantidad de usuarios, fallas y otros datos.

Ahora, en el Monitor de actividad (para Mac), debería ver muchas instancias de Python con varios subprocesos. Esto significa que Python usa hilos para crear varios usuarios:

Eso es. Está listo para probar su próximo conjunto de API con Locust.

Ultimas palabras

Las pruebas de carga pueden anticipar el uso para ayudar a mantener la estabilidad de la aplicación. Por ejemplo, considere una aplicación web para una universidad con un punto final de API /resultsque devuelve resultados de exámenes. Antes del examen, los estudiantes no usarán la aplicación web porque nadie revisa sus calificaciones antes del examen. Pero, después del examen, los saltos de tráfico repentinos pueden hacer que la aplicación web se bloquee cuando todos verifican sus puntajes a la vez.

¿Lo ves? La prueba de carga de una aplicación web durante el desarrollo puede ayudar a evitar bloqueos y hacer que su aplicación sea más sólida.

En este artículo, presentamos cómo usar Locust, una poderosa herramienta de prueba de carga. Crea múltiples subprocesos para que cada subproceso pueda actuar como un solo usuario. Para ir un paso más allá, también puede agregar condiciones en las que necesite un encabezado de autenticación. Más allá de las pruebas de API, Locust también se puede utilizar para probar el código Python normal.

Publicar un comentario

0 Comentarios