Burlarse de todo en las pruebas puede conducir a varias dificultades potenciales, lo que puede afectar negativamente la efectividad y la confiabilidad de su estrategia de prueba. Estos son algunos de los problemas clave asociados con la burla excesiva:
1. Pruebas frágiles y acoplamiento apretado **
Cuando se burla de cada dependencia, sus pruebas se combinan estrechamente con los detalles de implementación del código en prueba. Esto significa que incluso los cambios menores en los trabajos internos del código pueden romper las pruebas, incluso si el comportamiento externo permanece sin cambios. Dichas pruebas son frágiles y requieren actualizaciones frecuentes, lo que puede llevar mucho tiempo y frustrante [6] [9].
2. Falso confianza y errores ocultos **
La burla excesiva puede conducir a una falsa confianza en la confiabilidad del código. Al aislar los componentes con simulacros, puede perderse problemas del mundo real que solo se manifiestan cuando todos los componentes interactúan juntos. Esto puede resultar en que se descubran errores en la producción en lugar de durante las pruebas, socavando el propósito de las pruebas [1] [9].
3. Desafíos de complejidad y mantenimiento de exceso **
La creación y el mantenimiento de simulacros, especialmente para sistemas complejos, puede ser desafiante y lento. A medida que el sistema evoluciona, los simulacros pueden necesitar actualizarse con frecuencia para reflejar cambios en las dependencias o el comportamiento, lo que puede ser engorroso y propenso a los errores [9] [11].
4. Dificultad para verificar el comportamiento del mundo real **
Burlarse de todo puede dificultar la verificación de cómo se comporta el sistema en escenarios del mundo real. Las pruebas de integración, que implican menos simulacros, a menudo son más adecuadas para este propósito. La excesiva dependencia de los simulacros puede conducir a pruebas que no reflejan con precisión las interacciones del mundo real [9] [11].
5. Uso ineficiente de recursos **
La burla excesiva puede conducir al uso ineficiente de los recursos. La configuración de simulacros puede consumir más tiempo que escribir la lógica de prueba real, especialmente en sistemas de base de datos o complejos [2] [11]. Esta ineficiencia puede ralentizar el proceso de desarrollo y aumentar los costos de las pruebas.
6. Superposición con pruebas de integración **
Cuando las pruebas de unidad cubren escenarios que también se prueban mediante pruebas de integración sin simulacros, plantea preguntas sobre el valor agregado por estas pruebas unitarias. Las pruebas de integración a menudo proporcionan una cobertura más integral del comportamiento del sistema sin la necesidad de una burla extensa [2] [7].
7. potencial para el comportamiento simulado incorrecto **
Si los simulacros no imitan con precisión el comportamiento de los objetos reales que reemplazan, las pruebas pueden pasar incluso cuando el sistema real fallaría. Esto puede conducir a una falsa sensación de seguridad y errores perdidos [5] [9].
En resumen, mientras se burla puede ser una herramienta útil para las pruebas, usarla en exceso puede conducir a pruebas frágiles, falsa confianza e ineficiencias. Es crucial usar burlarse juiciosamente y considerar alternativas como las pruebas de integración cuando sea posible.
Citas:[1] https://cs-syd.eu/posts/2021-10-22-why-mocking-is-a-bad-idea
[2] https://softwareEngineering.stackexchange.com/questions/454887/how-to-toid-too-much-mocking-in-unit-tests-in-a-database --method
[3] https://ryanclements.dev/posts/you-probly-dont-need-mocking
[4] https://stackoverflow.com/questions/61793083/should-i-mock-every-single-dependencies-in-unit-testing
[5] https://softwareEngineering.stackexchange.com/questions/382087/how-exactly-should-unit-tests-be-written-without-mocking- extensivamente
[6] https://pytest-with-ric.com/mocking/pytest-common-mocking-problems/
[7] https://www.reddit.com/r/typescript/comments/1ei9f4a/is_it_me_or_mocking_everything_everywhere_in/
[8] https://stackoverflow.com/questions/38181/when-should-i-mock
[9] https://www.qodo.ai/blog/mock-testing/
[10] https://hynek.me/articles/what-to-mock-in-5-mins/
[11] https://vinted.engineering/2023/10/02/mocking-framework-downside/