Configuration Language en Testform
El Lenguaje de Configuración de Testform es la interfaz declarativa para especificar casos de prueba, dependencias, fuentes de datos y orquestación de calidad siguiendo el paradigma Test-as-Code (TaC).
Al igual que Terraform Language permite modelar infraestructura mediante bloques declarativos, Testform permite modelar la intención de prueba de software combinando la legibilidad universal de Gherkin con la potencia de configuración de YAML.
Principios del Lenguaje
Sección titulada «Principios del Lenguaje»- Declarativo sobre Imperativo: Describes el estado deseado de validación del software (
Given,When,Then), no scripts frágiles ni código procedural encolado. - Versionado en Git: Todo el ecosistema de pruebas (escenarios, variables, fixtures, aserciones y salidas) vive en el repositorio como código fuente auditable.
- Gestión de Estado Determinista: Un archivo de estado (
testform.state) registra el resultado y los atributos de cada recurso de prueba para planificar ejecuciones incrementales. - Composición Modular: Reutiliza suites completas o pasos parametrizados mediante el meta-argumento
@modulecon fuentes locales o repositorios Git remotos.
Componentes del Lenguaje
Sección titulada «Componentes del Lenguaje»La navegación lateral organiza cada bloque y capacidad activa de Testform:
graph TD A[main.yml] --> B[Configure Providers] B --> C[Resources: Scenarios & Steps] C --> D[Data Sources & Variables] D --> E[Locals & Expressions] C --> F[Meta-arguments: depends_on & lifecycle] C --> G[Modules: Local & Git] C --> H[Outputs] H --> I[State: Ledger & Locking] I --> J[Test and Validate]Configuración de plataformas de gestión (github, gitlab, jira, local) en main.yml.
Los escenarios y pasos de Gherkin actúan como recursos declarativos con direcciones canónicas (featurepath.tag) y ciclo de vida gestionado.
Fuentes de datos de solo lectura (data.yml, fixtures JSON/YAML) accesibles en plantillas vía ${data.<source>.<key>}.
Parámetros de entrada configurables vía vars.yml, variables de entorno TF_VAR_* y flags de línea de comandos.
Valores locales calculados y reutilizables declarados en local.yml para simplificar expresiones complejas.
Valores exportados por las pruebas persistidos en el ledger de estado y consultables con testform output o ${module.<name>.<output>}.
Empaquetado y reutilización de suites de prueba mediante @module, con soporte para repositorios Git y paso de parámetros variable={...}.
Directivas avanzadas que alteran la orquestación:
- depends_on: Grafo acíclico dirigido (DAG) de dependencias entre pruebas.
- lifecycle: Protección contra destrucción (
prevent_destroy) y supresión de falsos positivos (ignore_changes).
Búsqueda y filtrado de recursos en el estado con testform query e incorporación de incidencias remotas con testform import.
El ledger de conciliación (testform.state), el bloqueo concurrente (testform.state.lock) y la detección de deriva (drift).
Verificación estática con testform validate e inspección previa con testform plan antes de ejecutar.