Reutilización de pruebas en los procesos de relaciones públicas y de comunicación interna
Por defecto, cuando se ejecuta una solicitud de incorporación de cambios (PR) o un proceso de integración continua (CI), siempre se ejecutan todos los análisis y pruebas configurados, incluso cuando el contenido del repositorio o la imagen que se está analizando o sometiendo a prueba no haya cambiado desde el último análisis o prueba Como resultado, se recopilan nuevos datos en cada ejecución. Esto supone una pérdida de tiempo y recursos.
Los flujos de trabajo de DevSecOps ofrecen una función opcional denominada Reutilización de pruebas que permite omitir el análisis o la prueba en las etapas del flujo de trabajo cuando el contenido del repositorio o la imagen que se está analizando o probando no ha cambiado desde el último análisis o prueba En este caso, no se realizan análisis ni pruebas, por lo que no se recopilan nuevas pruebas. En su lugar, los datos recopilados previamente para el análisis o la prueba se recuperan y se reutilizan en los resúmenes de CI, CD y CC. Esto agiliza los procesos de PR y CI y optimiza el uso de los recursos Cuando la función está activada, el proceso comprueba que lo que se está probando o analizando no haya cambiado desde la ejecución anterior. Si la validación se realiza con éxito, las etapas del proceso pueden omitir la prueba o el análisis y basarse en las pruebas y los resultados recopilados anteriormente.
Algunos casos de uso típicos para la reutilización de pruebas son:
-
Caso de uso 1:
- Ejecutar pruebas unitarias en el proceso de pull requests con recopilación de pruebas.
- Fusiona la solicitud de incorporación de cambios (PR) mediante el método que prefieras (rebase, squash o fusión normal).
- Si el código fuente no ha cambiado entre la solicitud de incorporación de cambios (PR) y las ejecuciones del proceso de integración continua (CI), se puede omitir la ejecución de las pruebas unitarias en el proceso de integración continua. Los resultados de las pruebas unitarias de la ejecución del pipeline de PR se recogen y se reutilizan para el resumen de CI.
-
Caso de uso 2:
- Ejecuta el proceso de PR con la recopilación de pruebas, o ejecuta el proceso de CI.
- Una de las etapas del proceso, por ejemplo
compliance-check, falla debido a un problema intermitente. - Vuelve a ejecutar el proceso de PR o CI con el mismo commit.
- Las comprobaciones y pruebas que se han superado se omiten en la nueva ejecución, y los resultados de la ejecución anterior se recuperan y se reutilizan.
- Solo se ejecutan los análisis fallidos y se recopilan nuevas pruebas para ellos.
Para habilitar la recopilación de pruebas en el proceso de PR, consulta Recopilación de pruebas en el proceso de PR.
Facilitar la reutilización de pruebas
Para habilitar la reutilización de pruebas en el proceso de PR o CI, configura la propiedad del entorno evidence-reuse en 1. Por defecto, esta propiedad no está activada.
| Propiedad | Descripción | Valor predeterminado |
|---|---|---|
evidence-reuse |
Configurar en 1 para permitir la reutilización de pruebas. |
No habilitado |
evidence-reuse-for-failure |
Configurar en 1 para reutilizar también las pruebas fallidas. Configurarlo además de evidence-reuse=1. |
No habilitado |
evidence-validity-period |
Número de horas durante las cuales se puede reutilizar la evidencia. | 24 (máximo 720, lo que equivale a 30 días) |
La herramienta check-evidence-for-reuse comprueba si existen pruebas que respalden la combinación de asset-key, tool-type, y evidence-type, y verifica que dichas pruebas cumplan las condiciones
para su reutilización Para obtener más información, consulta check-evidence-for-reuse.
Para consultar la referencia completa comando de la CLI y todos los parámetros disponibles, véase cocoa locker evidence reuse.
Condiciones para la reutilización de pruebas
La herramienta check-evidence-for-reuse comprueba que se cumplan las siguientes condiciones:
- Las pruebas se recopilaron en el mismo activo de commit, contenido del repositorio o activo de imagen.
- El estado de la evidencia es
success. Las pruebas con cualquier otro estado no se tienen en cuenta para su reutilización y se ejecuta un nuevo análisis. Esto garantiza que, cuando se recopilen datos de un fallo debido a un fallo intermitente en una etapa, al volver a ejecutar el proceso no se reutilicen los datos del fallo. En su lugar, se ejecuta un nuevo análisis y se recopilan nuevas pruebas. Sin embargo, en algunos casos es necesario reutilizar las pruebas que han fallado. Por ejemplo, un análisis ha detectado una vulnerabilidad en el proceso de integración continua (CI) y el cambio debe implementarse como una implementación de emergencia. Para reutilizar la evidencia fallida, configura la propiedad de entornoevidence-reuse-for-failure=1además deevidence-reuse=1. - La información no está desactualizada. La fecha de recogida de pruebas se encuentra dentro del periodo de validez. El periodo de validez predeterminado es de 24 horas. Puede configurar el valor de una ejecución de pipeline utilizando la propiedad
de entorno (
evidence-validity-perioden horas). El valor tiene un límite máximo de 720 horas (30 días). - Opcionalmente, la evidencia coincide con cualquier comprobación de configuración que se haya guardado en la sección de detalles, como la versión de la herramienta o la versión de la imagen base del paso.
Herramientas y tipos de pruebas admitidos
Se han actualizado los scripts de análisis predeterminados de DevSecOps para permitir la reutilización de pruebas cuando esta función esté habilitada.
Tipos de pruebas para las que se admite la reutilización de pruebas:
| Tipo de prueba | Se pueden reutilizar |
|---|---|
com.ibm.static_scan |
Sí |
com.ibm.dynamic_scan |
Sí |
com.ibm.detect_secrets |
Sí |
com.ibm.code_bom_check |
Sí |
com.ibm.code_cis_check |
Sí |
com.ibm.code_vulnerability_scan |
Sí |
com.ibm.acceptance_tests |
Sí. Debes actualizar tu script personalizado. |
com.ibm.unit_tests |
Sí. Debes actualizar tu script personalizado. |
com.ibm.branch_protection |
No |
com.ibm.pipeline_run_data |
No |
com.ibm.peer_review |
No |
Actualiza tus scripts personalizados, como las pruebas unitarias y las pruebas de aceptación, para permitir la reutilización de pruebas cuando esté habilitada. Para incorporar la reutilización de pruebas en tus scripts personalizados, consulta la siguiente sección.
Adopción de la reutilización de pruebas en los scripts
Para implementar la reutilización de pruebas en tus scripts, comprueba primero si hay pruebas reutilizables disponibles. El siguiente pseudocódigo describe cómo comprobar si hay pruebas y decidir cuál es el siguiente paso.
Seudocódigo
Check whether evidence for reuse exists for (asset, tool, evidence-type) by using check-evidence-for-reuse
If evidence is found
Skip the scan or test
Save the reused result file (optional)
Else
Continue with your existing scan process and collect new evidence as usual
Comprobar si hay material disponible para su reutilización
Utiliza el comando check-evidence-for-reuse con los mismos parámetros que utilizas en el script collect-evidence. Para más detalles, consulta check-evidence-for-reuse.
El comando finaliza con 0 cuando se encuentra y se guarda evidencia reutilizable, y con 1 cuando no se encuentra.
Uso de ejemplo
evidence_params=(
--tool-type "my-tool"
--evidence-type "com.ibm.unit_tests"
--asset-type "repo"
--asset-key "${repo_key}"
)
reused_evidence_json="$(mktemp)"
if check-evidence-for-reuse "${evidence_params[@]}" --output-path "${reused_evidence_json}"; then
echo "Reusable evidence found. Skipping the test."
else
# No reusable evidence: run the test and collect new evidence as usual
run_my_tests
collect-evidence "${evidence_params[@]}" --status "success"
fi