Averigüe qué prueba unitaria falla en dependencia de otra

Tenemos ~22.000 pruebas unitarias. Ahora, dos de ellos fallan cuando se ejecutan junto con otras pruebas. Pasan cuando corren solos. Ahora estoy buscando un análisis automatizado para reducir las pruebas para reproducir el problema.

Creo que debería ser posible encontrar una solución con un enfoque de divide y vencerás. Ejecute algunas pruebas unitarias, luego ejecute la afectada. Averigua si falla o pasa. Es de esperar que reiniciar el proceso de prueba unitaria elimine la causa, suponiendo que no esté relacionado con el archivo o la base de datos.

Estos son los requisitos:

  • Soporta .NET/C#
  • Soporta pruebas MSTest y NUnit
  • funciona en Windows 7 y 10
  • es gratis para uso comercial
  • se ejecuta sin conexión, es decir, en una máquina de desarrollador, no en la nube
Divide y vencerás puede funcionar. Puede que no. Imagine que la prueba T1 falla cuando T77 y T952 se ejecutan en orden en un conjunto de T2-T1000. Un esquema de divide y vencerás puede dividir T77 en un grupo T2-T500 y colocar T952 en un grupo T501-T999... y ninguno de los subgrupos, cuando se ejecuta por sí mismo, mostrará la falla. En teoría, puede que tenga que identificar un subconjunto arbitrario. Para N pruebas, eso es 2^N subconjuntos posibles; para 1000 pruebas, eso es 2^1000, que es mucho más grande que la cantidad de protones en el universo visible.
.... ahora, aún puede probar un esquema de dividir para conquistar, y esperar que no tenga dependencias difíciles porque se supone que sus pruebas son independientes.
@IraBaxter: No necesito todos los protones al mismo tiempo. Puedo reutilizar electrones con el tiempo.

Respuestas (1)

Mi equipo y yo usamos el aislador de Typemock. Es compatible con .Net framework, MSTest, Nunit y Windows. También puede ejecutarlo en una máquina de desarrollador. Usamos la versión paga, que creo que podría ayudarlo. Hay una versión gratuita, aunque no estoy seguro de que pueda satisfacer sus necesidades.