Apakah membuat perubahan kecil, mengujinya, lalu "membilas dan mengulangi", kebiasaan buruk?

54

Saya seorang programmer dengan sejumlah tahun pengalaman. Saya menyadari saya punya kebiasaan tertentu. Saya tidak yakin apakah itu benar-benar kebiasaan buruk atau tidak.

Saya mendapatkan daftar tugas yang harus dilakukan untuk solusi, bahkan tugas kecil kecil, misalnya,

  1. Ubah sumber daya dari kontrol pengguna ini
  2. Ubah ukuran yang lain
  3. Tambahkan beberapa HTML dan koding pada kontrol pengguna lain

Semua tugas ini kecil. Maksud saya mereka dapat dilakukan dalam waktu 10 menit, tetapi saya memiliki kebiasaan buruk membuat perubahan kecil dan kemudian mengujinya berulang kali di browser web . Apakah ini praktik yang baik?

Atau haruskah saya melakukan semuanya sekaligus dan kemudian mengujinya bersama?

Jika ini benar-benar kebiasaan buruk maka bagaimana cara memperbaikinya, karena rasanya seperti membuang-buang waktu menguji perubahan kecil berulang kali?

Matematika
sumber
3
@gnat jawaban teratas Anda adalah berbasis opini juga - programmers.stackexchange.com/questions/154733/... Setiap jawaban yang saya baca memberikan pendapat di sana sendiri, ada komentar?
Matematika
2
Bukan itu. bagaimana dengan jawaban tertinggi kedua Anda - programmers.stackexchange.com/questions/159964/... - bukankah itu juga berdasarkan opini?
Matematika
7
Pendekatannya mirip dengan Test Driven Development tempat Anda membuat tes, membuat perubahan yang diperlukan untuk lulus tes, lalu jalankan tes Anda. Saat Anda mengulangi ini untuk pengujian kedua, pengujian kedua Anda akan menyertakan yang pertama; Anda akan menguji ulang berulang kali untuk membuktikannya masih berfungsi, tetapi ini otomatis.
Kevin Hogg
5
Saya akan mengatakan bahwa kebalikan dari kebiasaan itu, membuat banyak perubahan dan hanya kemudian mengujinya, adalah kebiasaan buruk.
Chris B. Behrens

Jawaban:

130
  • Ini latihan yang bagus.
  • Anda mengikuti metode ilmiah.
  • Jika Anda mengubah beberapa hal sebelum pengujian apa pun, maka pengujian masing-masing akan lebih sulit, dan mungkin tidak dapat diandalkan, karena prasyarat akan lebih sulit untuk dipersiapkan dan perubahan yang berbeda dapat berinteraksi satu sama lain dalam perilaku yang tidak Anda lihat sebelumnya.
  • Saat Anda merasa "terbuang" sekarang, Anda akan mendapatkan kembali nanti dalam tahap intregrasi, pengujian, dan pemeliharaan.
  • Jalan untuk pergi.
Tulains Córdova
sumber
9
AFAIK, untuk pemrograman UI, ini bukan hanya praktik yang baik, ini adalah satu-satunya praktik yang dapat diterima. Itu sebabnya perusahaan perangkat lunak menciptakan begitu banyak What you see is what you getalat untuk pengembang yang bekerja dengan HTML, CSS, Widget, dll ...
InformedA
38

Membuat banyak perubahan kecil dan menguji masing-masing bukanlah hal yang buruk. Ini memungkinkan Anda untuk melihat efek dari setiap perubahan, dan kemudian ketika satu perubahan menyebabkan masalah, akan lebih mudah untuk mengetahui perubahan mana yang menyebabkan masalah - perubahan terbaru!

Jika Anda memiliki daftar tugas dengan 10 item, dan Anda melakukan semuanya sekaligus dan kemudian menguji halaman dan kemudian melihat bahwa halaman terlihat salah, mungkin akan lebih sulit untuk mengetahui perubahan mana yang merusak halaman.

Tentu saja, mungkin untuk mengambil pendekatan ini secara ekstrem. Menemukan keseimbangan adalah kuncinya, dan itu datang dengan mendapatkan pemahaman yang lebih baik tentang apa yang Anda ubah dan bagaimana perubahan itu dapat saling memengaruhi.

FrustratedWithFormsDesigner
sumber
18

Pertanyaan Anda memiliki dua bagian:

  1. haruskah saya melakukan semuanya sekali dan kemudian mengujinya bersama?

    Saya berasumsi Anda menggunakan VCS .
    Dan untuk melacak, tugas apa yang dilakukan, masuk akal untuk mendistribusikan daftar tugas ke daftar komitmen: satu tugas, satu komit .

    Itu membuatnya mudah untuk mengelola berbagai versi dari basis kode saat ini; Anda bisa kembali ke keadaan sebelumnya, pilih ceri perubahan yang ingin Anda masukkan ke bagasi utama, dll.

    Jawabannya jelas:

    Tidak, buat perubahan hanya satu per satu - satu tugas satu komit .

  2. tapi saya punya kebiasaan buruk membuat perubahan kecil kecil dan kemudian mengujinya berulang kali di browser web, apakah ini praktik yang baik?

    Ini adalah praktik yang baik untuk menguji kode / UI apa pun , tetapi tidak masuk akal untuk melakukannya berulang-ulang di browser. Ada alat, untuk melakukannya secara otomatis untuk Anda ( Selenium, PhantomJS / Casper, ZombieJS )

    Jawaban untuk kasus ini adalah:

    Ya, itu adalah praktik yang baik untuk menguji perangkat lunak lebih dari sekali, tetapi gunakan otomatisasi

Thomas Junk
sumber
2
+1, tetapi saya tidak setuju dengan penggunaan otomasi. Ketika saya mengembangkan fitur baru, saya menguji secara manual dan otomatis. Tes manual ini membuat saya sangat yakin bahwa segala sesuatu berperilaku seperti yang saya harapkan. Adalah mungkin untuk menulis tes otomatis secara tidak benar, melihatnya lulus dan berpikir semuanya baik, kemudian uji secara manual dan lihat ada sesuatu yang salah.
Kevin - Reinstate Monica
Satu tugas yang komit yakin memiliki potensi untuk membuat VCS mencatat kekacauan yang tidak dapat dipahami untuk berbagai definisi "tugas tunggal"
whatsisname
tergantung seberapa halus granular Anda mendefinisikan tugas;) atau jika Anda ingin: satu "tiket" satu komit / cabang. Menggunakan git membuat ini mudah
Thomas Junk
1
Untuk memperluas apa yang Kevin katakan, saya percaya bahwa jika Anda menambahkan fitur baru yang ujung depan Anda selalu harus memeriksanya secara manual (saya belum menemukan equiv ke TTD untuk pekerjaan ujung depan), tetapi Anda juga ingin otomasi Anda suite untuk membantu memastikan Anda tidak merusak fitur yang ada.
scragar
@ Scaragar ya. Otomasi adalah untuk pengujian regresi.
Thomas Junk
6

Untuk kebiasaan apa pun yang dimiliki pengembang, ada 2 pertanyaan utama:

  1. Bagaimana pengaruhnya terhadap kualitas kode yang Anda buat?
  2. Bagaimana pengaruhnya terhadap produktivitas Anda?

Jika jawaban untuk keduanya adalah "Itu membuatnya lebih baik", ubah kebiasaan, ajarkan itu kepada orang lain!
Jika jawaban untuk satu adalah "Lebih baik" dan yang lain "Lebih buruk" - itu adalah gaya dan Anda harus sadar tentang hal itu. Itu tidak selalu berlaku, dan Anda mungkin perlu berusaha untuk menekannya sesekali.
Jika jawaban untuk keduanya adalah "Negatif" - Anda punya masalah serius.

Tentu saja untuk 2 kasus pertama Anda juga harus memikirkan "Bisakah efek positifnya otomatis atau dilembagakan?". Mungkin lebih baik menulis tes daripada mencoba browser yang berbeda setiap kali? (Catatan, saya tahu bahwa tidak mudah untuk menguji tata letak yang tepat dalam pengembangan web, saya tidak mengatakan ini selalu mungkin atau sepadan dengan waktu).

Dalam kasus khusus ini, menurut saya kualitasnya meningkat, produktivitas mungkin menurun. Untuk perubahan kecil sepertinya agak buruk (terutama jika perubahan itu saling terkait), untuk yang lebih besar - itu agak baik. Selama Anda menguji hasil akhirnya juga (hindari "setiap modul diuji dan berfungsi, sehingga semuanya bekerja juga, tidak perlu mengujinya!").

Karenanya - kecuali 90% dari hari kerja Anda melakukan perubahan yang sangat kecil - itu kebiasaan yang sangat baik untuk dimiliki. Jika hari kerja Anda seperti itu, maka mungkin Anda mungkin ingin meninjau gaya kerja Anda (atau tempat kerja).

Biasa saja
sumber
4

Ini tergantung pada domain. Untuk meletakkan halaman web itu akan berfungsi dengan baik dan Anda bisa mendapatkan umpan balik langsung (Anda bahkan dapat melakukannya di browser secara langsung!). Demikian pula itu akan bekerja dengan baik untuk apa pun yang tidak memerlukan waktu lama untuk diinisialisasi. Ini lebih disukai karena itu menjaga beban kerja mental Anda rendah dan mengurangi kemungkinan kesalahan.

Namun, untuk proyek yang sangat besar di mana Anda harus mengkompilasi kode dan waktu yang dibutuhkan tidak-sepele (beberapa menit), ini dapat mengakibatkan banyak waktu henti sehingga Anda sering harus menggunakan:

  • "memparalelkan" alur kerja Anda (mis. mengerjakan beberapa build secara bersamaan), atau
  • lakukan sebanyak mungkin hal sekaligus, atau
  • buat bagian independen kecil untuk dikerjakan dan diintegrasikan ke dalam proyek yang lebih besar nanti.

(Mungkin ada cara lain juga.)

Rufflewind
sumber
+1 untuk melakukannya di browser secara langsung. Saya akan sering membuat tweak CSS tepat di browser sebagai prototipe membuang karya nyata yang akan saya lakukan.
RubberDuck
0

Seperti yang telah dinyatakan orang lain, ini jelas bukan kebiasaan buruk. Saya umumnya lebih suka membuat hanya beberapa modifikasi sekaligus. Satu-satunya pengecualian adalah jika saya memiliki daftar perubahan besar yang tidak semuanya mempengaruhi satu sama lain (mis. Perubahan pada gaya minor atau salinan, perubahan pada halaman yang berbeda, dll). Jika Anda memodifikasi tata letak, tetap lakukan perubahan satu per satu sehingga Anda dapat memverifikasi semuanya 100% di semua browser yang didukung sebelum pindah ke masalah berikutnya.

FreeAsInBeer
sumber