Jadi, scrum sprint adalah periode waktu yang tetap di mana serangkaian fitur tertentu harus diimplementasikan. Dan tim scrum terdiri dari semua orang yang berkomitmen untuk memberikan fitur-fitur tersebut, kebanyakan dari mereka biasanya adalah pengembang dan penguji.
Setelah menetapkan aturan ini, orang mungkin bertanya-tanya bagaimana membuat semua orang ini sibuk selama seluruh sprint. Pada awal sprint belum ada yang bisa diuji, dan pada akhir sprint biasanya tidak ada atau sangat sedikit yang tersisa untuk dikembangkan / diperbaiki.
Saya telah melihat 2 pendekatan untuk menangani hal ini, tetapi tidak satu pun dari mereka tampaknya menyelesaikan masalah dengan benar.
1) Biarkan anggota tim memutuskan apa yang harus dilakukan setiap kali mereka kehabisan tugas.
Cons:
- Jika apa yang mereka lakukan tidak direncanakan secara menyeluruh (yaitu refactoring besar, beralih ke kerangka pengujian baru), pekerjaan mereka mungkin menjadi sia-sia atau macet setengah jalan
- Di sisi lain, perencanaan pekerjaan semacam itu bisa memakan banyak waktu, dan klien mungkin kecewa melihat tim membuang waktu untuk sesuatu yang tidak membawa nilai langsung.
- Tugas semacam itu biasanya tidak dapat diperkirakan secara menyeluruh, sehingga cukup mudah bagi pekerja yang tidak berprinsip untuk menghabiskan waktu menonton kucing YouTube tanpa tercermin di papan scrum atau di mana pun.
2) Buat ruang dalam sprint hanya untuk pengembangan, dan mulai pengujian setelah sprint selesai (ketika pengembang mulai mengerjakan fitur dari sprint berikutnya)
Cons:
- Saat mengembangkan fitur untuk sprint saat ini, pengembang terganggu dengan memperbaiki bug dari yang sebelumnya, dan mereka dapat gagal untuk melakukan jumlah pekerjaan yang diperkirakan akan dilakukan selama sprint saat ini
- Dibutuhkan dua papan scrum: satu untuk fitur sprint saat ini, dan satu untuk bug sprint sebelumnya
Jadi pertanyaan saya adalah: bagaimana cara mendistribusikan pekerjaan dengan benar selama sprint antara pengembang dan penguji sehingga tidak ada yang kelebihan beban dengan pekerjaan atau berakhir tanpa tugas di titik mana pun? Adakah cara untuk meningkatkan pendekatan yang dijelaskan di atas? Atau ada pendekatan yang lebih baik?
Jawaban:
Sangat? Anda tidak memiliki persyaratan untuk memvalidasi? Tidak ada diskusi dengan pelanggan Anda? Tidak ada kerangka kawat untuk dievaluasi? Tidak ada rencana tes untuk dipikirkan?
Saya tidak pernah berada di tempat itu dalam suatu proyek. Tidak ada lagi pekerjaan yang harus dilakukan? Selalu ada sesuatu. Apakah semua tes Anda sepenuhnya otomatis? Bagaimana CI Anda terlihat? Bisakah lapisan akses basis data dire-refored menjadi lebih sederhana? Dan saya belum pernah mengerjakan apa pun dengan daftar bug dan backlog kosong. Apa yang biasa dilakukan pengembang Anda dalam fase pengujian air terjun?
Saya tahu beberapa orang menjadi sangat religius tentang apa yang ada dan yang bukan 'SCRUM'. Saya tidak peduli tentang itu. Tapi saya pikir Anda memiliki dua masalah di sini:
Departemen QA 'tradisional' yang menguji kode setelah 'diselesaikan' oleh pengembang daripada bekerja dengan pelanggan dan pengembang untuk memastikan Anda membangun hal yang benar dan juga membangunnya dengan benar. Lihatlah kuadran lincah pengujian oleh Lisa Crispin. Penguji terbaik terlibat dalam setiap tahap siklus pengembangan perangkat lunak dan pengembang terbaik menulis tes mereka sendiri.
Mencoba untuk tetap berpegang erat pada jadwal SCRUM sprint 1 minggu / 2 minggu tanpa memiliki backlog yang diprioritaskan dan berukuran yang dibagi menjadi tugas-tugas yang cukup mudah untuk diselesaikan dalam waktu singkat dalam satu sprint. Jika Anda memiliki ini maka akan selalu ada lebih banyak pekerjaan untuk dilanjutkan. Mungkin fitur terakhir yang Anda kerjakan dalam sprint ini tidak masuk ke rilis sprint ini, tetapi itu selalu bisa masuk ke yang berikutnya.
Ke samping. Jika Anda memiliki tim kohesif kecil maka peran kurang penting. Alih-alih memiliki seseorang dengan penguji label yang tidak diizinkan untuk menulis kode produksi, atau seseorang yang memberi label pengembang yang berpikir mereka di atas pengujian, semua orang harus melakukan apa pun yang diperlukan untuk tim untuk berhasil, termasuk tugas manajemen proyek yang ditakuti ketika mereka diperlukan, ini disebut tim lintas fungsional.
Satu poin tambahan yang disampaikan oleh @Cort Ammon dalam komentar. Manifesto tangkas berbicara tentang kolaborasi pelanggan atas negosiasi kontrak. Itu kata kamu:
Mungkin sulit untuk menjelaskan dan saya mengerti pelanggan terkadang sangat sulit, tetapi ini akan menjadi bendera merah besar bagi saya. Mereka mempercayai Anda dengan kode sumber / hubungan klien / bisnis / apa pun yang Anda kembangkan untuk mereka. Jika mereka tidak dapat mempercayai Anda untuk bertindak secara profesional demi kepentingan terbaik mereka, maka Anda memiliki masalah atau mereka melakukannya.
Saya telah menulis posting yang berbicara tentang pengembang perangkat lunak yang tidak dianggap profesional. Seorang dokter profesional, pengacara, insinyur sipil dihadapkan dengan klien yang mengubah persyaratan pada mereka sebagian tidak akan hanya mengurangi kualitas dan mengeluh tentang hal itu. Mereka akan memberi tahu klien mereka bahwa itu akan menjadi masalah. Jika klien mendorong maka seorang profesional tidak akan secara membabi buta melakukannya dengan standar inferior yang berbahaya karena mereka akan bertanggung jawab. Kami tidak mengikuti ujian masuk profesional dan karenanya tidak bertanggung jawab. Itu tidak berarti kita tidak seharusnya mencoba menjadi lebih baik.
Singkatnya, saya tidak akan terlalu khawatir tentang mencoba membuat orang menjadi lebih efisien pada awal dan akhir sprint, tetapi melihatnya sebagai gejala dari masalah yang lebih luas dalam tim. Pernahkah Anda mendengar tentang Pemrograman eXtreme (XP) . Saya akan mengatakan prinsip-prinsip dari XP untuk diterapkan di sini adalah komunikasi dan rasa hormat:
sumber
Poin pertama adalah bahwa Scrum adalah tentang mengoptimalkan tim , bukan masing-masing individu. Jika tim produktif dan efisien, tidak masalah jika seseorang menganggur di awal atau akhir tugas.
Namun, di setiap tim yang saya ikuti, selalu ada banyak pekerjaan. Biarkan saya mengatasi beberapa masalah spesifik Anda:
Sementara itu mungkin benar dalam arti literal, itu menyiratkan Anda berpikir bahwa satu-satunya pekerjaan untuk tester adalah "menguji". Ada banyak hal yang dapat dilakukan sebelum mereka mulai menguji. Untuk satu, mereka dapat bertemu dengan pemilik produk dan pengembang untuk sepenuhnya memahami persyaratan. Mereka bisa sibuk mengerjakan rencana pengujian, mengumpulkan data tes, dan sebagainya. Jika mereka memiliki kemewahan kerangka kerja yang baik, mereka dapat mulai menulis tes otomatis sebelumnya.
Saya belum melihat tim pengembangan yang kehabisan hal untuk diperbaiki. Namun, bukan itu yang seharusnya mereka lakukan di akhir sprint. Menjelang akhir sprint mereka harus membantu penguji menguji produk. Mereka dapat membantu menulis tes otomatis, mereka dapat menguji kode ulasan dan perlengkapan / kata kunci / dll yang ditulis oleh penguji. Mereka dapat bekerja dengan tim dokumentasi untuk membantu mereka menyelesaikan pekerjaan mereka, dll.
Kelemahan dalam pemikiran Anda adalah bahwa individu kehabisan tugas. Tugas menjadi milik tim secara keseluruhan. Mereka tidak boleh melakukan pekerjaan lain selama ada cerita atau tugas yang tersisa untuk tim dalam sprint saat ini.
Pendekatan ini tidak dalam definisi tradisional tentang scrum atau gesit. Inti lincah adalah bahwa seluruh tim terlibat dalam bekerja menuju tujuan bersama. Itu berarti bahwa semua pekerjaan yang diperlukan untuk menyelesaikan sebuah cerita harus diwakili dalam sprint - desain, pengembangan, pengujian, dokumentasi, dll.
Akhirnya, ini bukan satu-satunya solusi yang layak. Anda mengabaikan solusi yang sebenarnya, yaitu setiap anggota tim harus melakukan pitching sesuai kebutuhan untuk membantu menyelesaikan cerita dalam sprint.
Tujuannya adalah tujuan tim , tetapi Anda menulis seolah-olah setiap orang memiliki tujuan individu ("selesaikan tugas saya"). Jika seseorang tidak ada hubungannya, mereka dapat melihat apa yang sedang dikerjakan dan menawarkan bantuan. Atau, mereka dapat mengambil tugas atau cerita selanjutnya dan mulai mengerjakannya.
sumber
Di semua toko tangkas tempat saya bekerja, penguji dianggap sebagai ayam sehingga mereka tidak mengalami timebox dalam sprint seperti para pengembang. Sebelum mendapatkan perangkat lunak, penguji harus menulis rencana dan memastikan lingkungan telah diatur dengan benar untuk menerima perangkat lunak. Sebagai bagian dari ini, mereka harus memeriksa dokumen desain seperti apa adanya.
Selanjutnya, Anda harus mencari untuk mengisi sprint. Seharusnya tidak ada waktu luang di akhir sprint jika estimasi baik meskipun estimasi tentu saja adalah seni hitam sehingga jarang mengisi persis .
Jika pengembang memiliki waktu luang di akhir sprint, waktu ini masih harus dilacak untuk memastikan itu menambah nilai (mempelajari kerangka kerja baru, melakukan analisis, pengujian lebih lanjut, dll).
Memperbaiki bug adalah kegiatan yang dapat diterima sepenuhnya untuk dilakukan dalam sprint. Ini berkontribusi pada fitur dan menambah nilai. Ini tidak boleh dilihat sebagai waktu yang dicuri dari sprint berikutnya - lebih baik menyelesaikan fitur.
sumber
Di dunia yang ideal, tim Anda akan berfungsi lintas fungsi . Setiap orang memiliki spesialisasi mereka, tetapi semua orang dapat bekerja sebagai spesialisasi lain juga. Jika penguji Anda tidak dapat membuat kode tugas yang paling sederhana, maka Anda tidak memiliki tim lintas fungsi.
Cara SCRUM adalah untuk memungkinkan tim Anda menjadi lintas fungsional. Penguji Anda harus memiliki keterampilan untuk otomasi pengujian, ini adalah langkah singkat untuk mengkode beberapa hal yang kurang rumit.
sumber