Inicio rápido
Este recorrido usa el ejemplo postgres-app del repositorio: un pequeño servicio HTTP
en Go respaldado por PostgreSQL, con features de Karate y un esquema de datos inicial.
1. Construye las imágenes
gtool ejecuta la aplicación bajo prueba como un contenedor. Las imágenes que solo existen en local se usan tal cual; gtool solo hace pull cuando falta una imagen. La imagen del launcher de Karate no se publica, así que constrúyela también una vez:
git clone https://github.com/oswaldom-code/gtool.git
cd gtool
make test-launcher-image # gtool/test-launcher-back:latest
cd examples/postgres-app
docker build -t postgres-app:latest .
2. Revisa la configuración
component-config.yml declara la app, los tests y los mocks:
version: v1
app-technology: golang
app-config:
docker-image: postgres-app:latest
port: 8080
host-port: auto # free host port per run
environment:
DB_HOST: host.docker.internal # the mock as seen from the app container
DB_PORT: "${mocks.postgresql.port}" # this run's mock port
DB_USER: postgres
DB_PASSWORD: postgres
DB_NAME: postgres
test-launcher: test-launcher-back
test-config:
features-path: ./test/component/features
reports-path: ./test/component/reports
tags: smoke
third-party:
mocks:
- postgresql
mock-config:
postgresql:
port: auto
user: postgres
password: postgres
database: postgres
scripts-path: ./test/component/mocks-data/postgresql
3. Valida y ejecuta
gtool levanta PostgreSQL y ejecuta los scripts SQL de scripts-path, arranca el
contenedor de la app, ejecuta las features de Karate con el tag smoke y escribe el
reporte HTML en test/component/reports. La app y el mock se eliminan al final, sea
cual sea el resultado.
4. Trabaja fase a fase
Mientras escribes features es más rápido mantener el entorno levantado. Los
comandos separados no pueden compartir puertos asignados con auto, así que
define antes puertos explícitos (por ejemplo host-port: 18080 y port: 25432;
el placeholder ${mocks.postgresql.port} los sigue) o quédate con gtool test:
gtool services up # mocks only
gtool app start # the app from app-config
gtool test karate # features against what is running
gtool app stop && gtool services down
gtool test karate lee test-config (features, reportes, tags) y los puertos del
mismo archivo, y acepta --tags, --features y --reports para sobrescribirlos.
5. Ponlo a prueba de estrés
La misma app incluye un contrato OpenAPI. Desde la raíz del repositorio:
gtool stress plan --config configs/stress-example.yml
gtool stress --config configs/stress-example.yml
Consulta Pruebas de estrés para saber qué te dice el reporte.