Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Apa potensi jebakan mengejek segala sesuatu dalam tes


Apa potensi jebakan mengejek segala sesuatu dalam tes


Mengejek segala sesuatu dalam tes dapat menyebabkan beberapa jebakan potensial, yang dapat berdampak negatif terhadap efektivitas dan keandalan strategi pengujian Anda. Berikut adalah beberapa masalah utama yang terkait dengan mengejek yang berlebihan:

1. Tes rapuh dan kopling ketat **

Saat Anda mengejek setiap ketergantungan, tes Anda menjadi sangat erat dengan detail implementasi kode yang diuji. Ini berarti bahwa bahkan perubahan kecil dalam pekerjaan internal kode dapat merusak tes, bahkan jika perilaku eksternal tetap tidak berubah. Tes seperti itu rapuh dan membutuhkan pembaruan yang sering, yang dapat memakan waktu dan membuat frustrasi [6] [9].

2. Keyakinan palsu dan bug tersembunyi **

Mocking yang berlebihan dapat menyebabkan kepercayaan yang salah pada keandalan kode. Dengan mengisolasi komponen dengan tiruan, Anda mungkin kehilangan masalah dunia nyata yang hanya bermanifestasi ketika semua komponen berinteraksi bersama. Ini dapat mengakibatkan bug ditemukan dalam produksi daripada selama pengujian, merusak tujuan pengujian [1] [9].

3. Tantangan Kompleksitas dan Pemeliharaan yang berlebihan **

Membuat dan memelihara tiruan, terutama untuk sistem yang kompleks, dapat menjadi tantangan dan memakan waktu. Ketika sistem berkembang, tiruan mungkin perlu diperbarui sering untuk mencerminkan perubahan dependensi atau perilaku, yang dapat rumit dan rentan terhadap kesalahan [9] [11].

4. Kesulitan dalam memverifikasi perilaku dunia nyata **

Mocking semuanya dapat menyulitkan untuk memverifikasi bagaimana sistem berperilaku dalam skenario dunia nyata. Tes integrasi, yang melibatkan lebih sedikit tiruan, seringkali lebih cocok untuk tujuan ini. Kelebihan ejekan pada tiruan dapat menyebabkan tes yang tidak secara akurat mencerminkan interaksi dunia nyata [9] [11].

5. Penggunaan sumber daya yang tidak efisien **

Mocking yang berlebihan dapat menyebabkan penggunaan sumber daya yang tidak efisien. Mengkonfigurasi tiruan dapat mengkonsumsi lebih banyak waktu daripada menulis logika uji yang sebenarnya, terutama dalam sistem basis data atau kompleks [2] [11]. Ketidakefisienan ini dapat memperlambat proses pengembangan dan meningkatkan biaya pengujian.

6. Tumpang tindih dengan tes integrasi **

Ketika tes unit mencakup skenario yang juga diuji dengan tes integrasi tanpa ejekan, itu menimbulkan pertanyaan tentang nilai tambah dengan tes unit ini. Tes integrasi sering memberikan cakupan perilaku sistem yang lebih komprehensif tanpa perlu mengejek yang luas [2] [7].

7. Potensi untuk perilaku tiruan yang salah **

Jika ejek tidak secara akurat meniru perilaku objek nyata yang mereka ganti, tes dapat lulus bahkan ketika sistem yang sebenarnya akan gagal. Ini dapat menyebabkan rasa aman yang salah dan bug yang terlewatkan [5] [9].

Singkatnya, sementara mengejek dapat menjadi alat yang berguna dalam pengujian, penggunaan berlebihan itu dapat menyebabkan tes rapuh, kepercayaan diri palsu, dan ketidakefisienan. Sangat penting untuk menggunakan mengejek dengan bijak dan mempertimbangkan alternatif seperti tes integrasi bila memungkinkan.

Kutipan:
[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-method
[3] https://ryanclements.dev/posts/you-probable-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-hould-unit-tests-written-without-mocking-extensive
[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-hould-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-sdelside/