Bagaimana menjadi sukses di Lokakarya Spesifikasi BDD?

9

Hari ini kami mencoba memperkenalkan BDD dalam proses pengembangan perangkat lunak kami dengan memiliki bengkel spesifikasi.

Untuk workshop ini kami memiliki 2 pengembang, 1 tester dan 1 analis bisnis. Lokakarya berlangsung 1h30 dan pada akhirnya kami berhasil menemukan beberapa skenario BDD untuk fitur baru kami. Kami mencoba fokus untuk menemukan skenario yang bisa kami lewatkan, dan yang sulit.

Di akhir lokakarya beberapa orang sebenarnya tidak senang dengan lokakarya itu.

Salah satu pengembang merasa dia membuang-buang waktu karena dia terbiasa diberikan skenario langsung oleh analis bisnis dan meninjaunya dengan dia. Analis bisnis tidak merasa percaya diri dengan cakupan skenario kami (Perasaan bahwa kami bisa melewatkan hal-hal penting lainnya), tetapi yang lebih penting merasa bahwa bengkel ini juga membuang-buang waktu karena ia dapat mengetahui sendiri semua skenario ini dan dalam periode waktu yang lebih singkat .

Workshop eksperimental ini berlangsung 1 jam 30, dan pada akhirnya, kami tidak merasa cukup percaya diri tentang apa yang kami lakukan ... tentu saja kami bisa menghabiskan lebih banyak waktu untuk itu, tetapi jujur ​​saja kebanyakan orang kelelahan setelah 1 jam 30 brainstorming untuk mencari bisnis aturan dari otak BA.

Jadi pertanyaan saya adalah bagaimana bengkel seperti itu bisa bekerja. Dalam teorinya, mengingat Anda memiliki fitur baru untuk dikembangkan, Anda meletakkan pohon 'amigos' (dev / tester / ba) di ruang yang sama sehingga mereka dapat berkolaborasi bersama dalam menulis persyaratan yang berbeda untuk fitur baru menggunakan contoh. Saya bisa melihat semua manfaatnya. Khususnya dalam hal berbagi pengetahuan dan produk umum / tujuan akhir / visi yang dilakukan.

Kesimpulan kami dari percobaan ini adalah bahwa sebenarnya lebih efektif secara biaya untuk pertama-tama memiliki BA untuk bekerja sendiri pada contoh-contoh dan hanya kemudian memiliki skenario untuk ditinjau / dikerjakan ulang oleh 3 'amigos'. Dengan memiliki BA untuk bekerja sendiri, kita sebenarnya merasa lebih percaya diri bahwa kita tidak akan kehilangan banyak hal + kita masih bisa meninjau skenario setelahnya untuk memeriksa ulang. Kami tidak berpikir bahwa sesekali sesi brainstorming / penemuan yang disengaja sebenarnya sudah cukup untuk secara serius memenuhi semua persyaratan untuk fitur baru. Analis bisnis sebenarnya adalah orang terbaik untuk hal-hal semacam itu. Hal terbaik yang dapat kita lakukan adalah meninjau kembali apa yang dia tulis dan lihat apakah kita memiliki pemahaman yang sama (yang kemudian dapat menyebabkan penulisan ulang beberapa skenarionya atau menambahkan skenario baru yang mungkin terlewatinya).

Jadi bagaimana Anda bisa membuatnya bekerja secara efektif dalam latihan ?

foobarcode
sumber

Jawaban:

4

Jika Anda dapat menurunkan skenario dari deskripsi, Anda sudah selesai.

Anti-pola yang sering saya lihat dalam BDD adalah orang-orang merasa perlu untuk membicarakan, dan menulis, setiap skenario secara terperinci.

Beberapa skenario dipahami dengan baik sehingga cukup untuk menurunkannya dari deskripsi singkat. Misalnya, jika saya berkata, "Saya ingin fitur login minggu ini," Anda tahu seperti apa tampilannya. Anda tahu bahwa ada skenario untuk kata sandi yang benar, kata sandi yang salah, nama pengguna yang salah. Kami tidak benar-benar perlu membicarakannya atau menangkapnya secara detail.

Demikian pula, saya mungkin berkata, "Ini formulir untuk pendaftaran pengguna. Kita harus dapat membuat pengguna baru, membiarkan mereka mengedit detail mereka, dan menghapus diri mereka sendiri, kecuali penghapusan itu seharusnya tidak benar-benar dihapus, itu hanya harus menandai mereka sebagai dihapus sehingga mereka dapat memulihkan akun mereka jika mereka mau. "

Dan Anda dapat bertanya, "Apakah pemulihan akun bagian dari fitur ini?"

"Mereka bisa menjadi dua fitur jika kamu mau."

"Oke, jadi kita punya skenario untuk membuat, membaca, memperbarui, menghapus; itu seharusnya cukup mudah. ​​Mari kita bicara tentang pemulihan akun; itu terdengar lebih menarik."

Secara umum, jika deskripsi perilaku cukup bagi tim pengembang untuk membuat skenario, Anda tidak perlu membicarakannya. Anda dapat melakukannya jika ada keraguan, tetapi Anda mungkin hanya ingin menangkap skenario mana yang perlu Anda ingat, jika Anda menangkapnya sama sekali.

Jika Anda belum pernah melakukannya sebelumnya atau Anda tidak yakin, bicaralah melalui skenario.

Fokus pada area yang tidak biasa, terutama jika ada fitur yang belum pernah Anda lakukan sebelumnya. Ini adalah tempat yang luar biasa untuk melakukan percakapan dan menuliskan semua contoh mengejutkan yang muncul. Saya biasanya memiliki dua pertanyaan yang saya ajukan, berdasarkan pada template BDD:

Diberikan konteks
Ketika suatu peristiwa terjadi
Maka hasil harus terjadi.

  • Apakah ada konteks lain yang, untuk acara yang sama, menghasilkan hasil yang berbeda?
  • Apakah ada hasil lain yang juga penting?

Jika semua orang di meja terlihat bosan, fitur yang Anda bicarakan mungkin dipahami dengan baik. Cukup sering mengatakan, "Seharusnya berfungsi seperti X , tetapi dengan Y sebagai gantinya." Inilah yang disebut Dan Utara sebagai pola Kue Jahe ; itu seperti resep kue cokelat, tetapi dengan jahe, bukan cokelat.

Bahkan jika pemangku kepentingan bisnis mampu membuat skenario sendiri, sangat penting bagi tim pengembang untuk dapat berbicara dengannya, mengambil dan menginternalisasi bahasanya. Bahasa itu kemudian dimasukkan ke dalam kode, memungkinkan mereka untuk melakukan percakapan yang lebih baik di masa depan, dan membantu pendatang baru dalam proyek memahami apa yang terjadi. Jika para devs tidak bisa berbicara bahasa, mereka tidak akan menggunakannya .

Jika pemangku kepentingan bisnis atau analis benar-benar tidak ingin menghabiskan waktu untuk menangkap hal-hal dalam sesi, saya lebih suka para pengembang menuliskan skenario dalam kolaborasi dengan para penguji, kemudian memintanya untuk meninjaunya. Ini lebih cenderung mengungkap kesalahpahaman daripada sebaliknya.

Terkadang BDD tidak berfungsi.

Kemungkinan lain adalah Anda menemukan skenario yang tidak pasti oleh pemangku kepentingan bisnis. "Oh, aku tidak memikirkan itu! Aku tidak yakin." Daripada mencoba menghentikan bisnis dan menghukum bisnis dengan pasti, mungkin lebih baik meninggalkan BDD pada titik ini dan mencoba sesuatu yang sederhana untuk mendapatkan umpan balik dan memberikan bisnis sesuatu yang dapat mereka ulangi. Tetap mudah untuk berubah, dan tulis skenario setelah ada pemahaman yang lebih baik tentang apa yang terjadi.

BDD yang dilakukan dengan baik dapat benar-benar membantu mengungkap tempat-tempat ketidakpastian. Karena setiap melakukan senilai proyek memiliki beberapa aspek itu yang baru dan belum pernah dilakukan sebelumnya, ada adalah beberapa ketidakpastian di sana, di suatu tempat. Jika Anda fokus menggunakan skenario untuk membantu secara sengaja menemukan ketidaktahuan , Anda akan belajar lebih cepat, dan belajar biasanya merupakan sebagian besar waktu yang dihabiskan untuk sebuah proyek.

Selain itu, saya telah menemukan bahwa semakin banyak tim pengembang berkolaborasi dengan cara ini, semakin banyak bisnis dipersiapkan untuk mempercayai mereka dengan ketidakpastian, dan semakin banyak inovasi mulai terjadi. Perusahaan yang inovatif, pada dasarnya, memiliki banyak ketidakpastian dalam proyek mereka.

Saya menulis posting blog beberapa waktu lalu di Cynefin , yang saya temukan benar-benar membantu saya memahami di mana percakapan akan paling efektif. Jika Anda membacanya dan memahami keempat domain tersebut, berikut adalah aturan yang saya gunakan:

  • Hal-hal sederhana dan rumit (dikenal) sering dipahami dengan baik dan Anda tidak perlu membicarakan skenario secara terperinci.

  • Hal-hal yang sangat kompleks (tidak diketahui) sama sekali tidak dipahami. Anda dapat menemukan ini dengan berbicara melalui skenario. Kurangnya kepastian berarti bahwa BDD tidak akan bekerja di sini, jadi beralihlah ke sesuatu yang mudah diubah dan dapatkan umpan balik yang cepat sebagai gantinya. Praktik apa pun yang mempertahankan pilihan Anda, seperti pengujian AB, juga bagus di ruang ini.

  • BDD bekerja dengan cemerlang di ruang di antaranya (dapat diketahui) sebagai mekanisme untuk menyampaikan pengetahuan, dan untuk mengungkap dua ruang lainnya. Ini bukan palu, dan tidak semuanya paku. Bahkan, jika Anda dapat memfokuskan waktu yang dihabiskan untuk melakukan percakapan pada apa pun, ini bukan tentang contoh yang dapat Anda temukan; ini tentang menemukan contoh yang tidak bisa Anda dapatkan .

Lunivore
sumber
Terima kasih atas jawaban terperinci ini, saya rasa kita mungkin telah menghabiskan terlalu banyak waktu untuk menulis beberapa skenario dengan semua Mengingat Saat Lalu, sementara hanya mencatat deskripsi singkat sudah cukup dan bisa menghemat waktu. Jika saya memahami jawaban Anda dengan benar, tujuan dari lokakarya ini adalah hanya untuk membicarakan hal-hal yang "sulit" atau hal-hal yang dapat menyebabkan kesalahpahaman dan bukan tentang mendapatkan cakupan persyaratan yang tinggi. Hal-hal sederhana dapat ditulis oleh BA sendiri.
foobarcode
Itu cara yang baik untuk menjelaskannya, ya :) Juga, memiliki percakapan lebih penting daripada menuliskannya, yang lebih penting daripada mengotomatiskannya.
Lunivore
Saya menemukan "Saya tidak yakin" cukup umum. Seringkali seseorang mengetahui jawabannya - tetapi bukan orang yang diajak bicara oleh para devs. Melacak orang yang tepat bisa memakan waktu cukup lama ...
DNA
1
@DNA Saya telah membahas estimasi kompleksitas secara lebih rinci dalam posting ini: lizkeogh.com/2013/07/21/estimating-complexity - kemudahan melacak keahlian memang merupakan bagian dari metrik.
Lunivore
5

Lamanya pertemuan itu bukan masalah Anda. Tidak apa-apa jika pertemuan itu berlangsung lama. TETAPI semua orang harus keluar dengan perasaan percaya diri. Bahwa mereka tidak melakukannya adalah masalah Anda.

Saya akan menyarankan pertemuan singkat untuk membahas persyaratan. Jadwalkan pertemuan kedua beberapa hari kemudian, sehingga semua orang tahu mereka harus bersiap saat itu.

Kemudian BA dan tester masing-masing harus datang dengan skenario mereka, karena mereka berdua melihat perangkat lunak dengan cara yang sangat berbeda. Mintalah mereka untuk menuliskannya pada kartu dan tempelkan semuanya di papan tulis di suatu tempat, setidaknya sehari sebelum pertemuan kedua, biarkan semua orang melihat waktu mereka sendiri dan memikirkannya. Buang duplikat, tetap skenario yang tidak dipertimbangkan.

Jangan membuang apa pun yang tidak Anda setujui, tetapi tandai sebagai pertengkaran. Jika percakapan yang sangat singkat dengan orang yang menulisnya akan membantu, lakukan itu, tetapi kebanyakan simpan.

MAKA memiliki pertemuan perencanaan / desain Anda. Miliki agenda yang solid untuk pertemuan itu (mulailah dengan tumpukan kartu, letakkan kartu yang diperdebatkan di atas) dan jangan biarkan itu berjalan di luar jalur. Pastikan Anda keluar dari pertemuan itu dengan semua poin pertentangan diselesaikan.

pdr
sumber
3

Selalu pastikan semua orang dalam rapat siap untuk topik pertemuan itu!

Jangan pernah menggunakan rapat untuk "bertukar pikiran" apa pun bersama-sama. Itu membuang-buang waktu semua orang.

Resep umum untuk rapat yang efektif:

  • suruh seseorang menyiapkan barang untuk didiskusikan
  • mengharuskan semua peserta mempelajari (tidak hanya membaca) item-item itu
  • kumpulkan komentar sebelumnya dan minta semua peserta untuk mempelajari (tidak hanya membaca) mereka
  • mengadakan pertemuan untuk mengambil keputusan
Marjan Venema
sumber
1

Tentang Pengaduan ...

Mari kita mulai dengan ini:

Salah satu pengembang merasa dia menyia-nyiakan waktunya karena dia terbiasa diberikan skenario langsung oleh analis bisnis dan meninjaunya dengan dia.

Itulah yang dia lakukan di bengkel. Jadi itu sepertinya alasan yang murung dan buruk bagiku. Saya menduga pengembang ini tidak suka (atau keduanya) pengawasan lokakarya dan kendala penjadwalannya.

Analis bisnis tidak merasa percaya diri dengan cakupan skenario kami (Perasaan bahwa kami bisa melewatkan hal-hal penting lainnya)

Bagaimana ini berbeda dari ketika dia melakukannya di sisinya dan telah ditinjau oleh pengembang, terlepas dari kenyataan bahwa lebih banyak orang melihatnya? Saya menduga ini hanyalah hasil dari lokakarya yang mungkin sedikit kacau. Anda akan mendapatkan kepercayaan bahwa Anda memiliki cukup tes dengan menerapkannya dan mengintegrasikannya. Anda tidak akan pernah yakin menemukan semua bug, dan ketika sampai pada cakupan, cara terbaik adalah dengan membuat diagram mereka dalam cerita pengguna Anda.

tetapi yang lebih penting merasa bahwa bengkel ini juga membuang-buang waktu karena dia bisa mengetahui semua skenario ini sendiri dan dalam periode waktu yang lebih singkat.

Ya, dan sepenuhnya sendirian, di taman bertemboknya, dan tanpa berbagi pengetahuan. Padahal dengan melakukan lokakarya di masa depan ini mungkin lebih produktif karena semua peserta telah memperoleh sedikit pengetahuan tentang cara mendekati hal-hal ini.

Mungkin pertemuan ini lambat kali ini, bukan berarti itu akan selalu terjadi. Dan sebagai pribadi eksternal, saya akan, diberikan beberapa pelatihan untuk mendapatkan hak ini, lebih percaya diri bahwa liputan lebih baik dalam lokakarya dengan 3 peserta dengan pola pikir yang berbeda dengan diktator tunggal.

Juga, jika sudah ada kebutuhan untuk pengembang untuk meninjau skenario ini dengannya, saya cukup yakin bolak-balik jauh lebih cepat dan efisien di bengkel daripada menggunakan "Saya melakukan pekerjaan saya sendiri dan memberikan barang kepada Anda, Anda memeriksanya sendiri dan kembali kepada saya dan mari kita lakukan pendekatan ini lagi ".

Saran

  • Jadilah positif dan tekankan bahwa jika prosesnya benar, Anda akan menjadi lebih baik.

  • Cobalah untuk merampingkan bengkel dan tetap di jalurnya.

  • Mungkin berikan ruang untuk analisis "lone-wolf", dengan memulai lokakarya dengan semua orang merancang beberapa skenario sendiri (bahkan lebih baik, sebelum lokakarya), lalu triase dan gabungkan.

Dan jika Anda tidak berpikir melakukan hal brainstorming itu diperlukan, baiklah: minta BA bekerja sendiri, tapi setidaknya lakukan review sebagai lokakarya, setidaknya. Semakin banyak bola mata yang lebih baik, mengutip Eric S. Raymond 's Linus' Law :

Given enough eyeballs, all bugs are shallow.
haylem
sumber
0

Anda sudah memiliki jawaban yang cukup bagus di sini, jadi saya akan fokus pada satu aspek kecil yang sejauh ini diabaikan. Peran masing-masing dari Tiga Amigos harus dapat disampaikan ke sesi. Mereka masing-masing menawarkan nilai dengan cara yang berbeda, mereka masing-masing memahami serangkaian kendala yang berbeda.

Secara umum BA harus dapat membawa jalan bahagia utama ke sesi, mereka harus dapat juga menyediakan skenario kegagalan utama dari perspektif bisnis. Keahlian Uji harus dapat mengidentifikasi kasus tepi dan skenario tambahan yang diperlukan untuk membuktikan sistem bekerja dalam semua keadaan. Pekerjaan pengembang tidak benar-benar untuk menambah skenario, meskipun mereka sering melakukan kegagalan teknis, pekerjaan mereka juga memastikan mereka memiliki pemahaman penuh tentang persyaratan sehingga mereka menyampaikan implikasi dan mengimplementasikan persyaratan dengan minimum komunikasi ekstra.

Martin Spamer
sumber