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 dokumentasi Ruby on Rails untuk klasifikasi jenis pengujian ini, dan sekarang saya benar-benar terlempar.
Bisakah Anda memberi saya deskripsi akademis singkat tentang tes integrasi dengan contoh dunia nyata?
Jawaban:
Saat ini saya menyukai pernyataan ini: "Tidak penting apa yang Anda sebut, tetapi apa fungsinya" dibuat oleh Gojko Adzic dalam 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.
Mereka memiliki jenis tes yang lebih spesifik yang dapat dilakukan dalam tes yang disebutkan di atas. Lihatlah kata doc ini untuk ikhtisar.
Wikipedia juga memiliki ikhtisar yang bagus .
The buku programmer pragmatis mengatakan:
Melihat berbagai sumber ini dan memasukkan beberapa pengalaman dan pendapat saya sendiri, saya akan mulai dengan membuat perbedaan berdasarkan tiga kategori
apa tujuan dari tes ini
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 pada tes Unit YouTube vs tes Integrasi - Renungan MPJ - FunFunFunction # 55
sumber
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 bekerja 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 kasing tepi dan sudut. Kasus uji cenderung non-teknis, ditulis oleh pengguna akhir.
sumber
Saya pribadi suka menganggap tes integrasi sebagai tes fitur ketika setiap komponen sistem adalah nyata , tidak ada benda tiruan.
Repositori nyata, basis data nyata, antarmuka nyata. Anda menguji fungsionalitas tertentu ketika sistem sepenuhnya dirakit dan seperti seharusnya saat digunakan.
sumber
Dalam sedikit pengalaman saya (saya akui), saya mengerti bahwa kata integrasi benar-benar dapat menciptakan kesalahpahaman: sungguh, sulit untuk menemukan sesuatu yang sepenuhnya terisolasi dalam suatu sistem, beberapa elemen pasti memerlukan integrasi.
Jadi, saya terbiasa membuat perbedaan berikut:
Dalam definisi uji integrasi, yang saya maksud adalah sistem eksternal yang berada di luar jangkauan pengembangan saya : Saya tidak dapat segera mengubah cara mereka berperilaku, karena alasan apa pun. Ini bisa berupa perpustakaan, komponen sistem yang tidak dapat diubah (yaitu dibagikan 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 didaftarkan di db; dll.
Sebaliknya, ketika saya melakukan pengujian penerimaan, saya memalsukan hal-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.
sumber
Tes integrasi memverifikasi bahwa komponen-komponen sistem yang kompleks (misalnya perangkat lunak, pesawat terbang, pembangkit listrik) bekerja bersama sebagaimana dirancang.
Mari kita bayangkan kita berbicara tentang pesawat terbang (dengan perangkat lunak lebih abstrak, dan sulit untuk membuat perbedaan). Tes integrasi meliputi, memverifikasi:
The uji integrasi membahas masalah teknis , yaitu bahwa sistem bekerja meskipun subdivisi ke dalam komponen. Dalam perangkat lunak komponen dapat menggunakan kasing, modul, fungsi, antarmuka, perpustakaan, dll ...
The tes penerimaan memverifikasi bahwa produk ini cocok untuk tujuan. Mereka pada prinsipnya dilakukan oleh pelanggan. Mengambil analogi pesawat, mereka termasuk memverifikasi bahwa:
The tes penerimaan membahas lebih 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 itu 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:
sumber
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.
sumber
Salah satu definisi praktis dari tes integrasi adalah: Setiap tes yang memerlukan interaksi dengan sesuatu di luar proses.
Sebagai contoh:
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.
Unit test dapat menguji semua logika dalam batas proses Anda, dan mereka dapat melakukannya dengan mudah justru karena kurangnya ketergantungan pada lambat / rapuh / kompleks "dunia luar".
Sementara ada tes integrasi definisi ini tidak mencakup (karenanya mengapa saya menyebutnya definisi praktis ) Saya pikir mereka jauh lebih umum / berguna.
NB Sebenarnya, ya definisi ini akan mencakup pengujian sistem / ujung-ke-ujung 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 :-)
sumber