Deployment
Semua proses yang terlibat dalam pengadaan software atau hardware sehingga dapat berjalan dengan benar di suatu environment, termasuk instalasi, konfigurasi, menjalankan, pengujian, dan membuat suatu perubahan yang diperlukan disebut juga dengan proses Deployment.
Dalam software development, deployment merupakan kegiatan yang bertujuan untuk menyebarkan/mempublish aplikasi yang telah dikerjakan oleh developer. Sebelumnya aplikasi hanya dapat dijalankan di personal device si programmer saja, namun sekarang dapat diakses orang lain. Jadi singkatnya, Software Deployment adalah semua aktivitas yang membuat sistem perangkat lunak tersedia untuk bisa digunakan.
Model Deployment
Ada 3 tingkatan model yang paling umum digunakan, terkadang 4 tingkatan jika organisasi atau perusahaan memiliki budget yang lebih banyak.
- DEV – Dev Environment adalah environment yang dibuat dan dikelola oleh development team untuk menulis kode bersama. Akses untuk environment ini hanya diberikan kepada development team. Biasanya tim QA tidak memiliki akses ke environment ini. Dev environmentsebagian besar digunakan oleh tim Dev untuk pengujian unit mereka.
- Testing– Testing Environment biasanya disebut juga sebagai QA Environment merupakan environment dimana pengujian dilaksanakan. Environment ini dimiliki oleh tim QA. Tim DEV biasanya tidak perlu mengakses ke environment ini kecuali jika memaang ada hal-hal yang perlu dikonfirmasi. Setelah desain dan pengkodean selesai, kode dipindahkan ke Testing Environment untuk tim QA untuk melakukan eksekusi pengujian.
- Staging – Staging Environment merupakan environment dimana pengujian dilakukan oleh pengguna bisnis. Ini dilakukan setelah pengujian sistem selesai. Tujuan utamanya adalah untuk menguji sistem dari sudut pandang bisnis. Akses ke lingkungan ini hanya diberikan kepada pengguna bisnis. Namun, pada beberapa kesempatan mereka mencari bantuan QA, dalam keadaan seperti itu, tim QA diberikan akses sementara ke Staging Environment. Namun pada praktiknya, terutama perusahaan yang hanya menggunakan 3 tingkatan model deployment, Staging adalah environment dimana semua pengujian dilakukan, baik pengujian internal maupun pengujian eksternal.
- PROD – Production Environment adalah live environment aktual yang diekspos ke end user atau real user dan tidak ada tim DEV dan QA yang memiliki akses ke environment ini. Tim Support yang biasanya ditugaskan untuk memecahkan masalah yang terkait dengan Production Environment.
Apa perbedaan Build dan Deployment?
Sebuah build terutama berisi paket-paket yang dikompilasi. Tim developer membuat build dan menyediakannya kepada tim deployment untuk penginstalan. Kompilasi kode sumber sebagian besar ditangani oleh tim developer dan setelah mereka membuat build, mereka menempatkannya di beberapa lokasi tertentu yang dapat diakses oleh tim deployment untuk dideploy ke environment yang berbeda. Setelah build di-deploy, tim QA diberi tahu untuk melakukan smoke testing dan jika berhasil, tim akan melakukan pengujian black box lainnya.
Deployment adalah proses dimana kode/build dipindahkan dari satu environment ke environment lain. Sebagian besar organisasi saat ini memiliki tim terpisah yang menangani semua ini, biasa disebut juga dengan tim infrastruktur atau DevOps.
Sebelum hari deployment, tim developer, manajer developer, teknisi deployment, prospek pengujian, dan pemangku kepentingan bisnis lainnya bertemu. Dalam pertemuan tersebut, developer biasanya diminta untuk menjelaskan perubahan yang akan dilakukan. Mereka biasanya perlu mengisi formulir tertentu dengan rincian tentang perubahan dan rencana pengembalian.
Jika beberapa detail terlewatkan, perubahan tidak akan disetujui untuk dideploy. Tim kemudian memutuskan apakah perubahan tersebut dapat menjadi bagian dari implementasi hari berikutnya. Tim QA dimintai persetujuan untuk memastikan bahwa perubahan tidak akan mempengaruhi pengujian yang ada. Dalam pertemuan tersebut, proses deployment akhir direncanakan.
Mengapa penting bagi QA untuk mengetahui proses Deployment?
Tugas utama eksekusi pengujian bergantung pada seberapa sukses deployment. Jika tim deployment menghadapi tantangan dan mengalami beberapa masalah dan tidak dapat menerapkan kode dengan benar, maka bisa dipastikan tim QA akan mengidentifikasi banyak bug yang mungkin terkait dengan environment atau proses deployment. Sangat penting untuk Quality Assurance memahami proses deployment dikarenakan:
- QA akan memahami pentingnya menyelesaikan tugas dalam jangka waktu yang direncanakan.
- Menganalisa apakah issue yang ditemukan benar-benar bug fungsionalitas atau sesuatu yang disebabkan selama deployment. Sebagai contoh QA ditugaskan untuk menguji fitur laporan tetapi ketika dia mencoba masuk ke situs web, QA melihat kesalahan yang berarti environment sedang tidak aktif, masalah tersebut tidak dapat dianggap sebagai masalah fungsional tetapi sebagai environment issue.
- Banyak non-issue yang dapat dihindari jika QA benar-benar mengetahui daftar fitur yang dideploy. Terkadang QA bisa menguji dan melaporkan masalah untuk scope yang tidak terhubung dengan fitur yang sedang di deploy.
Sebelum Deployment
Seluruh fase desain pengujian berlangsung sebelum kode benar-benar dipindahkan ke environment. Eksekusi pengujian yang bergantung pada ketersediaan kode di testing environment sementara tim Deployment bekerja untuk mendeploy kode ke environment, tim QA harus memastikan telah menyelesaikan aktivitas di bawah ini
- Pastikan test scenarios dan test cases telah ditinjau dan disetujui
- Pastikan tim QA tersedia dan perencanaan sumber daya telah selesai
- Pastikan kebutuhan data uji telah diidentifikasi
Setelah Deployment
Setelah deployment, hal pertama yang perlu dilakukan sebagai tim QA adalah memulai Smoke dan Sanity Testing. Tetapi sebelum itu, tim QA harus memastikan bahwa hal-hal berikut telah diperhatikan:
- Tim QA seharusnya telah menerima pemberitahuan dari tim deployment tentang deployment yang berhasil dan siap untuk dilakukan pengujian.
- Tim QA harus melacak dan mengidentifikasi build yang dideploy.
- Pastikan tim QA memiliki daftar perubahan yang berhasil dideploy dan juga fitur atau item yang tidak dideploy meskipun sudah direncanakan. Mungkin saja tim deployment tidak dapat mendeploy karena detail yang hilang, dll.
Planned vs Emergency Deployment
Setiap Organisasi atau perusahaan biasanya memiliki jadwal deployment. Banyak client yang mengikuti proses deployment sekali dalam seminggu atau dua mingguan. Contoh penjadwalan deployment adalah deployment seharusnya dilaksanakan hanya pada hari Selasa atau mungkin dilaksanakan pada hari Selasa dan Jumat. Hari deployment dapat berubah jika hari yang direncanakan untuk deployment jatuh pada hari libur. Misal jadwal deployment adalah hari Jumat bertepatan dengan hari libur nasional, maka biasanya deployment akan dimajukan ke hari Kamis.
Deployment yang direncanakan dapat memiliki tantangannya sendiri. Namun coba kita renungkan sebuah kasus, di mana kode baru dideploy ke environment QA dan selama pengujian, tim mengidentifikasi bug yang mengakibatkan sistem terblokir atau crash dan pengujian harus dihentikan.
Untuk menangani situasi seperti tersebut, perbaikan darurat dan deployment dapat dilakukan dengan segera dimana tim deployment tidak perlu menunggu hingga hari deployment berikutnya. Tim development biasanya memang perlu mengikuti proses administrasi dan meminta persetujuan dari manajer atau pihak yang akan bertanggung jawab, namun untuk deployment darurat persetujuan ini biasanya bisa didapatkan dengan cepat, dan perubahan baru dapat diterapkan ke environment QA pada hari yang sama atau sesegera mungkin.
Materi QA:
Sumber
Komentar
Posting Komentar