Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Aké sú potenciálne nástrahy zosmiešňovania všetkého v teste


Aké sú potenciálne nástrahy zosmiešňovania všetkého v teste


Posmievanie všetkého v testoch môže viesť k niekoľkým potenciálnym úskaliam, čo môže mať negatívny vplyv na efektívnosť a spoľahlivosť vašej testovacej stratégie. Tu sú niektoré z kľúčových problémov spojených s nadmerným zosmiešňovaním:

1. Krehké testy a tesné spojenie **

Keď zosmiešňujete každú závislosť, vaše testy sú pevne spojené s podrobnosťami o vykonávaní vykonávaného kódu. To znamená, že dokonca aj menšie zmeny vo vnútorných funkciách kódu môžu prerušiť testy, aj keď vonkajšie správanie zostáva nezmenené. Takéto testy sú krehké a vyžadujú časté aktualizácie, ktoré môžu byť časovo náročné a frustrujúce [6] [9].

2. Falošná dôvera a skryté chyby **

Nadmerné výsmech môže viesť k falošnej dôvere v spoľahlivosť kódu. Izolovaním komponentov s falošnými by ste mohli vynechať problémy v reálnom svete, ktoré sa prejavujú iba vtedy, keď všetky komponenty interagujú spolu. To môže mať za následok, že sa objavia chyby vo výrobe, a nie počas testovania, čo oslabuje účel testovania [1] [9].

3. Výzvy nadmernej komplexnosti a údržby **

Vytváranie a udržiavanie falošných látok, najmä pre zložité systémy, môže byť náročné a časovo náročné. Ako sa systém vyvíja, môže byť potrebné, aby sa falošné falošky často aktualizovali, aby odrážali zmeny v závislosti alebo správaní, ktoré môžu byť ťažkopádne a náchylné k chybám [9] [11].

4. Obtiažnosť pri overovaní správania v reálnom svete **

Posmievanie všetkého môže sťažiť overenie toho, ako sa systém správa v reálnom svete. Testy integrácie, ktoré zahŕňajú menej falošných, sú na tento účel často vhodnejšie. Nadmerné spoliehanie sa na falošné môže viesť k testom, ktoré presne neodrážajú interakcie v reálnom svete [9] [11].

5. Neefektívne využívanie zdrojov **

Nadmerné výsmech môže viesť k neefektívnemu využívaniu zdrojov. Konfigurácia Mocks môže konzumovať viac času ako písanie skutočnej logiky testov, najmä v databázových alebo komplexných systémoch [2] [11]. Táto neefektívnosť môže spomaliť proces vývoja a zvýšiť náklady na testovanie.

6. Prekryte sa s integračnými testami **

Keď testy jednotiek pokrývajú scenáre, ktoré sú testované aj pomocou testov integrácie bez falošných, vyvoláva otázky týkajúce sa hodnoty pridanej týmito jednotkovými testami. Integračné testy často poskytujú komplexnejšie pokrytie správania systému bez potreby rozsiahleho zosmiešňovania [2] [7].

7. Potenciál pre nesprávne falošné správanie **

Ak falošky presne nepodávajú správanie skutočných objektov, ktoré nahrádzajú, testy môžu prejsť, aj keď by skutočný systém zlyhal. To môže viesť k falošnému pocitu bezpečnosti a zmeškaným chybám [5] [9].

Stručne povedané, zatiaľ čo výsmech môže byť užitočným nástrojom pri testovaní, nadmerné použitie môže viesť k krehkým testom, falošnej dôvery a neefektívnosti. Je nevyhnutné používať uvážlivo zosmiešňovanie a zvážiť alternatívy, ako je integračné testy, ak je to možné.

Citácie:
[1] https://cs-syd.eu/posts/2021-10-22-hhy-Mocking-is-a-bad-idea
[2] https://softwareEngineering.stackexchange.com/questions/454887/how-to-avoid-too-mo-much-Mocking-in-init-init-tests-in-atabase-haabase-heavy-methody
[3] https://ryanclements.dev/posts/you-probable-dont-need-mocking
[4] https://stackoverflow.com/questions/61793083/should-i-mock-every-single-dependencies-in-in-unit-testing
[5] https://softwareEngineering.stackexchange.com/questions/382087/how-exactly-should-unit-Teststs----written-without-Mocking-extenslyvely
[6] https://pystest-with-eric.com/Mocking/Pytest-common-mocking-problems/
[7] https://www.reddit.com/r/typescript/comments/1ei9f4a/IS_IT_ME_OR_MOCKING_EVERYTING_EVERYWONE_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-wides/