🌟 The must-have tool for developers in the AI-Gen era 🌟
Keploy es una herramienta de prueba de backend centrada en el desarrollador. Realiza pruebas de backend con mocks incorporados, más rápido que las pruebas unitarias, a partir del tráfico del usuario, lo que lo hace fácil de usar, potente y extensible. 🛠
¿Listo para la magia? Aquí están las características principales de Keploy:
-
♻️ Cobertura de prueba combinada: Fusiona tus pruebas de Keploy con tus bibliotecas de pruebas favoritas (junit, go-test, py-test, jest) para ver una cobertura de prueba combinada.
-
🤖 Instrumentación EBPF: Keploy utiliza EBPF como un ingrediente secreto para hacer que la integración sea sin código, independiente del lenguaje y muy ligera.
-
🌐 Integración CI/CD: Ejecuta pruebas con mocks donde quieras, ya sea localmente en la CLI, en tu canal de integración continua o incluso en un clúster de Kubernetes. ¡Es prueba donde la necesitas!
-
🎭 Mocks multipropósito: Úsalos en pruebas existentes, como pruebas de servidor o simplemente para impresionar a tus amigos.
-
📽️ Grabación y reproducción de flujos complejos: Keploy puede grabar y reproducir flujos de API complejos y distribuidos como mocks y stubs. Es como tener una máquina del tiempo para tus pruebas, ¡ahorrándote mucho tiempo!
🐰 Dato curioso: ¡Keploy se utiliza a sí mismo para realizar pruebas! Echa un vistazo a nuestra elegante insignia de cobertura:
Desde el gopher de Go 🐹 hasta la serpiente de Python 🐍, ofrecemos soporte para:
Nuestro mágico 🧙♂️ proxy de Keploy captura y reproduce TODAS las interacciones de red de tu aplicación (operaciones CRUD, incluyendo APIs no idempotentes).
Realiza un viaje a ¿Cómo funciona Keploy? para descubrir los trucos detrás del telón.
Conviértete en un profesional de Keploy con nuestra Documentación.
Keploy se puede utilizar en Linux nativamente y a través de WSL en Windows.
curl --silent --location "https://github.com/keploy/keploy/releases/latest/download/keploy_linux_amd64.tar.gz" | tar xz -C /tmp
sudo mkdir -p /usr/local/bin && sudo mv /tmp/keploy /usr/local/bin && keploy
<details>
<summary> <strong> Arquitectura ARM </strong> </summary>
curl --silent --location "https://github.com/keploy/keploy/releases/latest/download/keploy_linux_arm64.tar.gz" | tar xz -C /tmp
sudo mkdir-p /usr/local/bin && sudo mv /tmp/keploy /usr/local/bin && keploy
</details>
### Captura de casos de prueba
Para iniciar la grabación de llamadas a la API, ejecuta este comando en tu terminal donde normalmente ejecutas tu aplicación. Si necesitas configurar variables de entorno, hazlo de la manera habitual:
```zsh
sudo -E env PATH=$PATH keploy record -c "CMD_PARA_EJECUTAR_LA_APP"
Por ejemplo, si estás utilizando un programa sencillo de Golang, el comando se vería así:
sudo -E env PATH=$PATH keploy record -c "CMD_PARA_EJECUTAR_LA_APP"
Para ejecutar los casos de prueba y generar un informe de cobertura de pruebas, utiliza este comando en la terminal donde normalmente ejecutas tu aplicación. Si necesitas configurar variables de entorno, hazlo de la manera habitual:
sudo -E env PATH=$PATH keploy test -c "CMD_PARA_EJECUTAR_LA_APP" --delay 10
Por ejemplo, si estás utilizando un framework de Golang, el comando sería:
sudo -E env PATH=$PATH keploy test -c "go run main.go" --delay 10
Keploy se puede utilizar en Linux y Windows a través de Docker.
️ Nota: MacOS necesitan instalar Colima. Usuarios de Windows necesitan installar WSL.
Creemos un alias para Keploy:
alias keploy='sudo docker run --pull always --name keploy-v2 -p 16789:16789 --privileged --pid=host -it -v "$(pwd)":/files -v /sys/fs/cgroup:/sys/fs/cgroup -v /sys/kernel/debug:/sys/kernel/debug -v /sys/fs/bpf:/sys/fs/bpf -v /var/run/docker.sock:/var/run/docker.sock --rm ghcr.io/keploy/keploy'
Aquí tienes algunos puntos a considerar antes de la grabación:
- Si estás ejecutando mediante docker-compose, asegúrate de incluir el
<NOMBRE_DEL_CONTENEDOR>
en el servicio de tu aplicación en el archivo docker-compose.yaml como se muestra aquí. - Debes ejecutar los contenedores en una red, si no es así, asegúrate de que todos tus contenedores estén en la misma red con la propiedad externa activada - como se muestra aquí. Reemplaza el nombre de la red (bandera
--network
) por tu red personalizada si la cambiaste anteriormente, como la red en el ejemplo dado. Docker_CMD_to_run_user_container
se refiere al comando de Docker para iniciar la aplicación.
Utiliza el alias de keploy que creamos para capturar casos de prueba. Ejecuta el siguiente comando dentro del directorio raíz de tu aplicación.
keploy record -c "Docker_CMD_to_run_user_container --network <network_name>" --containerName "<container_name>"
Realiza llamadas API utilizando herramientas como Hoppscotch, Postman o comandos cURL.
Keploy capturará las llamadas API que hayas realizado, generando suites de pruebas que comprenden casos de prueba (KTests) y simulaciones de datos (KMocks) en formato YAML
.
Ahora, utiliza el alias keployV2 que creamos para ejecutar los casos de prueba. Sigue estos pasos en el directorio raíz de tu aplicación.
Cuando utilices docker-compose para iniciar la aplicación, es importante asegurarse de que el parámetro --containerName
coincida con el nombre del contenedor en tu archivo docker-compose.yaml
.
keploy test -c "Docker_CMD_to_run_user_container --network <network_name>" --containerName "<container_name>" --delay 20
¡Contáctanos! Estamos aquí para ayudarte.
Ya seas un principiante o un mago 🧙♀️ en la programación, tu perspectiva es valiosa. Echa un vistazo a nuestras:
Filtra campos ruidosos en las respuestas de las API como (marcas de tiempo, valores aleatorios) para asegurar pruebas de alta calidad.
Keploy se asegura de que no se generen casos de prueba redundantes.
- Pruebas Unitarias: Aunque Keploy está diseñado para funcionar junto con los marcos de pruebas unitarias (Go test, JUnit, etc.) y puede contribuir a la cobertura de código general, todavía genera pruebas de extremo a extremo (E2E).
- Entornos de Producción: Keploy actualmente se centra en generar pruebas para desarrolladores. Estas pruebas se pueden capturar desde cualquier entorno, pero no las hemos probado en entornos de producción de alto volumen. Esto requeriría una sólida deduplicación para evitar la captura de pruebas redundantes en exceso. Tenemos ideas para construir un sistema de deduplicación sólido #27
🕵️️ ¿Por Qué Keploy?