Herramienta de Gestión de Pruebas
Sumario
La herramienta tmt
tiene por objeto proporcionar una manera eficiente y confortable para crear, ejecutar, depurar y activar pruebas en la Integración Continua.
Implementa la Especificación de Prueba de Metadatos las cuales permiten almacenar todos los datos de ejecución de pruebas necesarias directamente dentro de un repositorio git. La misma configuración puede ser utilizada para habilitar pruebas en el IC Fedora, IC RHEL y Packit. Las pruebas pueden ser ejecutadas fácilmente en su entorno prefereido, p.ej. en máquina virtual, contenedor o directamente en el hospedaje local.
Primeros Pasos
Instalar
Instala tmt en su portátil:
sudo dnf install -y tmt # características básicas, ejecutando pruebas en localhost sudo dnf install -y tmt+all # instala todo los subpaquetes tmt disponibles incluyendo todas las dependencias
Además puede instalar solo complementos de suministro seleccionados:
sudo dnf install -y tmt+provision-container # dependencias adicionales para ejecutar pruebas dentro de contenedores sudo dnf install -y tmt+provision-virtual # admite para ejecutar pruebas dentro de una máquina virtual utilizando testcloud
consulte la sección tmt install para más opciones de instalación.
Repo Git
Echa un vistazo a las ramas git deseadas utilizando fedpkg:
fedpkg clone -a bash cd bash git checkout f32
O clone su repo del proyecto GitHub:
git clone https://github.com/teemtee/tmt/ cd tmt git checkout -b enable-tests
Test Smoke
Activemos un test simple smoke utilizando la plantilla de plan mínimo:
$ tmt init --template mini Tree '/tmp/bash' inicializado. Aplicando plantilla 'mini'. Directorio '/tmp/bash/plans' creado. Plan '/tmp/bash/plans/ejemplo.fmf' creado.
Edita el plan nuevamente creado como necesitaba, p.e. como esto:
summary: Test smoke básico para bash execute: script: bash --version
Ejecutar Pruebas
Pruebas de Ejecución
Ejecuta todas las pruebas disponibles de forma segura dentro de una máquina virtual:
tmt run
Ejecute solo pruebas coincidentes con nombre dado o lugar bajo el directorio actual:
tmt run test --name smoke tmt run test --name .
Muestra resultados de prueba detallado desde la última ejecución tmt ejecutada por el usuario actual:
tmt run --last report -fvvv
Ejecutando pruebas activadas utilizando el Interfaz de Pruebas Estándar en tests/tests.yml no están admitidas aún pero estamos trabajando con ello. |
Seleccione Pasos
Elija explícitamente cuales pasos serían ejecutados:
tmt ejecuta discover
Esto proporcionará un resumen de pruebas el cual sería ejecutado. Para listar pruebas individuales active el modo verborreo:
tmt run discover --verbose tmt run discover -v
Opciones de Abaste
Elija local
como el método de previsión pero ejecute pasos --all
:
tmt run --all provision --how local
Ejecute dentro de un contenedor o máquina virtual:
tmt run --all provision --how container --image fedora tmt run --all provision --how virtual --image fedora-32
Marque todos los complementos propuestos disponibles:
tmt run provision --help
Preparar Opciones
Instala paquetes adicionales en el invitado:
tmt run --all prepare --how install --package httpd
Obtiene el último paquete desde repositorio copr proporcionado:
tmt run --all prepare --how install --copr @teemtee/tmt --package tmt
Utilice el rpm local de compilación reciente o todos los rpms desde directorio local proporcionado:
tmt run --all prepare --how install --package tmp/RPMS/noarch/tmt-0.20-1.fc32.noarch.rpm tmt run --all prepare --how install --directory tmp/RPMS/noarch
Comprueba todas las opciones a preparar:
tmt run prepare --help
Crear Prueba
Con el fin de crear tests más complejos utilicemos la plantilla de plan base:
tmt plan create /plans/basic --template base tmt plan create /plans/basic -t base
Actualiza sumario como necesite, conserva método descubierto para fmf
y elija si las pruebas serían ejecutadas como guiones shell
(tan solo compruebe el código de salida) o pruebas beakerlib
(investiga diario para resultados de test):
resumen: Comprueba características de bash básicas descubre: como: fmf ejecuta: como: tmt
Test Intérprete
Con el fin de crear un esqueleto de prueba de intérprete simple utilice la plantilla del intérprete:
$ tmt test create /tests/smoke Plantilla (shell o beakerlib): shell Directorio '/tmp/bash/tests/smoke' creado. Test metadata '/tmp/bash/tests/smoke/main.fmf' creado. Test script '/tmp/bash/tests/smoke/test.sh' creado.
Actualiza archivo de metadatos:
sumario: comprueba versión de bash contacto: Petr Šplíchal <psplicha@redhat.com> test: ./test.sh
Ajuste el guion de test como desea:
#!/bin/sh -eux tmp=$(mktemp) bash --version > $tmp grep 'GNU bash' $tmp grep 'Free Software Foundation' $tmp rm $tmp
Utilice tmt run
para verificar el test está trabajando como esperaba.
Test BeakerLib
Utilice la plantilla beakerlib para crear un test nuevo de beakerlib:
$ tmt test create /tests/smoke -t beakerlib Directorio '/tmp/bash/tests/smoke' creado. Test metadata '/tmp/bash/tests/smoke/main.fmf' creado. Test guion '/tmp/bash/tests/smoke/test.sh' creado.
Actualiza test metadatos y código como necesario, utilice tmt run
para verificar que todo está funcionando bien.
Solicitudes de extracción
Cuando crea la petición de extracción asegúrese que añada todos los archivos creados incluyendo el directorio .fmt
especial.
git add . git commit
Fedora
Con el fin de probar sus cambios en Fedora CI no es necesaria ninguna configuración adicional. Asegure que su push los cambios dentro de su repositorio bifurcado como rpms/tests con espacio de nombre fedora no permite forzar push o retirar ramificación.
git remoto añade bifurcación ssh://psss@pkgs.fedoraproject.org/forks/psss/rpms/tmt.git git empuja bifurcación -u activa-pruebas
GitHub
Con el fin de probar una solicitud pull en GitHub activa la integración Empaquetar-como-un-Servicio y añade un archivo de configuración .packit.yaml
:
tareas: - tarea: tests disparador: pull_request metadatos: destinos: - fedora-all
Para más detalles consulte la documentación de Testing Farm. Una vez que la integración esté activada empuje la rama, cree una solicitud pull nueva como usual y espere los resultados:
git push origin -u enable-tests
Plantillas
Cuando crea una solicitud pull para activar pruebas en un repositorio sin ninguna configuración tmt
, incluya una pareja de consejos y enlaces para aquellos quienes no son familiares con la nueva herramienta:
Esta solicitud de pull activa pruebas en el Fedora CI utilizando `tmt` la cual además permite fácilmente ejecutar y depurar pruebas desde su portátil: Ejecute pruebas directamente en su host local: sudo dnf install -y tmt tmt run --all provision --how local Ejecuta pruebas en una máquina virtual: sudo dnf install -y tmt+provision-virtual tmt run Comprueba la documentación para aprender más sobre la herramienta: https://docs.fedoraproject.org/es/ci/tmt
Gestionar Pruebas
Explorar pruebas disponibles, convierte metadatos antiguos, comparte código de prueba.
Explorar Pruebas
Con el fin de consultar cuales pruebas están disponibles:
tmt test ls
Para mostrar más detalles sobre pruebas individuales:
tmt test show
Para consultar una vista previa de todos los metadatos:
tmt
Explora todas las opciones disponibles e instrucciones utilizando --help
.
Compartir Pruebas
Código de test no tiene que residir en el mismo repo git (p.e. dist git rpms espacio-nombre). Es posible almacenar pruebas en un repo dedicado y compartido a través de versiones de componentes o producto. Solo necesitas para referencia el repositorio en el paso de descubrimiento. Utilice la plantilla de plan completo para obtener rápidamente iniciado:
tmt plan create /plans/upstream -t full
Actualiza el repositorio url para apuntar al lugar derecho:
- smario
-
Características de línea de instrucción esencial discover: como: fmf url: https://github.com/teemtee/tmt execute: como: tmt
Ahora será capaz de ejecutar pruebas desde el repo remoto, Consulte el paso descubierto de documentación para detalles.
Varios consejos
Comandos Múltiples
Además pueden ser proporcionadas múltiples instrucciones de intérprete bajo el atributo guion
:
sumario: Test smoke básico para bash execute: guion: - bash --version - bash -c 'echo $((1+1+1))' | grep 3
Consulte el método de guion de documentación para detalles.
Instalando dependencias
Pueden instalarse los paquetes requeridos utilizando el atributo prepare
:
sumario: Prueba smoke básica para python3-m2crypto preparar: como: instalar paquete: - python3-setuptools - python3-m2crypto ejecute: script: python3 -c "import M2Crypto"
Consulte el paso preparación de documentación para detalles.
Múltiples Repositorios
En el paso descubierto también es posible referenciar múltiples repositorios. De esta manera puede por ejemplo ejecutar fácilmente ambos upstream y pruebas fedora como parte de un plan único:
descubrir: - nombre: fedora como: fmf url: https://src.fedoraproject.org/tests/selinux.git - nombre: upstream como: fmf url: https://github.com/SELinuxProject/selinux-testsuite
Además consulte el ejemplo de configulación múltiple en el repo tmt para obtener una mejor idea.
Planes Múltiples
Es posible utilizar planes múltiples para pruebas relevantes de grupo juntos o para ser capaz de ejecutar fácilmente un subconjunto de pruebas. Por ejemplo, tengamos un plan /plans/features
el cual cubre todas las pruebas de funcionalidad desde el repositorio git local:
descubrir: como: fmf ejecuta: como: tmt
Y un plan separado /plans/integration
para activar pruebas de integración con otro componente:
descubrir: como: fmf url: https://src.fedoraproject.org/rpms/ltrace.git ejecutar: como: tmt
Ejecutando todas las pruebas desde el plan dado es entonces muy fácil:
tmt run plan --name /plans/features
Cuando ejecute en el IC, los resultados desde tales planes son reportados como un único resultdb testcase y son mostrados en peticiones pull como un único indicador. Con el fin de activar resultado deparado por cada plan, crea un archivo ci.fmf
dentro de la raíz del repositorio git con el contenido siguiente:
resultsdb-testcase: separar
Una vez que separación de informe fue activado, puede activar la compuerta para planes seleccionados únicamente. Nombre de plan se convierte en parte del nombre de resultsdb testcase el cual es utilizado dentro de la configuración gating.yaml
. Consulte la documentación de compuerta en Utilizar Planes Múltiples para más detalles.
Ruta Minimal
Aquí está un ejemplo de una ruta de creación de test minimal:
dnf install -y tmt+all git clone https://src.fedoraproject.org/rpms/bash cd bash tmt init -t mini vim plans/example.fmf tmt run
Un ejemplo ligeramente extendido con test adaptado y plantilla de plan y ejecutando directamente prueba en el host local:
dnf install -y tmt+all git clone https://src.fedoraproject.org/rpms/bash cd bash tmt init tmt plan create --template base plans/smoke tmt test create --template beakerlib tests/smoke vim plans/smoke.fmf tests/smoke/* tmt run --all provision -h local git add . git commit -m "Enable basic tests" git push
Consejos de Virtualización
Con el fin de ejecutar con seguridad las pruebas bajo una máquina virtual iniciada en su portátil solo necesita instalar el paquete tmt+provision-virtual
. Por defecto la conexión de la sesión es utilizada tal que ningún otro paso sería necesario, tan solo ejecute pruebas utilizando la instrucción tmt run
. Consulte el upstream de Consejos de Virtualization para más opciones.
Más informe
Ejemplos de Prueba
Proyectos de ejemplo con pruebas tmt:
Consulte la página tmt de ejemplos para más inspiración.
Preguntas
- ¿Esta herramienta sustituye/dejar de utilizar STI?
-
No, actualmente no hay plan de desmantelar STI. Ambas aproximaciones
tmt
ysti
para configuración IC puede ser utilizada en paralelo. - ¿Son estas pruebas compatibles en IC Fedora?
-
Sí, el mantenimiento CI Fedora está habilitado para todas las ramas activas y las pruebas de espacio de nombres también.
- ¿Cuales distribuciones de Linux soportan la herramienta?
-
Como un sistema bajo test (en el cual las pruebas son ejecutadas) todas las versiones Fedora soportadas, CentOS 6+ y Red Hat Enterprise Linux 6+ pueden ser utilizadas. Para el probador de pruebas (donde la instrucción tmt es ejecutada) todas las versiones de Fedora soportadas, CentOS 8+ o Red Hat Enterprise Linux 8+ son requeridas.
Want to help? Learn how to contribute to Fedora Docs ›