Proses penyebaran pengembangan yang gesit. Di mana tes QA dan Pemilik Bisnis?

9

Saya telah membaca banyak akhir-akhir ini tentang berbagai proses penyebaran aplikasi web menggunakan SVN atau GIT, dengan maksud untuk mendesain ulang bagaimana kami saat ini menyebarkan tempat saya bekerja.

Seperti halnya dengan banyak rasa Agile, diasumsikan bahwa apa pun yang berkomitmen untuk dikuasai atau bagasi sudah siap produksi. Baik GitHub dan Etsy, http://codeascraft.etsy.com/2010/05/20/quantum-of-deployment/ mengatakan bahwa mereka bekerja atas dasar ini (walaupun Etsy sebenarnya memiliki lingkungan pementasan).

Proses ini mengasumsikan semua tes unit dan uji CI telah dijalankan. Anda menjalankan tes secara lokal dan CI dan kemudian berkomitmen untuk trunk. JADI, pada titik ini kode Anda secara teknis bagus.

Kode Anda mungkin benar secara teknis, tetapi pengujian pengguna / fungsional dapat menemukan lebih banyak bug, terutama ketika datang ke pengujian ujung depan.

Pertanyaan saya adalah ini. Di mana pemilik QA dan Bisnis menguji perubahan fitur yang telah Anda terapkan? Pada mesin pengembangan lokal Anda sebelum Anda berkomitmen untuk trunk, atau pada mesin QA / staging?

Jika Anda memiliki mesin pementasan yang menjalankan trunk, dan Anda menganggap bahwa semua kode yang dikomit ke trunk adalah produksi siap ... eh .. maka pada titik mana kode ditandatangani dan bagus untuk masuk ke produksi dari kedua teknis dan bisnis perspektif? Jika Anda hanya memiliki satu mesin pementasan, banyak pengembang dan di situlah kode harus QA, maka bagaimana Anda dapat menggunakan dari bagasi karena banyak perubahan pengembang bisa menunggu keluar.

Saya tertarik mendengar bagaimana orang lain mendekati ini?

Bazza
sumber

Jawaban:

6

Untuk lebih baik atau lebih buruk, saya biasanya melihat ini dilakukan di mana pengujian dilakukan terhadap basis cabang dan penandatanganan bisnis adalah apa pos pemeriksaan adalah untuk bergabung dengan utama penyebaran.

Saya telah melihat ini dilakukan baik dengan pengembangan pada "main" dengan cabang "dikerahkan" terpisah atau cabang "fitur" pengembangan dengan utama sebagai "dikerahkan".

alur kerja akhirnya terlihat seperti ini:

  • kode sesuatu
  • jalankan tes lokal
  • check in ke kantor cabang
  • (opsional) build server membuat tes semut
  • QA / Pengujian bisnis
  • perbaikan bug (loop kembali ke atas)
  • bergabung untuk menggunakan cabang
  • menyebarkan

Beberapa orang bekerja dari satu cabang, tetapi jika Anda akan memiliki pengujian manual yang semakin sulit. Sebagian besar orang yang saya jumpai bekerja dengan asumsi bahwa apa pun dapat digunakan pada komit yang juga berfungsi di satu batang melakukan sesuatu yang kecil, atau memiliki sejumlah besar pengujian otomatis, ATAU mereka menganggap "menyebarkan" dalam percakapan ini untuk menjadi build ke server pengujian dan proses QA yang terjadi antara server pengujian dan produksi ditangani secara terpisah.

Tagihan
sumber
Terima kasih, Bill. Kami bekerja di lingkungan di mana para pengembang terus-menerus melakukan dan menggunakan bagian-bagian fungsionalitas terpisah untuk situs ini. Jika bekerja pada cabang fitur, setelah memeriksa di cabang kerja, di mana Anda melihat pengujian QA / Bisnis dilakukan? Jika Anda hanya memiliki satu mesin QA yang dikembangkan oleh para pengembang cabang, maka secara realistis hanya satu fitur yang dapat diuji pada satu waktu, kecuali Anda mungkin memiliki situs dan contoh terpisah dari server aplikasi yang diatur untuk setiap pengembang pada mesin QA, jadi ini adalah perubahan dapat diuji secara terpisah sebelum melakukan trunk.
Bazza
dalam pengalaman saya dengan ini biasanya kami tidak membuat cabang fitur terpisah untuk masing-masing dev, lebih seperti satu untuk setiap tim dan kami memang mengatur host qa untuk masing-masing bahkan jika itu hanya mesin dev tambahan.
Bill
Hargai komentarnya. Telah memberi saya beberapa ide.
Bazza
2

Kami memiliki tes penerimaan otomatis pada cabang fitur yang sama. Ketika Anda membuat kandidat rilis, itu termasuk tes otomatis yang Anda jalankan untuk melihat apakah fitur tersebut lolos. Anda juga menguji kandidat rilis. Ketika semuanya berlalu, Anda mempromosikannya kemudian dengan bergabung menjadi master.

Lebih lanjut tentang proses ini di sini:

https://plus.google.com/109096274754593704906/posts/R4qkeyRadLR

Lakukan checkout komentar juga.

Semoga ini membantu,

Adam

adymitruk
sumber
@ Adam - Terima kasih untuk itu, dan tautannya. Diskusi di sana menarik. Bahan untuk dipikirkan.
Bazza
0

Sebagai aturan umum, menunggu untuk melakukan sebelum kode sempurna adalah separuh waktu mengambil kembali keuntungan dari sistem kontrol versi. (Tanpa banyak perincian, saya akan mengatakan bahwa kecuali seseorang diperbolehkan multiple check-in ke VCS, seseorang tidak memiliki cara untuk mengembalikan pekerjaan saya sendiri!) Jadi sebagai praktik kami selalu meminta orang untuk tetap check-in (dalam cabang mereka untuk SVN atau dapat berupa komitmen lokal jika GIT) sebanyak yang mereka inginkan. Bahkan semakin banyak semakin baik.

Namun, ketika titik tiba di mana semuanya tampaknya dilakukan dan diuji - kami menyebutnya rilis dan kemudian digabung dengan trunk. Pada dasarnya, QA dapat mensertifikasi RC dengan mengambil check out baru di HEADcabang dan jika dia setuju, hal yang sama digabung kembali dengan trunk.

Jadi intinya kami menggunakan konsep task-branch atau private-branch sehingga orang bebas membuat lapor masuk sebanyak yang mereka butuhkan. Pada saat yang sama, bagasi relatif bebas dari semua check-in yang rusak .

Dipan Mehta
sumber