A zombaria de tudo nos testes pode levar a várias armadilhas em potencial, o que pode afetar negativamente a eficácia e a confiabilidade de sua estratégia de teste. Aqui estão alguns dos principais problemas associados a zombarias excessivas:
1. Testes quebradiços e acoplamento apertado **
Quando você zomba de todas as dependências, seus testes ficam fortemente acoplados aos detalhes da implementação do código em teste. Isso significa que mesmo pequenas mudanças no trabalho interno do código podem interromper os testes, mesmo que o comportamento externo permaneça inalterado. Tais testes são quebradiços e requerem atualizações frequentes, que podem ser demoradas e frustrantes [6] [9].
2. Falso confiança e insetos ocultos **
A zombaria excessiva pode levar a uma falsa confiança na confiabilidade do Código. Ao isolar componentes com zombarias, você pode perder problemas do mundo real que só se manifestam quando todos os componentes interagem juntos. Isso pode resultar em bugs sendo descobertos na produção e não durante o teste, minando o objetivo de testar [1] [9].
3. Desafios de complexidade e manutenção **
Criar e manter simulações, especialmente para sistemas complexos, pode ser desafiador e demorado. À medida que o sistema evolui, as zombares podem precisar ser atualizadas com frequência para refletir mudanças nas dependências ou comportamento, que podem ser complicadas e propensas a erros [9] [11].
4. Dificuldade em verificar o comportamento do mundo real **
Zombar de tudo pode dificultar a verificação de como o sistema se comporta em cenários do mundo real. Os testes de integração, que envolvem menos zombarias, geralmente são mais adequados para esse fim. A excesso de confiança em zombarias pode levar a testes que não refletem com precisão as interações do mundo real [9] [11].
5. Uso ineficiente de recursos **
A zombaria excessiva pode levar ao uso ineficiente de recursos. A configuração de simulações pode consumir mais tempo do que escrever a lógica de teste real, especialmente em sistemas pesados ou complexos de banco de dados [2] [11]. Essa ineficiência pode diminuir o processo de desenvolvimento e aumentar os custos de teste.
6. Sobreposição aos testes de integração **
Quando os testes de unidade abrangem cenários que também são testados por testes de integração sem zombares, levanta questões sobre o valor agregado por esses testes de unidade. Os testes de integração geralmente fornecem uma cobertura mais abrangente do comportamento do sistema sem a necessidade de zombaria extensa [2] [7].
7. Potencial para comportamento simulado incorreto **
Se as zombarias não imitam com precisão o comportamento dos objetos reais que substituem, os testes podem passar mesmo quando o sistema real falharia. Isso pode levar a uma falsa sensação de segurança e bugs perdidos [5] [9].
Em resumo, embora a zombaria possa ser uma ferramenta útil para testar, o uso excessivo pode levar a testes quebradiços, falsa confiança e ineficiências. É crucial usar zombar de crítica e considerar alternativas como testes de integração, quando possível.
Citações:[1] https://cs-syd.eu/posts/2021-10-22-why--bock-is-b-bad -dea
[2] https://softwareengineering.stackexchange.com/questions/454887/how-to-avoid-too-much--bocking-in-unit-tests-in-a-database-heavy-method
[3] https://ryanclements.dev/posts/you-probabily-dont-need--focking
[4] https://stackoverflow.com/questions/61793083/should-i-mock-every-ingleding-dependencies-in-unit-testing
[5] https://softwareEngineering.stackexchange.com/questions/382087/how-exactly-should-unit-tests-be-written-without--bocking-extensivamente
[6] https://pytest-with-eric.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-wnside/