Test Agile metodolojisinin gerekli bir parçası mı?


24

Agile metodolojilerini uygulamaya çalışan çok sayıda takımdayım ve bu takımlar test merkezlidir. Test, Çevik metodolojiyi uygulamanın gerekli bir parçası mı yoksa yıllar boyunca süren bir XP uygulaması mı?


76
Test, herhangi bir kaliteli yazılım geliştirmenin gerekli bir parçasıdır.
Telastyn

2
olası yinelenen Can sen TDD (testi güdümlü geliştirme) yapmadan Çevik olabilir mi? - Katılmıyorsanız bana haber verin ...
Murph

11
Kopyayla aynı fikirde değilim. Test TDD'den daha geniştir ve daha geniş olan sorunun farklı cevapları vardır.
Bart van Ingen Schenau

@BartvanIngenSchenau ile aynı fikirdeyim. Sadece TDD yapmaktan çok daha geniş bir faaliyet testi yapmakla kalmaz, aynı zamanda TDD ve ünite testi de aynı değildir. Birçok insanın son ikisini karıştırdığı için şaşırdım.
Andres F.

Çevik / Scrum'da içeriğe bağlı olduğu anlamına gelen "Bitti Tanım" kavramına katlanmış olabilir. Agile pazarlama, satış vb. Alanlarda uygulandığında, yazılım testi ile benzer kavramlara sahip değildir, ancak yine de "yapılan bir tanım" a sahiptirler. Yazılım için, "yapılan tanım", nihai sonucun kalitesini (hem görülebilir hem de dahili kod kodunu) ve ayrıca yapılan test seviyesini dikkate almalıdır.
rwong

Yanıtlar:


33

Test, çeviklik açısından kesinlikle esastır, çünkü çevik artan artışlara dayanır: Zorluk şu anki değişikliklerin eski kodunuzu nasıl etkileyeceğini görmek zor olabilir. Bir şeyi bozmadığınıza emin olmanın en iyi yolu, onu test etmek ve NASIL test etmeyi bilmek. Bu şekilde, hatayı hemen bulursunuz, yolun aşağısında değil, bazı eski özelliklerin kodunu yazarken tam olarak ne yaptığınızı unutuyorsunuz.

Bunun daha geleneksel, yukarıdan aşağıya tasarım tipi programlamasından farklı olmasının nedeni, bu ortamda, a) bitmiş ürüne sahip olana kadar test etmeniz çok zordur b) teoride, tüm tasarım kriterlerini aynı anda göz önünde bulunduruyorsunuz ve bu nedenle önceki tasarım kararlarını kıran bir tasarım kararı verme olasılığınız azalır.


2
Gelecekteki artımlı değişikliklerin önceki işlevleri bozmaması ve ünite testlerinin bunu kontrol etmenin kolay bir yolu olması da önemlidir.

1
Test yazılım geliştirme için kesinlikle gerekli olduğunu söyleyebilirim .
Andres F.

@Snowman Test! = Birim testi. Ayrıca, birim testi! = TDD (sadece ... durumunda).
Andres F.

@AndresF. Doğru, normalde birim test etmenin yukarıda belirtilen nedenlerden dolayı Agile'nin ayrılmaz bir parçası olduğunu düşünüyorum . Okuma hatası.

8

Muhtemelen otomatik testlerden, birim testlerinden, entegrasyon testlerinden vb. Bahsediyorsunuz. Bunlar manuel testlerden daha hızlıdırlar (test yapanlar ve benzeri) çünkü çok yavaşlar, bu nedenle yaptığınız her küçük değişikliği test etmek mümkün değildir. Çevik küçük hızlı yinelemeler nedeniyle, saatler veya günler yerine saniyeler veya dakikalar içerisinde doğruluğu doğrulayan testlere sahip olmak çok yararlıdır.


8

Eğer testleriniz yoksa, kodunuzun çalıştığını nereden biliyorsunuz?

Düzenleme: Testlerin kodun çalıştığını ispatlayamadığı iddiası tek bir önemli terimi, yani işe yaramazsa tanımlamayı başaramaz . Bir programın çalışması için ne anlama geliyor? Bu terim belirsiz kalırsa, herhangi bir programın çalıştığını kanıtlamak veya emin olmak için hiçbir yolu yoktur. Hiç.

Öte yandan, eserleri "şartnameye göre davranmak" olarak tanımlayabilirsiniz . Artık yalnızca kodun çalıştığını göstermek için testleri kullanamazsınız, ancak testlerin kendileri de kodunuzun davranışının çalıştırılabilir bir belirtimi olarak işlev görebilir. Başka bir deyişle, iyi yazılmış bir test takımı, çalışmanın ne anlama geldiğini tanımlar .

Bu düşünce tarzı, sizi bir hatanın anlamını yeniden incelemeye zorlar . Kodunuz tüm testleri geçerse, kodda hiçbir hata yoktur. Buna rağmen, sistem olması gerektiği gibi davranmazsa, davranışı doğru bir şekilde belirtilmez. I. e. Hata testlerde tanımlanmış olan özelliktedir.

Yazılım geliştirmeye yönelik bu yaklaşım, bir sistemin işlevsel spesifikasyonunu, dünyadaki her yazılım mühendisliği kitabına göre, çok iyi bir şey olan uygulamasından ayrıştırmaktadır. Aynı zamanda, bu yaklaşım uygulamanızın her zaman işlevsel özelliklere karşılık gelmesini sağlar.


13
Müşteriler hata raporlarını doldurmayı ne zaman durdurur? :-)
gbjbaanb

3
Doğru olduğunu kanıtlayabilirsin. Temiz Oda Yazılım Mühendisliği, TDD'ye çok benzer, ancak sadece teknik özelliklerden ve kanıtlardan üretilen otomatik olarak istatistiksel testler üretti.
Jörg W Mittag

1
-1 - "Test, böcek yokluğunu değil varlığını gösterir."
Telastyn

@Telastyn, Test yapılmaması neredeyse kesin olarak böceklerin varlığını gösterir. Öte yandan, iyi yazılmış bir dizi test, kodunuzun ne yaptığına ilişkin yürütülebilir bir özellik sağlar.
Dima

Katılmıyorum, ancak testlerin hiçbiri kodunuzun çalıştığını kanıtlamaz .
Telastyn

5

Hayır, gerekli değil"

Çevik ilkeleri hiçbir şey söylemek doğrudan testi hakkında.

Ama Çok Tavsiye Edilir

Agile'nin sürdürülebilir bir sürece bağlılığı, sürekli / artan teslimat ve yazılım kalitesi göz önüne alındığında, otomatik test şu anda çoğu proje için mevcut en iyi çözümdür

İstisnalar (Jörg W Mittag tarafından belirtildiği gibi), kesinlikle doğru geliştirme araçlarını, kod üreten meta-programlama sistemlerini, vb. Ancak bu tür sistemler nadirdir.


4

Hem Çevik hem de XP, Büyük Tasarım Yukarı Önden kaçınmaya çalışır . BDUF'da şartlar toplanır, resmi bir şartname yaratılır, sonra kodlama yapılır, sonra test yapılır. Bu, tıbbi ekipman, uzay sondaları vb. Gibi iyi tanımlanmış, görev ve hayati öneme sahip sistemler için anlamlıdır.

O sorunlar için iyi çalışmaması nedeniyle Çevik Bu akışı önler değildir "müşteri bu hafta için sorar değiştirir ne olursa olsun" örneğin, iyi tanımlanmış. Hala resmi bir şartnameye ihtiyacımız var, bu yüzden ne yapacağımızı ve ne zaman yapıldığımızı biliyoruz, ancak bir tür yazılı belge yerine kodları otomatik testler biçiminde kullanıyoruz .

Otomatik ünite testleri yazmak hızlı, çalıştırması kolay ve çok modüler / ayrıştırılmış. Bu, gereksinimleri resmi olarak belirlemek ve kontrol etmek için onları hızlı bir yol yapar.

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.