BDD Spesifikasyon Atölyelerinde nasıl başarılı olunur?


9

Bugün BDD'yi bir şartname atölyesi yaparak yazılım geliştirme sürecimize tanıtmaya çalıştık.

Bu atölye çalışması için 2 geliştirici, 1 test cihazı ve 1 iş analisti vardı. Atölye 1: 30'da sürdü ve sonunda yeni özelliğimiz için bazı BDD senaryoları bulmayı başardık. Kaçırdığımız senaryoları ve zor olanları bulmaya odaklanmaya çalıştık.

Çalıştay sonunda bazı insanlar çalıştaydan gerçekten memnun değildi.

Bir geliştirici , senaryoları doğrudan iş analisti tarafından verildiği ve onlarla birlikte gözden geçirildiği için zamanını boşa harcadığını hissetti . İş analisti senaryo kapsamımızdan emin değildi (Diğer önemli şeyleri de kaçırmış olabileceğimizi düşünüyorduk), ancak daha da önemlisi, tüm bu senaryoları kendi başına çözebileceği için bu atölyenin de zaman kaybı olduğunu hissetti. ve daha kısa sürede .

Bu deneysel çalıştay 1 saat 30 saat sürdü ve sonunda yaptığımız şeyden emin değildik ... elbette daha fazla zaman harcayabilirdik ama dürüst olmak gerekirse çoğu insan 1 saat 30 işten sonra beyin fırtınası bittikten sonra tükendi BA beyinden kurallar.

Benim sorum bu tür bir çalıştayın gerçekten nasıl çalışabileceğidir. Teoride, geliştirmek için yeni bir özelliğiniz olduğu için, 'amigos' (dev / tester / ba) ağacını aynı odaya koyarsınız, böylece örnekleri kullanarak yeni özellik için farklı gereksinimleri yazma konusunda birlikte çalışabilirler. Bundan tüm faydaları görebiliyorum. Özellikle bilgi paylaşımı ve ortak ürün / nihai hedef / yapılan vizyon açısından.

Bu deneyden elde ettiğimiz sonuç, ilk önce örnekler üzerinde kendi başına çalışmak için bir BA'ya sahip olmanın ve ancak daha sonra 3 'amigo' tarafından gözden geçirilmesi / yeniden işlenmesine yönelik senaryolara sahip olmanın daha uygun maliyetli olduğudur.. BA'nın kendi başına çalışmasını sağlayarak, aslında bazı şeyleri kaçıracağımızdan daha emin hissediyoruz + yine de iki kez kontrol etmek için senaryoları gözden geçireceğiz. Basit bir kez beyin fırtınası / kasıtlı keşif seansının, yeni bir özellik için tüm gereksinimi ciddi şekilde karşılayacağını düşünmüyoruz. İş analisti aslında bu tür şeyler için en iyi kişidir. Yapabileceğimiz en iyi şey, yazdıklarını gözden geçirmek ve o zaman ortak bir anlayışa sahip olup olmadığımızı görmek (daha sonra bazı senaryolarını yeniden yazmanıza veya kaçırmış olabileceği yeni senaryoları eklemenize yol açabilir).

Peki bunu pratikte etkili bir şekilde çalıştırabilirsiniz ?

Yanıtlar:


4

Senaryoları açıklamadan türetebiliyorsanız, işleminiz tamamlanmıştır.

BDD'de sıklıkla gördüğüm bir anti-desen, her senaryoyu ayrıntılı olarak konuşma ve yazma ihtiyacı hisseden insanlar .

Bazı senaryolar o kadar iyi anlaşılmıştır ki, bunları kısa bir açıklamadan türetmek yeterlidir. Örneğin, "Bu hafta oturum açma özelliğini istiyorum" dersem bunun neye benzemesi gerektiğini bilirsiniz. Doğru şifre, yanlış şifre, yanlış kullanıcı adı için senaryolar olduğunu biliyorsunuz. Bunları konuşmamız veya ayrıntılı olarak yakalamamız gerekmiyor.

Benzer şekilde, "Kullanıcı kaydı için form. Yeni kullanıcılar oluşturabilmemiz, ayrıntılarını düzenlemelerine izin verebilmemiz ve kendilerini silebilmemiz gerekiyor, ancak silme işlemi gerçekten silinmemeli, yalnızca silinmiş olarak işaretlenmelidir böylece isterlerse hesaplarını kurtarabilirler. "

"Hesap kurtarma bu özelliğin bir parçası mı?"

"İsterseniz iki özellik olabilirler."

"Tamam, bu yüzden oluşturma, okuma, güncelleme, silme senaryolarımız var; bu yeterince kolay olmalı. Hesap kurtarma hakkında konuşalım; bu daha ilginç geliyor."

Genel olarak, dev takımın senaryoları türetmesi için davranış tanımı yeterliyse, bunlar üzerinden konuşmanıza gerek yoktur. Herhangi bir şüphe varsa bunu yapabilirsiniz, ancak hatırlamanız gereken senaryoları yakalamak isteyebilirsiniz.

Daha önce hiç yapmadıysanız veya emin değilseniz, senaryolar hakkında konuşun.

Özellikle daha önce hiç yapmadığınız özellikler varsa, olağandışı alanlara odaklanın. Bunlar, sohbet etmek ve ortaya çıkan şaşırtıcı örnekleri yazmak için harika yerler. BDD şablonuna dayanarak genellikle sorduğum iki sorum var:

Bir bağlam
verildiğinde Bir olay meydana geldiğinde
bir sonuç ortaya çıkmalıdır.

  • Aynı olay için farklı bir sonuç üreten başka bir bağlam var mı?
  • Önemli olan başka bir sonuç var mı?

Masadaki herkes sıkılmış görünüyorsa, konuştuğunuz özellik muhtemelen iyi anlaşılmıştır. Genellikle " X gibi çalışmalı , bunun yerine Y ile çalışmalıdır" demek yeterlidir . Dan North buna Zencefilli Kek kalıbı diyor ; çikolatalı kek tarifi gibi, ama çikolata yerine zencefil ile.

Ticari paydaş senaryoları kendisi türetebilse bile, geliştirici ekibinin onunla konuşabilmesi, dilini alıp içselleştirebilmesi gerçekten önemlidir. Bu dil daha sonra koda taşınır ve gelecekte daha iyi konuşmalar yapmalarını sağlar ve projeye yeni gelenlerin neler olup bittiğini anlamalarına yardımcı olur. Geliştiriciler dili konuşamazlarsa , dili kullanmayacaklardır .

İş paydaşları veya analistleri oturumdaki şeyleri yakalamak için gerçekten zaman harcamak istemiyorsa, geliştiricilerin senaryoları testçilerle işbirliği halinde yazmasını ve ardından incelemesini istemesini tercih ederim. Bu, yanlış anlamaları ortaya çıkarmanın diğer yoldan daha olasıdır.

Bazen BDD çalışmaz.

Başka bir olasılık, iş paydaşının belirsiz olduğu bir senaryo bulmanızdır. "Ah, bunu düşünmemiştim! Emin değilim." İşi çivilemeye ve işi kesin bir şekilde cezalandırmaya çalışmak yerine, bu noktada BDD'yi terk etmeye ve geri bildirim almak ve işletmeye tekrar edebilecekleri bir şey vermek için basit bir şey denemeye değer olabilir. Değişimi kolay tutun ve neler olduğunu daha iyi anladıktan sonra senaryoları yazın.

BDD'nin iyi yapılması, belirsizliklerin ortaya çıkmasına gerçekten yardımcı olabilir. Yapıyor her proje değerinde yeni ve daha önce hiç yapılmamış bir kısmı özelliğe sahip olduğundan, orada olduğu yerde, sanki biraz belirsizlik. Cehaleti kasten keşfetmeye yardımcı olmak için senaryoları kullanmaya odaklanırsanız, daha hızlı öğrenirsiniz ve öğrenme genellikle bir projede harcanan zamanın büyük bir parçasıdır.

Buna ek olarak, bu şekilde daha fazla geliştirme ekibi çalıştıkça, onlara belirsizlikle güvenmek için daha fazla iş hazırlanıyor ve daha fazla yenilik ortaya çıkmaya başlıyor. Yenilikçi şirketler, doğası gereği, projelerinde çok fazla belirsizliğe sahiptir.

Bir süre önce Cynefin üzerine bir blog yazısı yazdım , ki bu gerçekten konuşmanın en etkili nerede olacağını anlamama yardımcı oluyor. Bunu okur ve dört alanı anlarsanız, kullandığım kurallar şunlardır:

  • Basit ve karmaşık şeyler (bilinen) genellikle iyi anlaşılır ve senaryolar boyunca ayrıntılı olarak konuşmanıza gerek yoktur.

  • Oldukça karmaşık şeyler (bilinmiyor) hiç anlaşılamamıştır. Senaryoları konuşarak bunu keşfedebilirsiniz. Kesinlik eksikliği, BDD'nin burada çalışmayacağı anlamına gelir, bu nedenle değiştirilmesi ve hızlı geri bildirim alması kolay bir şey üzerinde tekrarlayın. AB testi gibi seçeneklerinizi koruyan herhangi bir uygulama da bu alanda harika.

  • BDD, bilginin aktarılması ve diğer iki mekanın ortaya çıkarılması için bir mekanizma olarak (bilinir) arasındaki alanda mükemmel bir şekilde çalışır. Bu bir çekiç değil ve her şey bir çivi değil. Aslında, sohbet etmek için harcanan zamanı herhangi bir şeye odaklayabiliyorsanız, bulabileceğiniz örnekler ile ilgili değildir; hakkında olduğunu yapamazsın örnekler bulma .


Bu ayrıntılı cevap için teşekkürler, verilen zamanlar ile bazı senaryolar yazmak için çok fazla zaman harcadığımızı düşünürken, sadece kısa bir açıklamanın yeterli olacağını ve biraz zaman kazandırabileceğini düşünüyoruz. Cevabınızı doğru bir şekilde anlarsam, bu çalıştayların amacı sadece "zor" şeyler veya yanlış anlaşılmaya yol açabilecek şeyler hakkında konuşmaktır ve bu yüksek gereksinimi karşılama ile ilgili değildir. Basit şeyler BA tarafından kendi başına yazılabilir.
foobarcode

Bu, bunu anlatmanın iyi bir yolu, evet :) Ayrıca, konuşmaları yazmak onları yazmaktan daha önemlidir, bu da onları otomatikleştirmekten daha önemlidir.
Lunivore

Oldukça yaygın "emin değilim" buldum. Genellikle biri cevabı bilir - ama geliştiricilerin konuştuğu kişi değil. Doğru kişiyi takip etmek biraz zaman alabilir ...
DNA

1
@DNA Bu yayında karmaşıklık tahminini daha ayrıntılı olarak ele aldım: lizkeogh.com/2013/07/21/estimating-complexity - uzmanlığı izleme kolaylığı gerçekten metriğin bir parçası.
Lunivore

5

Toplantının süresi sizin probleminiz değil. Bu toplantıların uzun süre devam etmesi sorun değil. AMA herkes kendinden emin hissetmelidir. Onlar yapmadı senin sorunun.

Bir gereksinimi tartışmak için kısa bir toplantı öneririm. Birkaç gün sonra ikinci bir toplantı planlayın, böylece herkes o zamana kadar hazırlanmaları gerektiğini bilir.

Daha sonra BA ve test cihazının her biri senaryolarını bulmalıdır, çünkü ikisi de yazılıma çok farklı şekillerde bakarlar. Onları kartlara yazmalarını sağlayın ve hepsini ikinci toplantıdan en az bir gün önce bir yere bir tahtaya yapıştırın, herkesin kendi zamanlarına bakmasına ve düşünmesine izin verin. Kopyaları atın, dikkate alınmayan senaryoları uygulayın.

Kabul etmediğiniz hiçbir şeyi atmayın, ancak tartışmalı olarak işaretleyin. Yazan kişiyle çok kısa bir konuşma yardımcı olacaksa, bunu yapın, ancak çoğunlukla kaydedin.

O zaman planlama / tasarım toplantınız var. Bu toplantı için sağlam bir gündeme sahip olun (kart yığını ile başlayın, çekişmeli olanları en üste koyun) ve izinsiz gitmesine izin vermeyin. Toplantıdan tüm çekişme noktalarının çözüldüğünden emin olun.


3

Her zaman bir toplantıdaki herkesin o toplantıya hazırlandığından emin olun!

Bir toplantıyı hiçbir şeyle birlikte "beyin fırtınası yapmak" için kullanmayın. Herkesin zamanını boşa harcar.

Etkili toplantılar için genel reçete:

  • tartışılmak üzere öğeleri hazırlatmak
  • tüm katılımcıların bu öğeleri okumasını (sadece okumayı değil)
  • önceden yorum toplayın ve tüm katılımcıların bunları okumasını (okumasını değil) gerektirir
  • karar almak için toplantı yapmak

1

Şikayetler Hakkında ...

Bunlarla başlayalım:

Bir geliştirici senaryoları doğrudan iş analisti tarafından verildiği ve onlarla gözden geçirdiği için zamanını boşa harcadığını hissetti.

Atölyede yaptığı şey buydu. Yani bu benim için karamsar ve kötü bir bahane. Bu geliştiricinin atölyenin incelemesini ve planlama kısıtlamalarını (ya da her ikisini) beğenmediğinden şüphelenirim.

İş analisti senaryo kapsamımızdan emin değildi (Diğer önemli şeyleri de kaçırabileceğimizi düşünüyordum)

Bu, onun tarafında yaptığı ve daha fazla insanın ona bakması dışında bir geliştirici tarafından incelenmesinden ne kadar farklı? Bunun sadece atölye çalışmasının sonucu belki biraz kaotik olduğundan şüphelenirim. Bunları uygulayarak ve entegre ederek yeterli testiniz olduğundan emin olabilirsiniz. Tüm hataları bulduğunuzdan asla emin olamazsınız ve kapsama gelince, en iyi yol onları kullanıcı hikayelerinizde diyagram haline getirmektir.

ancak daha da önemlisi, bu çalıştayın kendi başına ve daha kısa bir sürede çözebileceği için bu çalıştayın da zaman kaybı olduğunu hissetti.

Evet ve tamamen kendi başına, duvarlı bahçesinde ve bilgi paylaşmadan. Oysa gelecekteki bu çalıştayları yapmak daha verimli olabilir çünkü tüm katılımcılar bunlara nasıl yaklaşacakları hakkında biraz bilgi edindiler.

Belki toplantı bu kez yavaştı, bu her zaman olacağı anlamına gelmez. Ve dışsal bir kişi olarak, bunu doğru yapmak için biraz eğitim verirdim, farklı zihniyetlere sahip 3 katılımcıdan oluşan bir atölyede tek bir diktatörle kapsama alanının daha iyi olduğuna daha fazla güveniyordum.

Ayrıca, bir geliştiricinin bu senaryoları onunla incelemesine zaten ihtiyaç duyulduysa, atölyede geri ve ileri hareketin "Yalnızca kendi şeylerimi yapıyorum ve siz, onu tek başınıza gözden geçiriyorsunuz ve bana geri dönüyorsunuz ve bunu tekrar yapalım "yaklaşımı.

Öneriler

  • Olumlu olun ve süreç doğru olursa daha iyi olacağınızı vurgulayın.

  • Atölyeyi kolaylaştırmaya ve yolunda gitmeye çalışın.

  • Belki atölyeye kendi başlarına birkaç senaryo tasarlayan herkesle (atölyeden önce daha da iyisi) çalışarak "yalnız kurt" analizi için biraz yer açın, sonra onları triyaj edin ve birleştirin.

Ve bu beyin fırtınası işini yapmanın gerekli olduğunu düşünmüyorsanız, iyi: BA'nın yalnız çalışmasını sağlayın, ancak en azından incelemeyi bir atölye olarak yapın. Daha gözbebekleri daha iyi, alıntı Eric S. Raymond 'ın Linus' Law :

Given enough eyeballs, all bugs are shallow.

0

Burada zaten oldukça iyi cevaplarınız var, bu yüzden şimdiye kadar göz ardı edilen küçük bir konuya odaklanacağım. Üç Amigo'nun her birinin rolü oturuma ulaşabilmelidir. Her biri farklı şekillerde değer sunar, her biri farklı bir dizi kısıtlamayı anlar.

Genel olarak BA, oturuma ana mutlu yolu getirebilmeli, aynı zamanda bir iş perspektifinden ana başarısızlık senaryolarını da sunabilmelidir. Test uzmanlığı, sistemin her koşulda çalıştığını kanıtlamak için gerekli son durumları ve ek senaryoları tanımlayabilmelidir. Geliştiricinin işi gerçekten senaryo eklemek değildir, ancak çoğu zaman teknik arızalar için yapacaklardır, işleri de gereklilikleri tam olarak anlamasını sağlar, böylece sonuçları iletir ve minimum minimum iletişim ile gereksinimi uygular.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.