it-swarm-id.com

Apa yang dimaksud dengan tes integrasi?

Teman-teman saya dan saya telah berjuang untuk mengklasifikasikan dengan tepat apa itu tes integrasi.

Sekarang, dalam perjalanan pulang, saya baru menyadari, bahwa setiap kali saya mencoba memberikan contoh dunia nyata dari tes integrasi, ternyata menjadi tes penerimaan, yaitu. sesuatu yang akan diucapkan oleh pebisnis dengan jelas yang menjelaskan apa yang seharusnya diberikan oleh sistem.

Saya memeriksa Ruby pada Rails dokumentasi untuk klasifikasi mereka dari jenis pengujian ini, dan sekarang benar-benar membuat saya terlempar.

Bisakah Anda memberi saya deskripsi akademis singkat tentang tes integrasi dengan contoh dunia nyata?

116
Martin Blore

Saat ini saya menyukai pernyataan ini: "Tidak penting apa yang Anda sebut, tetapi apa fungsinya" dibuat oleh Gojko Adzic di artikel ini .

Anda benar-benar perlu menentukan dengan orang yang berbicara tentang tes apa yang ingin Anda uji.

Ada banyak orang yang memiliki pandangan berbeda, tergantung pada apa peran mereka.

Untuk penguji, metodologi tes yang berlaku umum di Belanda adalah TMap . TMap membuat perbedaan berikut.

  • unit test
  • uji integrasi unit
  • uji sistem
  • uji integrasi sistem
  • tes penerimaan (semua jenis/level)
  • uji penerimaan fungsional
  • tes penerimaan pengguna
  • tes penerimaan produksi

Mereka memiliki jenis tes yang lebih spesifik yang dapat dilakukan dalam tes yang disebutkan di atas. Lihatlah dokumen Word ini untuk ikhtisar.

Wikipedia juga memiliki Tinjauan bagus .

The book the pragmatic programmer mengatakan:

  • tes unit adalah tes yang melatih modul
  • tes integrasi menunjukkan bahwa bagian utama dari sistem bekerja dengan baik bersama-sama

Melihat sumber-sumber yang berbeda ini dan memasukkan beberapa pengalaman dan pendapat saya sendiri, saya akan mulai dengan membuat perbedaan berdasarkan tiga kategori

  • siapa yang melakukan pengujian secara umum
  • apa yang diuji
  • apa tujuan dari tes ini

    • Uji unit : tes logika di kelas oleh programmer untuk menunjukkan kebenaran tingkat kode. Mereka harus cepat dan tidak bergantung pada bagian lain dari sistem yang tidak ingin Anda uji
    • Tes penerimaan fungsional : skenario pengujian kasus penggunaan pada set data terbatas (dibuat khusus) yang dilakukan oleh departemen pengujian untuk menunjukkan bahwa setiap skenario yang ditentukan bekerja sebagaimana ditentukan.
    • Tes penerimaan pengguna : skenario pengujian use case ada di produksi seperti data yang dilakukan oleh perwakilan dari pengguna untuk membuat mereka secara resmi menerima aplikasi
    • Uji integrasi : Uji jalur komunikasi antara berbagai bagian modul yang dilakukan oleh departemen pengujian atau oleh pengembang untuk menunjukkan bahwa semua modul bekerja dengan benar bersama-sama.

Daftar saya di atas hanyalah permulaan dan saran tetapi saya benar-benar berpikir: "Tidak penting apa yang Anda sebut, tetapi apa artinya"

Semoga ini membantu.

26-10-2016 Sunting: Baru-baru ini pengantar yang sangat bagus ditempatkan di YouTube Tes unit vs Tes integrasi - Renungan MPJ - FunFunFunction # 55

81
KeesDijk

tes integrasi, ternyata menjadi tes penerimaan

Jelas sekali.

Keduanya hampir sama. Tetapi ada beberapa dimensi yang sedikit berbeda dengan definisi tes.

Integrasi == sistem secara keseluruhan.

Penerimaan == sistem secara keseluruhan.

Satu-satunya perbedaan - dan ini halus - adalah definisi dari kasus uji.

Integrasi == uji kasus untuk menguji kedalaman dan tingkat integrasi. Apakah ini berfungsi untuk semua kasing tepi dan kasing sudut? Kasus uji cenderung teknis, ditulis oleh desainer dan coders.

Penerimaan == kasus uji hanya untuk menjalankan 80% dari set fitur yang berfokus pada pengguna akhir. Tidak semua tepi dan sudut case. Kasus uji cenderung non-teknis, ditulis oleh pengguna akhir.

31
S.Lott

Saya pribadi suka menganggap tes integrasi sebagai ji fitur ketika setiap komponen sistem nyata, tidak ada benda tiruan.

Repositori nyata, basis data nyata, antarmuka nyata. Anda menguji fungsionalitas tertentu ketika sistem sepenuhnya dirakit dan seperti seharusnya saat dikerahkan.

16
user8685

Dalam sedikit pengalaman saya (saya akui), saya mengerti bahwa integrasi Word benar-benar dapat menciptakan kesalahpahaman: sungguh, sulit untuk menemukan sesuatu yang sepenuhnya terisolasi dalam suatu sistem, beberapa elemen pasti membutuhkan integrasi.

Jadi, saya terbiasa membuat perbedaan berikut:

  • Saya menggunakan nit test untuk mengidentifikasi, mendokumentasikan dan menekankan semua perilaku yang harus saya selesaikan oleh kelas yang saya uji.
  • Saya melakukan tes integrasi setiap kali saya memiliki komponen (mungkin lebih dari satu) di sistem saya yang sedang melakukan percakapan dengan sistem "eksternal" lainnya. (berlanjut di bawah ...)
  • Saya menerapkan tes penerimaan untuk mendefinisikan, mendokumentasikan dan menekankan alur kerja tertentu yang diharapkan oleh sistem.

Dalam definisi pengujian integrasi, dengan eksternal yang saya maksudkan sistem yang berada di luar --- rentang pengembangan: Saya tidak dapat langsung mengubah cara mereka berperilaku, karena alasan apa pun. Ini bisa berupa pustaka, komponen sistem yang tidak dapat diubah (yaitu dibagi dengan proyek lain di perusahaan), sebuah dbms, dll. Untuk tes ini saya perlu mengatur sesuatu yang sangat mirip dengan lingkungan nyata sistem akan bekerja di: sistem eksternal harus diinisialisasi dan diatur ke keadaan tertentu; data realistis harus terdaftar di db; dll.

Sebaliknya, ketika saya melakukan pengujian penerimaan, saya pals hal: Saya mengerjakan sesuatu yang berbeda, saya mengerjakan spesifikasi sistem, bukan pada kemampuannya untuk berkolaborasi dengan entitas eksternal.

Ini benar-benar pandangan yang lebih sempit dibandingkan dengan apa yang dijelaskan KeesDijk sebelumnya, namun saya kira proyek yang saya kerjakan sampai sekarang cukup kecil untuk membuat saya tingkat penyederhanaan ini.

8
Marco Ciambrone

Tes integrasi memverifikasi bahwa komponen sistem yang kompleks (mis. Perangkat lunak, pesawat terbang, pembangkit listrik) bekerja sama seperti yang dirancang.

Bayangkan kita berbicara tentang pesawat terbang (dengan perangkat lunak lebih abstrak, dan sulit untuk membuat perbedaan). Tes integrasi meliputi, memverifikasi:

  • interaksi yang benar antara beberapa komponen. Contoh: ketika menekan tombol start, mesin hidup dan baling-baling mencapai kecepatan rotasi yang diharapkan (pesawat masih tetap di darat)
  • interaksi yang benar dengan komponen eksternal. Contoh: periksa apakah radio tertanam dapat berkomunikasi dengan radio stasioner (pesawat masih di darat)
  • interaksi yang benar antara semua komponen yang terlibat, sehingga sistem secara keseluruhan berfungsi seperti yang diharapkan. Contoh: awak pilot uji coba dan insinyur memulai pesawat, dan terbang bersamanya (mereka semua memakai parasut ...).

Tes integrasi membahas masalah teknis , yaitu bahwa sistem berfungsi meskipun pembagiannya menjadi komponen. Dalam perangkat lunak komponen dapat menggunakan kasing, modul, fungsi, antarmuka, perpustakaan, dll ...

Tes penerimaan memverifikasi bahwa produk tersebut sesuai untuk tujuan. Mereka pada prinsipnya dilakukan oleh pelanggan. Mengambil analogi pesawat, mereka termasuk memverifikasi bahwa:

  • skenario bisnis yang dibayangkan mengarah pada hasil yang diharapkan dalam situasi yang hampir nyata. Contoh: berlatih naik dengan penumpang uji untuk memeriksa bahwa staf dapat memantau naik seperti yang diharapkan dengan prosedur operasi. Beberapa skenario bisa sangat sederhana sehingga akan terlihat seperti unit test, tetapi dilakukan oleh pengguna (mis. Coba colokan listrik dengan peralatan perusahaan).
  • sistem bekerja dalam situasi bisnis yang hampir nyata. Contoh: buat uji terbang kosong antara dua tujuan sebenarnya, dengan pilot yang baru dilatih dari maskapai untuk memeriksa konsumsi bahan bakar yang dijanjikan.

Tes penerimaan membahas lebih banyak masalah tanggung jawab . Dalam hubungan klien/pemasok itu bisa menjadi tanggung jawab kontraktual (kepatuhan dengan semua persyaratan). Tetapi bagaimanapun juga itu adalah tanggung jawab organisasi yang menggunakan untuk memastikan bahwa tugas mereka dapat dijalankan dengan sistem dan untuk mencegah masalah yang tidak terduga (misalnya seperti perusahaan kereta api ini yang menemukan selama tes penerimaan bahwa mereka harus mempersingkat quais karena gerbong baru 5 cm terlalu besar - jangan bercanda!).

Kesimpulan: Tes integrasi dan penerimaan tumpang tindih. Mereka berdua bermaksud menunjukkan bahwa sistem secara keseluruhan berfungsi. Namun "keseluruhan" bisa lebih besar untuk pelanggan (karena sistem itu sendiri dapat menjadi bagian dari sistem organisasi yang lebih besar), dan lebih teknis untuk integrator sistem:

enter image description here

7
Christophe

Pengujian integrasi tidak lain adalah mengecek koneksi dan kebenaran aliran data antara dua modul.

Sebagai Contoh: Ketika kami menulis email (satu modul) dan mengirimkannya ke beberapa ID pengguna yang valid (modul kedua), pengujian integrasi adalah untuk memeriksa apakah email yang dikirim ada di item yang dikirim.

1
Anita

Satu praktis definisi dari tes integrasi adalah: Setiap tes yang membutuhkan interaksi dengan sesuatu di luar proses.

Sebagai contoh:

  • Sistem file
  • Jaringan
  • Database
  • API eksternal

Ada semacam kontrak antara proses Anda dan dunia eksternal, dan minimal memverifikasi bahwa kontrak harus menjadi tujuan dari tes integrasi. yaitu harus melakukan tidak lebih dari memverifikasi kontrak. Jika ya maka Anda bergerak menuju ruang sistem/ujung ke ujung.

Tes unit dapat menguji semua logika dalam batas proses Anda, dan mereka dapat melakukannya dengan mudah tepat karena kurangnya ketergantungan pada lambat/rapuh/"dunia luar" yang rumit.

Sementara ada tes integrasi definisi ini tidak mencakup (karenanya mengapa saya menyebutnya definisi praktis ) Saya pikir mereka jauh kurang umum/berguna.

N.B. Sebenarnya, ya definisi ini akan mencakup pengujian sistem/end-to-end juga. Dalam filosofi saya mereka adalah bentuk uji integrasi 'ekstrem', karenanya mengapa nama mereka menekankan aspek lain. Di arah lain, tes unit dapat dianggap sebagai tes integrasi komponen nol yaitu Semua tes dapat dianggap berada di suatu tempat pada spektrum integrasi, mengintegrasikan antara komponen 0-n :-)

0
Schneider