Saya masuk ke scrum dan TDD dan saya pikir saya memiliki beberapa kebingungan yang ingin saya dapatkan tanggapan Anda. Mari kita asumsikan saya memiliki kisah pengguna di backlog saya, agar saya dapat mulai mengembangkannya sebagai bagian dari TDD saya perlu memiliki persyaratan, sejauh ini?
Benarkah untuk mengatakan bahwa manajer produk dan QA harus bertanggung jawab untuk mengambil cerita pengguna dan memecahnya menjadi tes penerimaan?
Saya pikir hal di atas benar karena tes penerimaan perlu formal, sehingga dapat digunakan sebagai tes, tetapi juga dapat dibaca manusia sehingga produk dapat menyetujui bahwa mereka adalah persyaratannya, bukan?
Apakah benar juga bahwa saya kemudian mengambil tes penerimaan ini dan menggunakannya sebagai persyaratan saya, yaitu mereka adalah satu set kasus penggunaan yang saya terapkan (melalui TDD)? Saya harap saya tidak membuat terlalu banyak kekacauan tapi itu aliran saat ini yang saya pikirkan saat ini.
Pembaruan
Saya pikir niat awal saya tidak jelas sehingga saya akan mencoba untuk mengulangi. Saya ingin tahu lebih detail tentang alur scrum mengubah cerita pengguna menjadi kode saat menggunakan TDD.
Titik awal sudah jelas, pengguna memunculkan suatu kebutuhan (atau perwakilan pengguna sebagai produk) yang merupakan uraian singkat 1-2 baris dalam format yang diketahui dan yang ditambahkan ke jaminan simpanan produk.
Ketika ada pertemuan perencanaan musim semi, cerita pengguna diambil dari backlog dan ditugaskan ke pengembang.
Agar pengembang dapat menulis kode, mereka memerlukan persyaratan (terutama dalam TDD karena persyaratannya berasal dari tes mana).
Kapan, oleh siapa dan format apa yang dikompilasi?
Apa yang ada dalam pikiran saya adalah bahwa produk dan QA menentukan persyaratan melalui tes penerimaan (saya berpikir otomatis menggunakan FitNesse atau semacamnya tapi itu bukan inti yang saya pikir) yang membantu melayani 2 tujuan pada saat yang bersamaan:
- Mereka mendefinisikan "Selesai" dengan benar.
- Mereka memberi pengembang sesuatu untuk mendapatkan tes.
Saya tidak yakin kapan ini ditulis (sebelum sprint mereka diambil maka itu mungkin akan sia-sia karena informasi tambahan akan tiba atau cerita tidak akan diambil, selama iterasi maka pengembang mungkin akan terjebak menunggu mereka. ..)
Jawaban:
Kebanyakan. Mereka mungkin tidak benar-benar menulis tes penerimaan aktual. Mereka mungkin menyetujui sesuatu yang Anda tulis. Tetapi mereka menyetujui tes penerimaan. Iya.
Tidak relevan. Mereka dapat diformalkan sebagai tes otomatis. Atau mereka mungkin informal dan mungkin tugas Anda untuk membuat tes otomatis dari kriteria tes penerimaan informal.
Juga. "Persyaratan" adalah kisah pengguna. Tidak ada kebutuhan nyata untuk membuat versi lain dari cerita yang disebut "persyaratan." Beberapa orang suka menguraikan cerita sebelum kode mereka. Anda dapat menyebut persyaratan ini, tetapi "desain" adalah kata yang lebih baik. "Elaborasi" adalah kata terbaik.
Iya. Kisah itu mengarah pada tes penerimaan. Cerita ini diperlukan perilaku (yaitu, "persyaratan"). Kisah ini mengarah pada tes yang mendorong desain dan pengembangan perangkat lunak.
Sebenarnya tidak ada banyak "aliran" untuk ini.
Story -> tes penerimaan.
Story -> elaborasi ("desain", "persyaratan") -> tes unit -> kode.
Story -> Pengguna dapat melakukan sesuatu yang bernilai.
Story -> Story points -> perhitungan kecepatan.
Perhatikan polanya. Ceritanya sebagian besar menggerakkan segalanya.
Pertama. Tentukan "persyaratan". Apa bedanya dengan cerita itu sendiri?
Tidak biasanya.
Salah. Pengembang dapat (dan sering kali) membantu menulis ini. Itulah inti dari "pengembangan": menguraikan cerita menjadi "selesai" yang didefinisikan dengan baik.
Lagi. Ketika Anda memiliki keraguan atau pertanyaan, Anda harus benar-benar membaca Agile Manifesto. Manifesto cukup jelas: pengembang harus berbicara dengan pemilik produk, pengguna, QA, dan semua orang yang merupakan pemangku kepentingan. Interaksi sebenarnya adalah hal terpenting yang bisa terjadi.
sumber
Saya akan menjawab Anda dari perspektif Extreme Programming (XP) mengenai tes penerimaan.
Ketika saya pertama kali masuk (dan membaca buku-buku), saya membaca bahwa itu benar-benar peran pengembang untuk bekerja dengan klien / pengguna untuk mengembangkan / mendokumentasikan tes penerimaan. Salah satu tujuan XP adalah meningkatkan komunikasi langsung antara pengguna / klien dan pengembang. Ini sering ideal, karena mengurangi kemungkinan kesalahan pengkodean karena miskomunikasi persyaratan.
Saya telah melakukan TDD selama sekitar 8 tahun, dan telah mengikuti pendekatan di atas. Saya pikir itu telah meningkatkan kecepatan pengembangan, dan kepuasan dengan sistem karena klien / pengguna melihat bagaimana mereka secara langsung mempengaruhi pengembangan aplikasi.
Kesulitan utama yang saya hadapi (dengan klien yang lebih kecil), adalah sangat sulit untuk membuat mereka berpartisipasi dalam menentukan tes penerimaan. (Biasanya saya harus melakukannya untuk mereka, dan mengirimkannya kepada mereka untuk ditinjau.) Klien yang lebih besar yang pernah bekerja sama dengan saya, biasanya memiliki pola pikir ini, jadi mereka siap untuk memberikan tes penerimaan khusus.
Dari apa yang saya baca tentang scrum, saya tidak yakin itu mendefinisikan peran mana yang bertanggung jawab untuk mendefinisikan / menulis tes penerimaan. Saya menganggap itu bisa berbeda dari satu tim ke tim lainnya.
Saran saya adalah, Anda sebagai pengembang, Anda harus berpartisipasi sebanyak mungkin dalam proses definisi pengujian. Dan tujuannya adalah untuk mendapatkan hasil sprint di depan pengguna secepat mungkin, sehingga mereka dapat memberi tahu Anda segala sesuatu yang mereka lupa pikirkan (atau apa yang mereka katakan salah kepada Anda) secepat mungkin.
sumber
Kisah pengguna bukan "Sebagai pengguna, saya ingin XXX agar YYY" ! Kisah pengguna adalah janji untuk komunikasi masa depan dengan PO. Itu memecahkan masalah Anda dengan lebih detail. Anda harus berkomunikasi dengan PO selama sprint untuk mendapatkan informasi yang Anda butuhkan.
Cerita pengguna juga memiliki lebih banyak fitur daripada kalimat pendek yang menjanjikan komunikasi. Bagian yang diperlukan dari kisah pengguna adalah kriteria penerimaan. Kriteria penerimaan harus diketahui sebelum berkomitmen untuk cerita pengguna (mereka harus diketahui sebelum memperkirakan cerita pengguna). Kriteria penerimaan adalah input untuk tes penerimaan = tes penerimaan harus menguji kriteria penerimaan.
Jadi, ketika Anda mulai mengerjakan cerita pengguna dengan pendekatan TDD Anda (bukan QA) harus terlebih dahulu membuat tes penerimaan otomatis berdasarkan kriteria penerimaan untuk mendapatkan tes gagal untuk itu. Anda akan melanjutkan dengan menerapkan kode yang diperlukan menggunakan TDD sebelum lulus tes penerimaan. Anda akan melanjutkan dengan tes penerimaan berikutnya. Saya menulis tentang itu juga di pertanyaan lain .
sumber