Asumsikan bahwa kami sedang mengembangkan aplikasi web, dan Hudson melakukan pekerjaan yang khas seperti kompilasi, uji unit dan analisis kode statis.
Tetapi bagian yang sulit adalah: Hudson menyebarkan dan memulai server aplikasi untuk melakukan tes integrasi , setelah pekerjaan sebelumnya selesai.
Itu berarti beberapa hal yang sulit, seperti koneksi database, koneksi aplikasi bagian ke-3, mendengarkan port soket, variabel lingkungan, server memulai kegagalan penyerahan, dll. Kita harus mengatur dan meruntuhkan hal-hal ini dengan benar setiap kali, itu hal yang sulit. Lebih buruk lagi, tes integrasi dapat mematahkan tes integrasi dengan mudah.
Apakah Anda berpikir jika tes integrasi harus dimasukkan dalam integrasi berkelanjutan (CI)? Bisakah itu secara manual? Atau menyederhanakan tes integrasi?
sumber
Jawaban:
nama Integrasi Berkelanjutan mengatakan banyak hal. Tempat apa yang lebih baik untuk melakukan pengujian integrasi daripada di mana Anda sudah mengintegrasikan?
Tentu saja itu seharusnya bukan satu-satunya tempat tes itu berlangsung, ketika mengembangkan Anda harus mencoba untuk memastikan bahwa Anda tidak merusak semuanya, bukan hanya bahwa perubahan Anda bekerja secara terpisah.
Pada akhirnya, itu adalah tanggung jawab setiap anggota tim bahwa segala sesuatunya tidak rusak, mencoba untuk menyalahkan dan secara tegas mendefinisikan orang atau tahapan-tahapan di mana pengujian dibatasi adalah kontra-produktif.
sumber
Jika Anda memiliki tes integrasi yang lulus, dan tidak mengharuskan seseorang untuk benar-benar berdiri di sana dan menekan tombol, maka ya - Anda harus menambahkannya ke sistem CI.
Tetapi, karena tes integrasi dapat berlangsung sangat lama untuk dijalankan, Anda harus membatasi seberapa sering mereka dijalankan. Mereka dapat dieksekusi pada malam hari, ketika server CI idle.
sumber
Untuk pertama-tama menjawab pertanyaan Anda: Ya, mereka jelas merupakan bagian dari Integrasi Berkelanjutan jika Anda bertanya kepada saya. Tapi saya pikir kita perlu mengklarifikasi apa itu tes integrasi.
Martin Fowler berbicara tentang pengiriman kontinu sebagai cara untuk mengotomatisasi proses pembuatan lengkap untuk digunakan secara cepat. Ini mengharuskan pengembang untuk mendapatkan umpan balik cepat yang disediakan oleh proses Integrasi Berkelanjutan. Jadi dia mendefinisikan tahapan-tahapan yang harus dilalui oleh bangunan :
Komit build tidak boleh lebih dari 10 menit, katanya, karena umpan balik yang cepat untuk pengembang.
Inilah cara saya melihat sesuatu: Pada langkah pertama, ambil komit terbaru dan bangun. Jika ini berhasil, Anda menjalankan tes unit Anda untuk mengetahui apakah kelas / grup kelas Anda berfungsi sebagaimana ditentukan dan diharapkan.
Ketika ini berhasil, Anda sampai ke bagian tes integrasi. Di sini Anda menguji interaksi unit yang baru saja diuji. Ini melibatkan memberi makan unit dengan input dan mengawasi status / interaksi / output mereka. Ingatlah bahwa kami masih dalam komit, jadi kami ingin ini juga cepat. Jadi interaksi dengan sistem file, database, rekan-rekan jaringan dan sejenisnya harus mematikan untuk eksekusi cepat. Martin Fowler juga mengisyaratkan penggunaan in-memory-databases jika Anda membutuhkannya, hanya untuk menjaga eksekusi pada server CI cepat.
Setelah Anda memastikan bahwa unit bekerja dan berinteraksi sesuai kebutuhan, Anda biasanya ingin mengetahui tentang cakupan pengujian (hanya menguji subsistem kecil biasanya tidak cukup) dan membuat artefak yang diuji tersedia untuk pengujian fungsional / QA / penyebaran ( baca: pengujian menyeluruh) jika menurut Anda tes cukup untuk menutupi program Anda. Saat itu, Anda menyediakan lingkungan pengujian yang mencerminkan lingkungan produksi yang Anda targetkan dan menjalankan tes yang melibatkan database nyata, file nyata, rekan jaringan nyata, dll.
Pada akhirnya, tes integrasi adalah tentang perubahan kode. Anda ingin memastikan bahwa perubahan yang Anda lakukan tidak merusak sistem saat ini, yang berarti mereka terintegrasi dengan baik. Untuk mengetahui apakah mereka, Anda perlu memastikan bahwa mereka berperilaku benar dalam diri mereka sendiri, kemudian jika mereka berinteraksi dengan benar dengan dependensi mereka, dan jika mereka diuji sama sekali. Anda bisa tenang percaya diri tentang sistem Anda setelah Anda lulus semua tes.
Jika tahap selanjutnya menemukan masalah dengan program Anda (seperti ketika database Anda mengembalikan nilai tertentu, koneksi jaringan Anda akan berhenti), Anda harus mencoba untuk mendapatkan tes ini terhapus dalam tes integrasi. Komit build kemungkinan besar lebih cepat daripada QA;)
sumber