Bu yanıtı yazarken, bunun testle ilgili olmadığını, dokümantasyonla ilgili olduğunu fark ettim. Önce çevik manifestoyu okumalısınız :
[Biz değerli] çalışma yazılım kapsamlı belgeler üzerinde
Bu nedenle, spesifikasyonlarınızı yürütülebilir hale getirmelisiniz, yani bunları tam otomatik bir test seti olarak yazmalısınız.
Hikayelere dayalı özellikler yazmak iyi bir fikir midir?
Evet, imho, öyle. Buna "davranış odaklı geliştirme" veya "örnekle belirtme" denir. Ruby'de bu kadar yardımcı olan harika bir salatalık aracı var .
Şimdi sorun şu ki, çok fazla hikaye olduğu için, sistemin hikayelerin onunla ilgili olduğu herhangi bir kısmı için hemen net değil.
Neden net olmasını istiyorsun? Yani, gerçekten bir "test / kod" izlenebilirlik matrisine ihtiyacınız var mı? Testleri şartname olarak yazmanın avantajı, ayrı bir "gereksinimler / testler" izlenebilirliğine ihtiyaç duymamanızdır, çünkü testler gereksinim haline gelir. Entegrasyon testi amacıyla, yazılımınıza ayrı parçalar olarak değil bir bütün olarak bakmalısınız.
Sisteminizin teknik özellik testlerinizin kapsamında olmayan kısımları olan "ölü" modüller olup olmadığını görmek için bir kapsam aracına ihtiyacınız olabilir. Ancak bu özel kodun hangi spesifikasyona karşılık geldiğini gerçekten önemsememelisiniz. Bunun tersi olmalıdır: belirli bir spesifikasyondan sistemin hangi kısmının buna karşılık geldiğini bilmelisiniz. Spesifikasyonlarınızda bazı tekrarlamalar konusunda endişelenmemelisiniz. Kodunuza bir KURU ilkesi uygularsanız , aynı kodu çalıştıran düzinelerce özellik olacaktır.
Geliştiriciler zamanında çalışır, her sprint geliştirici sadece ne yapmaları gerektiğini ve yapmaları gereken değişiklikleri özetleyen bir özellik alır. Ancak bu hikaye listesini korumak ve test etmek için, gerçekten zor izleme hataları almaya ve genel olarak sadece özellikleri korumak, çünkü ekrandaki bir işlevsellik, bir dizi farklı yerde belgelenmiş olabilir. hikayeye göre bölün.
Kritik bir modülde küçük bir değişiklikle yüzlerce entegrasyon testinin kırılması nadir değildir. Burada birim testi devreye girer.
Testlerinizi, belirli bir testin yüksek düzeyde bir gereksinimi mi yoksa sadece ince bir ayrıntısını mı kapsadığını anlayabilmeniz için yapılandırmalısınız. İkincisi ise, bu testi entegrasyon testleri paketinizden ayırmalısınız. Birim testinin amacı, hataları yerelleştirmektir. Eğer bir hata verirseniz, bir ve sadece bir test hatası olacaktır.
Hikayeleri yanlış bir şekilde yazdık mı?
Bence, hikayelerinizi kullanıcı tarafından, örneğin "Müşteri", "Asistan" veya özellikler / ekranlar / iş akışları ("Satın Alma", "Geri Ödeme") gibi destanlar halinde organize etmeniz gerekir.
Ve yine, spesifikasyon testleri birim testinin yerini tutmaz. Daha fazla oku