Yönetimi, birim testlerine “yatırım” yapmaya nasıl ikna ediyorsunuz?


44

Yöneticinizi birim testi yapmasına izin vermeye nasıl ikna ettiniz?

"Kullanmak" ile, zaman içerisinde geliştirme, kaynak kontrolü yapmak ve birim testlerini sürdürmek için giriş yapmak, vb.

Tipik yönetim itirazları:

  1. Müşteri birim testleri için ödeme yapmadı
  2. Proje, ünite testi için zaman vermiyor
  3. Teknik borç? Hangi teknik borcu?

Başka itirazlar biliyor musunuz? Cevapların neydi?

Şimdiden teşekkürler!


6
Artofunittesting.com'da bu konuyla ilgili bir bölüm var .
StuperUser

6
Testleri ve TDD'yi karıştırmayın, LÜTFEN ! TDD yapmadıkça, insanların testlere ihtiyaç duymadıklarını düşünmelerini sağlar!
P,

1
İkna etmeye ihtiyacı olan insanlar ikna edilemez. Senaryonuzu kayıp bir sebep olarak kabul edin.
Mark Canlas

@Pavel, ilk başta senin nitpicking olduğunu düşündüm, ama haklısın. Birim testine "izin" vermek istiyorum. TDD benim kendi şeyim.
louisgab

6
kodunuzun beklendiği gibi çalıştığını doğrulamak için neden izin almanız gerektiğini düşünüyorsunuz?
Jaap

Yanıtlar:


25

Son zamanlarda bu sorunla karşılaştım, bir müşteri metodolojimizle gemideyken, ancak daha yüksek bir yönetim geliştiricilerin geliştirmek yerine zaman testlerini harcadıkları ve bundan endişe duydukları yönündeki rüzgârları aldılar - sonuçta, testleri yapacak QA insanlar vardı! Bununla nasıl başa çıktığımla ilgili blog yazdım:

http://practicalagility.com/show-them-the-numbers-its-results-that-matter/

Özetlemek gerekirse, tahmini saatlerimizi projenin gerçek saatlerine göre karşılaştırdım ve ardından kusur oranımızı diğer ekiplerin kusur oranlarıyla karşılaştırdım. Bizim durumumuzda bu sayılar olumlu bir şekilde karşılaştırıldı ve daha fazla kaygı yoktu.

Bu tecrübeye dayanarak vardığım sonuç:

... kimseyi bir şey yapma yaklaşımınızın pratik ve pragmatik olduğuna ikna etmenin en iyi yolu, onu yapmak ve diğer yaklaşımlara karşı ölçmektir. İnsanlar dogmayı umursamıyorlar veya neden bir şeyin en iyi yol olması gerektiğini düşünüyorsunuz. Sadece insanlara göstererek ve yaklaşımınızın etkinliğini ölçerek uygulamalarınızın etkili olduğunu gerçekten gösterebilirsiniz.

Diğer projelerde, birim testleri oluşturmayan veya TDD yapmayan müşteri geliştiricileriyle birlikte çalıştık ve kırdıkları testleri sürdürmek zorunda kaldık. Ancak, TDD yaklaşımını bu kod geliştiricilere, kodda ne kırdıklarını bilmeden söyleyebiliyorsanız satmak çok kolay!

Bu yüzden, sizin durumunuzda, eğer gerekirse (gizlice değiştiririm (belki de sık sık değişiklikleri veya sorumlu olduğunuzu test etmeye başlayabileceğiniz küçük bir kod alanı vardır), ancak sayılarınızı takip edin - sayı nedir? testlerinizi oluşturma çabası? Kusur oranı nedir? Bu, diğer projelerle / ekip üyeleriyle nasıl karşılaştırılır?

Benim düşünceme göre, hiç kimse izinlerini istememeli ya da işlerini doğru bir şekilde yapmak istedikleri için özür dilemeli ve herhangi bir profesyonel geliştirici mümkün olduğu kadar pratik olan yerlerde otomatik testlerle kodlarını test etmeye çalışmalıdır. Umarım bu davada ikisinin de ikisidir. İyi şanslar!


Yanıtınız için teşekkürler. Bağlantıyı denedim ama bozuk görünüyor. Kullanılabilir olsaydı, okumaktan zevk alırdım.
Joe J

Joe, bağlantı için üzgünüm. Bunu kişisel blogumda tekrar gönderdim, bu yüzden bağlantının şimdi çalışması gerekiyor.
Paddyslacker

2
Bu iyi bir cevap ama herkes yaptıklarını başka bir projeyle kolayca karşılaştıramaz. Nerede okuduğumu hatırlayamıyorum ama gördüğüm bir iş adamı için en inandırıcı argüman, birim testini çift girişli defter tutma ile karşılaştırmaktı. Doğal olarak, sayıları iki kere yapmak zaman kaybıdır. Ancak muhasebe hakkında bir şey bilen herkes, kitapların sadece bir tarafını affedilmez bir şekilde sorumsuz bir görev ihmali olarak kabul eder. Birim testi, çift girişli defter tutmaya ilişkin geliştirme analogudur.
JimmyJames

@JimmyJames, başka bir projeyle her zaman kıyas yapamayacağınıza katılıyorum ve çift girişli defter tutma konusundaki analojinize katılıyorum. Testler olmadan varolan bir kod tabanında birim testlerini kullanmaya başlıyorsanız, birim tabanının kusur oranını ve birim ölçümlerin kapsadığı kısım ile ele geçen kod arasındaki diğer ölçümleri karşılaştırabilir, böylece yedeklenecek bazı gerçek verileriniz olur. senin de yaklaşımın.
Paddyslacker

@Paddyslacker Katılmıyorum. Yine de bir parça tavuk ve yumurta olayı. Ünite testleri yazmaya başlamak için izne ihtiyacınız varsa, izin verilmesi gerektiğini kanıtlamak için bunları kullanmak zordur. Ya da değil. Gerçek verilerle karşılaştırma çok, çok daha güçlü bir argümandır. Bu alternatif argüman daha zayıf fakat montajı daha kolaydır.
JimmyJames

20

Yatırım Getirisini (YG) Göster

Otomatikleştirilmiş testlerin yazılması zaman alır. Bir Zamanlar. Otomatik testlerin yapılması sıfır zaman alır, çünkü çalışırken başka bir şey yapabilirsiniz.

Örnek: X testinin manuel olarak test edilmesi 30 dakika sürer. Bunun için otomatik bir test yazmak 1 saat sürer. Hiç hatamız olmasa bile, proje süresince X özelliğini, bağımlı katmanları ve bileşenleri değiştirilirken on kez test etmek zorunda kalacağız. Bu nedenle, X özellik testinin otomatikleştirilmesi, proje ömrü boyunca bize 4 saat kazandıracak.

Gerçekte, otomatik testlerin gerçekten karşılığını veren bir böceğiniz olduğunda - İlk önce, böcekleri erken ve ucuz buluyorlar, bu da zaman ve utançtan tasarruf ediyor. İkincisi, zor bir hata yaşarsanız ve bunu çözmek için birçok kod oluşturma-test döngüsünü yaşarsanız, manuel testlerden tasarruf edilen zaman olağanüstü hızlı bir şekilde artmaktadır.

İşletmeler zamandan ve paradan tasarruf etmeyi anlarlar. Bu nasıl satar?


3
Ayrıca uygulama dağıtıldıktan ve bir değişiklik yapılmasını istediğinde, değişikliklerinizle ilgili herhangi bir şeyi kırıp kırmadığınızı görmek çok daha kolaydır.
m4tt1mus

4
@ mattimus: kesinlikle - otomatik bir test paketi yıllık gelir gibi karşılıyor; Aslında, sigorta
Steven A. Lowe

15

Eğer zaten onlarla yüzleştiyseniz ve sorun değil, ancak onlarsız rahat bir kod yazmıyorsanız ... bir daha sorma. Sadece onları yazın ve kontrol etmeyin.

Yönetim, kod satırlarını saymayacak, ancak tüm girişlerinizin QA (veya müşterilerden) daha yüksek geçiş oranlarına sahip olduğunu görecekler ve sonunda neden ... "BAM! TDD gibi olabilirsiniz" diye soracaklar. !"

Proje, süreç veya kaynak ile uğraşmıyorsunuz ... bu yüzden olumsuz bir sebep görmüyorum. Dürüst olmak gerekirse, tüm manuel çalıştırma + giriş + kontrol sonuçları testlerinizi çalıştırmanın neden farklı bir zaman dilimi olduğunu anlamıyorum.


4
+1: Yine de test etmeniz gerekiyor. Testin "yapılması" gerektiğiyle ilgili bilgi vermek yerine birim testlerini yazmanız yeterli.
S.Lott

1
Yalnızca yerel olarak sahip olmak, ortak bir kod tabanına sahip bir ekip ortamında iyi çalışmaz, diğer kişiler de değişiklikleriyle testlerinizi bozmaya devam edecektir.
Alb

3
@Alb: Yönetimin işe alınmadığı zamanlarda ödediğiniz fiyat - testlerden daha iyidir.
Steven Evers,

3
Bravo. Herhangi bir test, test yapmamaktan iyidir. Bir test, başkasının değişikliği nedeniyle bozulursa, API’nin neden herhangi bir duyuru olmadan değiştiğini sormak için iyi bir nedendir.
S.Lott

“Yönetim kod satırlarını saymayacak” bu çok doğru. Cevap için teşekkürler!
louisgab

7

1) Müşteri birim testleri için ödeme yapmadı

Müşteri (düşündüklerini) çalışan bir çözüm için ödedi. Sözleşmelere bağlı olarak tamir hataları aslında şirketiniz için karlı olabilir. Yeterli kilit varsa. Çalışan bir çözüm için para almaya geri dönelim. TDD bu hedefe yardımcı olmalıdır.

2) Proje TDD için zaman vermiyor

TDD daha uzun sürmez. Gereksiz veya gereksiz kod miktarını azaltmalı ve kod tabanını testlerin neyin başarılı olduğuna odaklanmalıdır. Tüm testler, test kalitesi ve uygunluğa bağlı olarak, kodun yapıldığı anlamına gelir.

3) Teknik borç mu? Hangi teknik borcu?

Var olan koda geriye dönük olarak testler eklemek için tartışmış olabileceğiniz izlenimini edindim. Bu, en iyi zamanlarda bir kabus satışıdır ve beklediğiniz faydaları beraberinde getirmez. Ancak, hataları giderirken testler eklemek kabul edilebilir ve uzun vadede yardımcı olacaktır.

Testleri Snorfus'un önerdiği gibi yazmayı tavsiye etmiyorum. Teoride güzel geliyor, ama birim testleri can ve bunu zaman içinde değişim. Gereksinimler değiştikçe, yeni özellikler eklenir ve birim testlerinin güncellenmesi gerekir. Bir ekibin parçası olarak çalışıyorsanız, diğerleri testler / düzeltmeler ekledikçe, birim testleriniz tarihlendirilecektir.

Yenilerini yükseltmek yerine bahsettiğiniz belirli noktalara değiniyorum çünkü ilerlemede ya da neden kilitli kaldığını anlamak için orada bir yol var.


5
"Yine de testleri yazmayı önermiyorum" - Daha önce bu pozisyondaydım. Testleri kendiniz sürdürmek zordur. Bu yük çok fazla artarsa, testleri düşürmeniz yeterlidir. En azından, kod basamağında aktif olarak çalışırken, ilk tasarım / düzeltmede yardımcı olması gereken, gerilemeleri yakalayamıyorsanız, onları kullandınız. Tasarım amaçlı birim testlerinde çok büyük değer buldum, ancak testler kodla aynı seviyede tutulmadığında oldukça az gerileme buldum.
Steve Jackson,

1
Özellik ekleyen / düzelten ve birim sınamalarını güncellemeyen, birim sınaması kavramını anlamadı.
Akira Yamamoto

Gerçekten de Akira, bu TDD'nin veya ilgili süreçlerin uygulanabilirliğini etkileyen en kafa karıştırıcı konulardan biri. Bunu 7 yıl önce yazdığımı aklımda tuttum, hala bir sürü konu var. Yazma (iyi, nesnel, özlü) testler zordur. Hiçbiri olmayan bir kod temeli için test yazmak çok zor. Teknik olmayan yönetimi sağlamanın yararlarının zor olduğunu görmek (bununla ilgili bir makale okumadıkça bu durumda ölüme "ölçülecek" bir şey değildir. Birimin ne olduğu kavramı bile zor. Ben bir klasistim. benim bir birim fikrim, Mockist'lerinkiyle aynı değildir (30 karakter kaldı)
Ian

4

Üretim sorunları olan her müşteri için,

  1. Birim testi yazın ve yöneticiye, senaryoyu kapsayan bir birim testi eklediğinizi söyleyen bir e-posta gönderin.

  2. Ve ona söyle, bu sorun üretimde bir daha olmayacak çünkü ünite testimiz her gece çalışıyor ve bu ünite test arızasını izleyerek kodun üretime girmesinden önce bunu öğreneceğiz.

  3. Ona, bu Ünite testini kodun üretime girmeden önce uygulamamız durumunda, bu üretim sorununun asla gerçekleşmeyeceğini söyleyin.

Bunu sürekli ve ısrarla yapın ve yakında ikna olacaktır. Yöneticiler müşterinin üretim sorunlarıyla yüzleşmesinden hoşlanmaz ve Birim test fikrini satın alır. İyi şanslar.


Bu iyi :-)
BVengerov
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.