Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Hvad er de potentielle faldgruber ved at spotte alt i en test


Hvad er de potentielle faldgruber ved at spotte alt i en test


At spotte alt i test kan føre til adskillige potentielle faldgruber, hvilket kan have negativ indflydelse på effektiviteten og pålideligheden af ​​din teststrategi. Her er nogle af de vigtigste spørgsmål, der er forbundet med overdreven hån:

1. sprøde test og stram kobling **

Når du håner enhver afhængighed, bliver dine test tæt sammen med implementeringsdetaljerne for koden, der er testet. Dette betyder, at selv mindre ændringer i kodens interne arbejde kan bryde testene, selvom den eksterne opførsel forbliver uændret. Sådanne tests er sprøde og kræver hyppige opdateringer, som kan være tidskrævende og frustrerende [6] [9].

2. falsk selvtillid og skjulte bugs **

Overdreven hån kan føre til falsk tillid til kodens pålidelighed. Ved at isolere komponenter med spotter kan du gå glip af problemer i den virkelige verden, der kun manifesterer sig, når alle komponenter interagerer sammen. Dette kan resultere i, at fejl opdages i produktionen snarere end under test, undergravet formålet med test [1] [9].

3. Over-kompleksitet og vedligeholdelsesudfordringer **

Oprettelse og vedligeholdelse af mocks, især for komplekse systemer, kan være udfordrende og tidskrævende. Efterhånden som systemet udvikler sig, kan det være nødvendigt at opdateres mocks for at afspejle ændringer i afhængigheder eller opførsel, som kan være besværlige og tilbøjelige til fejl [9] [11].

4. Sværhedsgrad ved at verificere opførsel i den virkelige verden **

At spotte alt kan gøre det vanskeligt at verificere, hvordan systemet opfører sig i den virkelige verdensscenarier. Integrationstest, der involverer færre spot, er ofte bedre egnet til dette formål. Over-afhængighed af spotter kan føre til test, der ikke nøjagtigt afspejler interaktion i den virkelige verden [9] [11].

5. Ineffektiv brug af ressourcer **

Overdreven hån kan føre til ineffektiv brug af ressourcer. Konfiguration af mocks kan forbruge mere tid end at skrive den faktiske testlogik, især i databasetunge eller komplekse systemer [2] [11]. Denne ineffektivitet kan bremse udviklingsprocessen og øge testomkostningerne.

6. Overlap med integrationstests **

Når enhedstest dækker scenarier, der også testes ved integrationstest uden spot, rejser det spørgsmål om værditilvækst ved disse enhedstest. Integrationstest giver ofte mere omfattende dækning af systemadfærd uden behov for omfattende hån [2] [7].

7. Potentiale for forkert spotopførsel **

Hvis mocks ikke nøjagtigt efterligner opførslen af ​​de virkelige objekter, de erstatter, kan test bestå, selv når det faktiske system ville mislykkes. Dette kan føre til en falsk følelse af sikkerhed og ubesvarede bugs [5] [9].

Sammenfattende, mens hån kan være et nyttigt værktøj til test, kan det føre til sprøde test, falsk selvtillid og ineffektivitet. Det er vigtigt at bruge spottende fornuftigt og overveje alternativer som integrationstest, når det er muligt.

Citater:
[1] https://cs-syd.eu/posts/2021-10-22-why-mocking-is-a-bad-idea
)
[3] https://ryanclements.dev/posts/you- sandsynligvis-dont-need-mocking
)
)
[6] https://pytest-with-ic.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/