Büyük Mühendislikte Test-Driven Development'in Stratejik Değeri

Test odaklı geliştirme (TD) bir niş uygulamadan karmaşık, görev-kahkadar sistemleri yöneten mühendislik takımları için temel bir metodolojiye dönüştü. Geniş ölçekli projelerde - yüzlerce geliştiricinin birden fazla zaman bölgesinde işbirliği yaptığı ve tek bir hata maliyeti milyonlarca dolara ulaşabilir -TDDD, kod tabanına ilk kod satırına güvenilirliğini sağlamak için yapılandırılmış bir yaklaşım sunuyor.

TDD'nin yararları küçük takımlar ve yeşil alan projeleri için iyi belgelenmiş olsa da, büyük ölçekli mühendislik ortamlarında kabul edilen benzersiz zorluklar sunar - herhangi bir takımın uygulamadığı kalıpları çizer.Her örnek, TDD'nin, gelişim yaşam döngüsüne gömülürken, kaliteli, hızlı ve takımda ölçülebilir gelişmeler sunar.

Vaka Çalışması 1: Global Financial Services Platform

Arka plan ve meydan okuma

10.000'den fazla geliştirici olan çok uluslu bir finansal hizmet şirketi, kodlarının birleştirilmesinden sonra yapılan işlem hatalarıyla mücadele ediyordu.Her bir hata, küçük bir tane bile, düzenleyici incelemeler başlattı ve yeni özellik, haftalarca aynı serbest bırakıldı.Mevcut test yaklaşımı, kod bir araya geldikten sonra manuel entegrasyon testleri üzerinde yoğun bir şekilde dayanıyordu, bu da genellikle geç test döngüleri sırasında yüzeysel hataların çoğu zaman yüzeysel bir hedef belirledi: en az% 40 oranında üretim olayları azalttı.

Anlam Yaklaşımı

Her bir seferde TDD'yi tek bir takımda çalışan bir TDD'nin tek bir takımda hesap transfer modülünden sorumlu bir takımda alması yerine, yeni katılımcılarla deneyimli TDD uygulayıcıları, TDD'yi beş dakika içinde otomatik test altyapısına da yatırım yaptılar. Üç ay sonra, takımdaki test kapsamını korumak için gerekli olan her bir takımda% 30 indirimi bildirdiler.

ölçülebilir Çıktılar

  • [FONT:0]Post-deployment kusurları% 30), ilk yıl içinde tüm platformda% 30 oranında düştü.
  • [FONT:0]Average geliştirici onboarding time shrank from altı haftadan üç haftaya kadar çünkü test paketi amaçlanan davranışın ekliyönemli dokümanı olarak hizmet etti.
  • [FONT:0)Kycle, kritik güncellemeler için zaman% 40 oranında azaldı.[DÜD 1: 1) Takımlar manuel regresyon testlerini beklemeden güvenle gemi otobüslerini düzeltebilir.

Diğer Teams için dersler

Finansal hizmetler vaka, seçici pilotlamanın - yüksek riskli, yüksek riskli bir modülle başlayan - örgütsel ivme inşa edebilir. Erken başarılar diğer takımlardan şüpheciliğe hitap edebilecek içsel şampiyonlar yaratır. Ek olarak, hızlı, güvenilir bir test altyapısına yatırım yapmak, TDD kabul edilemez; yavaş testler onları sık sık sık sık sık sık sık sık sık sık sık sık sık sık sık sık sık sık sık sık sık sık sık sık sık sık sık sık sık sık sık sık sık sık sık sık sık sık sık sık sık sık sık öldürür.

Vaka Çalışması 2: Havacılık için Uçuş Kontrol Yazılımı

Arka plan ve meydan okuma

Havacılık mühendisliği firması uçan uçan uçuş kontrol yazılımı, endüstrideki en zorlu kalite standartlarından biri ile karşı karşıya kaldı: DO-178C Seviye A. Herhangi bir yazılım hatası, büyük tasarım belgelerini yazmanın, sonra kodlamanın ve sonra testlerin -son aylarda testlerin yapılması için bir yönteme ihtiyaç duyuyordu. Takım mümkün olduğunca erken yakalamak için bir yönteme ihtiyaç duyuyordu.

Anlam Yaklaşımı

Firma TDD'yi model tabanlı tasarımla birlikte kabul etti. Mühendisler herhangi bir uygulama kodu yazmadan önce doğrudan sistem gereksinimlerinden test vakalarını yazdılar.Her test belirli bir gereklilikle haritaladı, TDD döngüsünden memnun olan bir izlenebilirlik matrisi oluşturmak, kodun sadece doğru davranmasını sağlamak için, ve tüm testler de ana dalda birleştirilmeliydi.Çünkü birçok güvenlik kritik fonksiyon gerçek zamanlı performansa ihtiyaç duyuyordu, aynı zamanda TDD döngüsünün bir parçası olarak performans testleri yazdı.

ölçülebilir Çıktılar

  • [FONT:0]Fault algılaması dramatik bir şekilde ayrıldı.[DDDDDDDD:0)))) Geliş aşamasında %85'in üzerinde kusurlar yakalandı, önceki yaklaşımla% 40'tan daha azına kıyasla.
  • [[Düzgrasyon ve sistem test süresi% 60 oranında azaltıldı.[DKD: 1) Çünkü modüller entegrasyondan önce izolasyonda test edildi, arayüz yanlış eşleşmeleri nadir hale geldi.
  • [FONT=0)Certification denetim döngüleri yaklaşık% 50 oranında kısaltılabilir.[DÜDÜDÜDÜDÜDÜDÜSTRİYESİ:0).Certification denetim döngüleri neredeyse% 50 kısaltılabilir.[FONTT:1).

Diğer Teams için dersler

Uzay örneği TDD'nin sadece web uygulamaları için değil – güvenlik-kritik gömülü sistemlerde eşit şekilde uygulanabilir olduğunu güçlendiriyor. Anahtar, her testin resmi bir gereklilik için, bu testlerin hem de denetim edilebilir testlerin yapıldığı testlerin (medikal cihazlar, otomotiv, endüstriyel kontrol) kod kalitesini artırmak için bu modeli kabul edebilir.

Vaka Çalışması 3: Global E-Ticaret Market

Arka plan ve meydan okuma

Yüzlerce milyon kişilik bir e-ticaret platformu, Black Friday gibi zirve alışveriş olayları sırasında sık sık hizmet kesintileri deneyimliyordu. - 2.000 hizmet - manuel test pratikleri yapmak için oldukça iyi bir iş vakası yarattı.

Anlam Yaklaşımı

TDD veyagwide için teşvik etmek yerine, şirket, dağıtımdan önce en çok böcekleri yakalayan özel bir “kalkıcılık” ekibini yarattı.Bu ekip, olumlu bir test şablonları ve geliştiricilerin doğru testleri hızlı bir şekilde yazmak için daha kolay hale getirdiği ortak bir test kütüphanesi geliştirdi.Onlar ayrıca tüm hizmet sahipleri tarafından yapılan tüm hizmet sahiplerinin% 80'i yakaladığı bir avuçdan satın aldı.

ölçülebilir Çıktılar

  • [[Düzücüksel olaylar sırasındaki en az% 70 oranında düşüş gösterdi.[DÜDÜT:1) En kritik işlem akışları her serbest bırakılmadan önce koşan kapsamlı test süitleri tarafından kapıldı.
  • [[0)İş teslim hızı %25 arttı.[[DDDDDD:0) Testleri başlangıçta eklendiğinde, cayma ve regresyon sorunları telafiden daha fazla azaltıldı.
  • [FONT:0]Cross-team işbirliği gelişmiştir. Testler paylaşılan bir dil haline geldi; takımlar, arayüzlerinden beklenen diğer hizmetleri daha iyi anlayabilirler.

Diğer Teams için dersler

E-ticaret davası TDD'nin alt düzeyde kabul edilebilir olduğunu gösteriyor, teşvik odaklı bir şekilde. üst düzey bir görev yerine, organizasyon TDD'yi istemesi için takımları yarattı - eğitim aracı ve tanıma.Bu yaklaşım özellikle de bağımsızlık ve mülkiyet bakımından etkili.

Vaka Çalışması 4: Elektronik Sağlık Kayıtları (EHR) Sistemi

Arka plan ve meydan okuma

Büyük bir sağlık teknolojisi şirketi, bir miras monolithic sistemini değiştirmek için bir sonraki nesil elektronik sağlık kayıtları platformu inşa ediyordu. Yeni platform, şirketin uygulama öncesi bakım sistemleri ile etkileşime girmesiyle hassas hasta verileri işlemek için gerekliydi.

Anlam Yaklaşımı

Şirket, yeşil alan projesinin başından beri kaliteli bir kültüre büyük yatırım yaptı. Her özellik ekibi TDD'yi, eksik veri veya ağ zamanı gibi kenar davalarını idare edebilir. Şirket ayrıca emlak kabulü, laboratuvar sonucu ingestion, ilaç uzlaşması - herhangi bir uygulama kodu yazmadan önce test paketi, “ötekim dışı hastane arayüzü sürümlerine karşı çalıştırılabilir” olarak satın alındı.

ölçülebilir Çıktılar

  • [FONT:0]Zero kritik değer hataları ilk 18 ay boyunca üretimde rapor edildi.[ Kapsamlı test kapsamı, gelişim sırasında potansiyel veri toplama sorunları yakaladı.
  • [FONT:0] Pilot hastanelerle ilgili testler %30 daha az zaman içinde tamamlandı [DDÜT:1] çünkü arayüzler zaten testlerle doğrulandı.
  • [FONT:0)Gelişmiş olan tatmin puanları gelişmiştir[[DÜDÜT:1); retrospektif bir anket, test paketinin% 91'inin onlara mevcut işlevselliği bozmadan sistemi geri vermelerini ve uzatmayı sağladığını göstermiştir.

Diğer Teams için dersler

Sağlık durumu, TDD'yi kullanırken alana özgü testlerin önemini vurgulamaktadır; jenerik CRUD işlemleri yeterli değildir; testler, gerçek iş akışlarını ve kenar koşullarını alana eşsiz yansıtmalıdır.Ayrıca TDD'nin bir projeden ilk kez kabul edildiğinde en etkili olduğunu gösterir; resping testleri mümkün ancak daha fazla çaba gerektirir.

Bu Vaka Çalışmaları'ndan Anahtar Dersler

Bu dört farklı endüstride –finans, havacılık, e-ticaret ve sağlık – çok sayıda ortak desen ortaya çıkabilir. Bu dersler büyük ölçekli TDD kabulünü göz önünde bulundurmak için herhangi bir mühendislik organizasyonuna rehberlik edebilir.

Küçük başlayın, Değerin

Tüm dört kuruluş kontrollü bir pilotla başladı.Tek bir modül (financial hizmetleri), organizasyonun geri kalanını takip etmesini istemeden önce tek bir ihtiyaç seti (aerospace), bir avuç takım takım (örneğin, e-ticaret) veya yeşil alan projesi (sağlık bakımı), ilk kapsamı sınırlıydı.Bu, ekiplerin yerel uzmanlık geliştirmesine izin verdi ve organizasyonun geri kalanını takip etmesini istedi.

Hızlı, Güvenilir Test Altyapısı'nda Yatırım

Geliştiriciler bir dakikadan fazla veya iki tane daha fazla test yapmazlar. Finansal hizmetler ve e-ticaret şirketleri hem test yürütme hızına yatırım yaptı, ancak havacılık ekibi TDD döngüsünün bir parçası olarak performans testleri tasarlarken. Yavaş bir test paketi, TDD uygulamaları ölçeklendirmek için en yaygın bir neden TDD uygulamaları çökertme.

Havacılık ve sağlık alanında, her test, teknik yoğun iş yerine doğrudan yorumlanabilirdi, iş onları yazmanın ön yatırımını desteklemek için daha olasıdır.

Incentives ve Tooling ile Kültürel Değişimi Destekleyin

TDD'yi kabul etmek, geliştiricilerin günlük çalışmalarını nasıl düşündüklerini değiştirmek gerektirir. e-ticaret davası, kaliteli sonuçlar için ödüllendiren takımları gösterir (fewer olayları, yüksek test kapsamı) pozitif akran basıncı yaratabilir. Finansal hizmetler şirketi deneyimli uygulayıcılarıyla eşleştirilmiş TDD novices, sağlık şirketi TDD'yi yeni mühendisler için işe alma gereksinimini yaptı.

Hangi Maddeleri Ölçülüyor

Tüm dört kuruluş TDD'nin etkisini ölçmek için belirli ölçümler izledi: hata kaçış hızı, döngü zamanı, zaman, zaman ayırma süresi ve kalite maliyeti. Bu ölçümler liderlik yapmaya devam etti ve ekiplerin iyileştirme alanları tespit etmesine yardımcı oldu. vanity metrics like "toplam test kodu"; bunun yerine, iş ile ilgili sonuçlar.

Ortak Pitfalls ve Them'dan Nasıl Kaçırmak

Bu tuzakları erken tanıyan en başarılı kabul bile, takım aylar süren boşa harcanmış çabayı kurtarabilir.

Fragile Testleri

Testler ayrıntıları uygulamak için çok sıkıca çiftleşmiştir - örneğin, yöntem aramalarının veya iç nesnelerin yapısını kontrol etmek - davranışların doğru kalmasına rağmen yeniden faktörleme sırasında kırılırlar.Bundan kaçınmaya odaklanma testleri gözlemlenebilir davranışlar ve halk sözleşmeleri. Test çiftleri mümkün olduğunda, gerçek sahte uygulamaları mümkün olduğunca derin alaylara güvenmek.

Aşırı veya aşağılayıcı

Bazı takımlar, önemsiz kod için testler yazmaktadır (örneğin, basit bir toplayıcılar) karmaşık iş mantığını test ederken, iyi bir kod parçasının şartsız mantık, döngüler yoktur ve dış sistemlerle hiçbir etkileşime gerek yoktur, muhtemelen bu süreçler verileri veya kararların test edilmesi gerekir. Sağlık ekibi kenar davalarını kapsamak için mülk temelli bir test kullandı.

Senior Engineers'tan Direniş

TDD olmadan başarılı olan Seasoned geliştiricileri, endişelerini gizlemek için en yüksek şüpheci olabilir - pilotdan gelen ölçümleri göster.Birkaç durumda, bir meraklı ile programlama herhangi bir kaydıraktan daha hızlı değiştirebilir.

Büyük Organizasyonlarda Scaling TDD Across Large Organizations için en iyi uygulamalar

Bu vaka çalışmaları boyunca gözlemlenen desenlere dayanarak, burada mühendislik liderleri için uygulanabilir adımlar vardır.

  1. [FONT:0] TDD şampiyonu takımı anlamına gelir.). Bu grup, başkalarını, rafineri uygulamalarını ve gerekli altyapıyı savunan deneyimli uygulayıcıları içermelidir.
  2. [FONT:0]Set açık, bir kabul planı.[DD'ye en açık olan takımların ilk 10-20'sini tanımlayın. rol modellerine bakalım.
  3. [FONT:0] Paylaşılan bir test hizmeti kütüphanesi inşa edin.[DÜT:1] Yeniden test çiftleri, iddia yardımcıları ve veri fabrikalarını test ederek çoğaltmayı azaltın.
  4. [FONT:0)Integrate TDD'nin yapılmasının tanımına göre; Hiç bir hikaye, ilgili testlerin geçmesine kadar tamamlanmış ve sürüm kontrolüne kontrol edilir.
  5. [FONT:0]Review test kalitesi kod incelemelerinde kalite test eder.[DDD: 1) Çok fazla sert veya bu tekrarlanan kapsama alanı test koduna bakın. İlk sınıf bir sanatifact olarak test kodu ele alın.
  6. [FONT:0]Celebrate başarıları halka açık olarak.[D:0]Bir takım TDD kullanarak hata oranını %50 oranında azaltırsa, şirket çapında toplantılar ve haber bülteninde bu hikayeyi paylaşın.

Sonuç Sonuç Sonuç Sonuç Sonuç Sonuç Sonuç Sonuç

Burada sunulan vaka çalışmaları - finansal hizmetler, havacılık, e-ticaret ve sağlık - test odaklı geliştirmenin başarıyla büyük ölçekli mühendislik projelerinde kabul edilebilir olması gerekir. Her organizasyon eşsiz zorluklarla karşı karşıya kaldı, ancak hepsi de benzer bir oyun kitabı takip etti: küçük, altyapıya yatırım yapmak, teşviklere ve araçlama ile kültürel değişimleri desteklemek. ölçülebilir sonuçlarla ilgili sonuçlarla ilgili olarak daha az hata, daha hızlı sürümler ve daha güvenli takımlar.

TDD inisiyatifini göz önünde bulundurarak, kanıt açık. koddan önce yapılan aramalarda ön yatırım, düşük kesinti, düzgün entegrasyon ve daha yüksek müşteri memnuniyeti yoluyla birçok kez kendi başına ödemelerde başarısız olduğunu söyleyebiliriz.Bir mühendislik direktörü olarak, "Biz test yazmayı göze alamadığımızı söyleyebiliriz."


[FONT:0]Dönemli kaynaklar:[Dönemli:[Dönemli)

  • [0]Test Driven Development: A Practitioner's Guide (Strate Logic)).
  • [FONT=0)Martin Fowler: Test Driven Development).
  • [0] TDD'de endüstriyel bağlamda araştırma (AraştırmaGate) )[değiştir | kaynağı değiştir]