Valídalo en tu repositorio
Nuestra evaluación se hace sobre bibliotecas de código abierto. Tu código tiene sus propios patrones, así que comprueba TestDetta con él antes de dejar que decida qué se ejecuta. Lleva un par de semanas de pull requests normales y no cambia nada para tu equipo.
La idea
Sigue usando el conjunto completo de pruebas como control. Junto a él, pregunta a TestDetta qué habría seleccionado. Cada clase de prueba que falla en la ejecución completa tiene que estar en esa selección. Si alguna no está, es una prueba pasada por alto, y queremos saberlo.
Pasos
- Registra mapas en la rama predeterminada. Con GitHub Actions, añade el paso
recorddel workflow; en otros sistemas, ejecutatd recorden cada commit de la rama predeterminada y guarda los mapas (otros sistemas de CI). - En cada pull request, anota la selección. Sin cambiar tu paso de pruebas:
td affected --format json > selection.json - Ejecuta el conjunto completo como hoy, con un informe TRX para poder leer los fallos:
dotnet test --logger trx --results-directory TestResults - Compara. Para cada prueba que falla, su clase tiene que estar seleccionada. Una clase está seleccionada cuando el
modede su proyecto esAll, o cuando su proyecto esFilteredy la clase está enclasses:jq -r '.tests[] | select(.mode == "All") | .project' selection.json # projects that run completely jq -r '.tests[] | select(.mode == "Filtered") | .classes[]' selection.json # classes that run - Guarda ambos archivos de cualquier ejecución en la que una clase que falló no estuviera seleccionada, y envíalos junto con el registro de
-vdetd affecteda support@testdetta.com.
Solo las pruebas que fallan pueden revelar una prueba pasada por alto, y un par de semanas pueden traer pocos fallos. Puedes provocar algunos: en una rama desechable, rompe un método a propósito (que devuelva un valor incorrecto) y comprueba que se selecciona la prueba que lo detecta. No hagas merge de esa rama.
Cuando tengas confianza
Sustituye el paso de pruebas completo por td test, o por el modo test de la acción. Sigue registrando en la rama predeterminada: allí se ejecutan todas las pruebas, así que cualquier cosa que una selección pudiera ocultar se detecta antes del lanzamiento.
Cómo lo probamos nosotros
La misma comprobación se ejecuta a gran escala en 41 repositorios de código abierto: los miembros se modifican de uno en uno y cada clase de prueba que falla tiene que haber sido seleccionada. De 2941 cambios que rompieron una prueba, se pasaron por alto 3, y cada uno se corrigió con una prueba que falla sin la corrección. El corpus en cifras.