Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Hva er de potensielle fallgruvene ved å spotte alt i en test


Hva er de potensielle fallgruvene ved å spotte alt i en test


Å spotte alt i tester kan føre til flere potensielle fallgruver, noe som kan ha negativ innvirkning på effektiviteten og påliteligheten til teststrategien din. Her er noen av de viktigste spørsmålene forbundet med overdreven hån:

1. sprø tester og tett kobling **

Når du håner hver avhengighet, blir testene dine tett sammen med implementeringsdetaljene i koden som er under test. Dette betyr at selv mindre endringer i kodens interne arbeid kan bryte testene, selv om den ytre atferden forblir uendret. Slike tester er sprø og krever hyppige oppdateringer, noe som kan være tidkrevende og frustrerende [6] [9].

2. Falsk selvtillit og skjulte feil **

Overdreven hån kan føre til falsk tillit til kodenes pålitelighet. Ved å isolere komponenter med hån, kan du savne problemer i den virkelige verden som bare manifesterer seg når alle komponenter samhandler sammen. Dette kan føre til at feil blir oppdaget i produksjon i stedet for under testing, og undergraver formålet med å teste [1] [9].

3. Over-kompleksitet og vedlikeholdsutfordringer **

Det kan være utfordrende og tidkrevende å lage og vedlikeholde spotter, spesielt for komplekse systemer. Når systemet utvikler seg, kan det hende at hån må oppdateres ofte for å gjenspeile endringer i avhengigheter eller atferd, noe som kan være tungvint og utsatt for feil [9] [11].

4. Vanskeligheter med å verifisere atferd i den virkelige verden **

Å spotte alt kan gjøre det vanskelig å bekrefte hvordan systemet oppfører seg i scenarier i den virkelige verden. Integrasjonstester, som involverer færre spotter, er ofte bedre egnet for dette formålet. Over-avhengighet av hån kan føre til tester som ikke gjenspeiler nøyaktig interaksjoner i den virkelige verden [9] [11].

5. ineffektiv bruk av ressurser **

Overdreven hån kan føre til ineffektiv bruk av ressurser. Konfigurering av hån kan konsumere mer tid enn å skrive den faktiske testlogikken, spesielt i databasetunge eller komplekse systemer [2] [11]. Denne ineffektiviteten kan redusere utviklingsprosessen og øke testkostnadene.

6. Overlapping med integrasjonstester **

Når enhetstester dekker scenarier som også testes ved integrasjonstester uten hån, reiser det spørsmål om verdien som blir lagt til med disse enhetstestene. Integrasjonstester gir ofte mer omfattende dekning av systematferd uten behov for omfattende hån [2] [7].

7. Potensial for feil hånlig oppførsel **

Hvis hån ikke nøyaktig etterligner oppførselen til de virkelige gjenstandene de erstatter, kan testene bestå selv når det faktiske systemet vil mislykkes. Dette kan føre til en falsk følelse av sikkerhet og tapte feil [5] [9].

Oppsummert, mens hån kan være et nyttig verktøy i testing, kan overforbruk av det føre til sprø tester, falsk selvtillit og ineffektivitet. Det er avgjørende å bruke hånlig og vurdere alternativer som integrasjonstester når det er mulig.

Sitasjoner:
[1] https://cs-syd.eu/posts/2021-10-22-why-mocking-is-a-bad-idea
[2] https://softwareengineering.stackexchange.com/questions/454887/how-to-avoid-too-much-mocking-in-unit-tests-in-a-database-heavy-metod
[3] https://ryanclements.dev/posts/you-probable-dont-oed-mocking
[4] https://stackoverflow.com/questions/61793083/should-i-mock-very-single-dependencies-in-unit-testing
[5] https://softwareEngineering.stackexchange.com/questions/382087/how-s-xactly-should-unit-tests-be-be-written-without-mocking-vidstrengt
[6] https://pytest-with-eric.com/mocking/pytest-mommon-mocking-problems/
[7] https://www.reddit.com/r/typescript/comments/1ei9f4a/is_it_me_or_mocking_everthing_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-regins/
[11] https://vinted.engineering/2023/10/02/mocking-ramwork-downside/