Apakah pengujian integrasi menggunakan tiruan?

24

Saat ini saya berada di kelas untuk pengujian perangkat lunak di mana untuk proyek semester kami, kami harus melakukan beberapa jenis pengujian di atasnya, seperti pengujian unit dan pengujian integrasi. Untuk pengujian integrasi, profesor mengatakan untuk menggunakan perpustakaan tiruan dan mengejek (seperti EasyMock dan Mockito) untuk pengujian integrasi kami. Tapi aku agak bingung. Pengujian integrasi adalah pengujian kelas luar, modul, layanan, dll. Mengapa ejekan dan stub layak digunakan dalam pengujian integrasi jika Anda menguji beberapa kelas dan layanan?

KodeLegend
sumber
8
Pengujian "Integrasi" dan "Unit" tidak disetujui secara universal. Yang terbaik adalah bertanya kepada profesor Anda bagaimana mereka mendefinisikan istilah-istilah itu.
RubberDuck
1
Hanya komentar. Tes integrasi bukan tentang menguji dependensi., Ini tentang menguji integrasi kode yang tepat dengan dependensi (panggilan, respons dan penanganan kesalahan, dll).
Laiv

Jawaban:

25

Jika Anda memiliki fungsi yang menyentuh beberapa komponen eksternal, Anda dapat mengejek semua kecuali satu untuk mengisolasi dan menguji komponen tertentu. Sebagai contoh, misalkan Anda memiliki fungsi yang memanggil layanan web dan kemudian melakukan sesuatu dengan database berdasarkan hasil. Anda dapat menulis tiga tes integrasi:

  1. tes yang mengolok-olok panggilan layanan web tetapi melibatkan konektivitas database nyata.
  2. sebuah tes yang membuat panggilan layanan web nyata tetapi menggunakan konektivitas database tiruan.
  3. tes yang membuat panggilan layanan web nyata dan melibatkan koneksi database nyata.

Jika Anda menjalankan ketiga tes dan 1 dan 3 gagal, ada kemungkinan besar bahwa mungkin ada bug dalam kode Anda yang bekerja dengan database, karena satu-satunya tes yang lulus adalah yang menggunakan konektivitas database tiruan.

Secara umum, tes integrasi tidak menggunakan tiruan, tetapi saya telah melakukan sesuatu seperti ini pada kesempatan.

FrustratedWithFormsDesigner
sumber