Agile ve Scrum’da Test Mühendisinin Rolü

144
0

Yazılım geliştirme dünyası, esnek ve hızlı teslim süreçlerine odaklanan Agile metodolojisine doğru büyük bir dönüşüm yaşadı. Agile’ın en yaygın çerçevelerinden biri olan Scrum, ekiplerin uyumlu, işbirlikçi ve sürekli iyileştirmeye dayalı bir şekilde çalışmasını sağlar. Bu bağlamda, Test Mühendisleri yazılımın kalitesini güvence altına almak için kritik bir rol üstlenir. Geleneksel test süreçlerinden farklı olarak, Agile ve Scrum’da test mühendislerinin görevleri daha fazla entegrasyon, otomasyon ve sürekli test prensiplerine dayanır. İsterseniz önce tarihçeleri ile ufaktan konuya başlayalım.

1- Agile ve Scrum’ın Tarihçesi

Agile’ın Doğuşu

Agile metodolojisi, 2001 yılında 17 yazılım uzmanı tarafından oluşturulan Agile Manifesto ile doğmuştur. Bu grup, geleneksel yazılım geliştirme yöntemlerinin (örneğin, Waterfall) yavaş ve katı yapısından dolayı projelerin müşteri ihtiyaçlarına yeterince hızlı adapte olamadığını fark etti. Agile Manifesto, yazılım geliştirmede daha esnek, müşteri odaklı ve sürekli iyileştirmeye dayalı bir yaklaşım sunarak sektör için bir dönüm noktası oldu.

Manifesto şu dört temel prensibe dayanıyordu:

  1. Bireyler ve etkileşimler, süreçler ve araçlardan daha değerlidir.
  2. Çalışan yazılım, kapsamlı dokümantasyondan daha önemlidir.
  3. Müşteri ile iş birliği, sözleşme pazarlıklarından daha önemlidir.
  4. Değişime tepki vermek, bir plana bağlı kalmaktan daha önemlidir.

Ayrıca Agile Manifesto, 12 prensip belirleyerek yazılım geliştirme sürecini daha verimli ve müşteri ihtiyaçlarına uyumlu hale getirmeyi amaçladı.

Scrum’ın Ortaya Çıkışı

Scrum, Agile metodolojisinin en popüler çerçevelerinden biridir ve 1990’ların başında geliştirilmeye başlanmıştır.

  • 1986: Hirotaka Takeuchi ve Ikujiro Nonaka, “The New New Product Development Game” adlı makalelerinde Scrum terimini ilk kez ortaya attılar. Bu makalede, yazılım geliştirme süreçlerinin tıpkı bir rugby takımının topu hızlı bir şekilde bir oyuncudan diğerine aktarması gibi çalışması gerektiğini belirttiler.
  • 1990’lar: Jeff Sutherland ve Ken Schwaber, Scrum modelini yazılım geliştirmeye uyarladı.
  • 1995: Jeff Sutherland ve Ken Schwaber, Scrum Çerçevesini resmi olarak tanımlayarak ilk kez halka duyurdu.
  • 2010: Scrum Guide yayınlandı ve Scrum’ın temel prensipleri resmileştirildi.

Bugün Scrum, yazılım geliştirme dışında birçok sektörde (finans, sağlık, üretim, pazarlama vb.) da kullanılan en yaygın Agile çerçevelerinden biri haline gelmiştir.

2- Agile ve Scrum’ın Temelleri

Agile ve Scrum, yazılım geliştirme sürecinde esneklik, hız ve müşteri memnuniyetine odaklanarak verimliliği artıran yaklaşımlardır. Şimdi bu iki kavramın temel yapı taşlarını inceleyelim.

Agile’ın Temelleri

Agile, yazılım geliştirme süreçlerinde katı planlara bağlı kalmak yerine, değişikliklere hızlı bir şekilde uyum sağlamayı amaçlayan bir yaklaşımdır. Agile’ın temel prensipleri şunlardır:

Agile Manifesto’nun 12 Prensibi:

  1. Müşteri memnuniyeti en önemli önceliktir. Erken ve sürekli teslim edilen yazılımla sağlanır.
  2. Değişen gereksinimlere süreç boyunca uyum sağlamak esastır.
  3. Çalışan yazılım, belirli aralıklarla (tercihen birkaç haftada bir) teslim edilmelidir.
  4. İş dünyası ve yazılım geliştiricilerinin sürekli iş birliği içinde olması gerekir.
  5. Projelerde motivasyonu yüksek bireyler yer almalı ve onlara güvenilmelidir.
  6. Yüz yüze iletişim, bir ekip içinde en etkili bilgi aktarım yöntemidir.
  7. Çalışan yazılım, ilerlemenin en önemli ölçüsüdür.
  8. Sürdürülebilir kalkınma prensibine bağlı kalınmalı, ekipler uzun vadede sabit tempoda çalışabilmelidir.
  9. Teknik mükemmellik ve iyi tasarım sürekli olarak geliştirilmeli.
  10. Basitlik, yani gereksiz işlerden kaçınmak, esastır.
  11. Öz-organize ekipler, en iyi tasarımları ve çözümleri üretir.
  12. Ekip, düzenli aralıklarla performansını gözden geçirmeli ve iyileştirmeler yapmalıdır.

Bu prensipler, Agile uygulamalarının temelini oluşturur ve yazılım projelerinin daha verimli yürütülmesini sağlar.

Scrum’ın Temelleri

Scrum, Agile’ın bir alt çerçevesidir ve yazılım geliştirme süreçlerini yönetmek için sıkça kullanılan bir yöntemdir. Scrum, belirli roller, olaylar ve yapılar ile Agile prensiplerini hayata geçirmeyi sağlar.

Scrum’ın Temel Unsurları:

Scrum üç temel bileşene dayanır: Roller, Olaylar ve Yapılar.

I. Scrum Roller

  1. Product Owner (Ürün Sahibi):
    • Ürün gereksinimlerini belirleyen kişidir.
    • Müşteri ile ekip arasındaki köprüyü kurar.
    • Ürün Backlog’unu yönetir ve önceliklendirir.
  2. Scrum Master:
    • Scrum süreçlerinin düzgün işleyişini sağlar.
    • Engelleri kaldırarak ekibin verimli çalışmasını destekler.
    • Takımın Agile prensiplerine bağlı kalmasını sağlar.
  3. Development Team (Geliştirme Ekibi):
    • Çapraz fonksiyonel (yazılımcı, testçi, analist vb.) uzmanlardan oluşur.
    • Sprint içinde tamamlanabilir görevleri üstlenir ve çalışır.
    • Kendi içinde organize olup süreçleri yönetir.

II. Scrum Olayları (Seremonileri)

Scrum’da belirli ritüeller (olaylar) bulunur. Bunlar sürecin düzenli işlemesini sağlar:

  1. Sprint Planning (Sprint Planlama):
    • Sprint başlangıcında yapılır.
    • Ekip, Sprint boyunca hangi işlerin tamamlanacağını belirler.
  2. Daily Scrum (Günlük Stand-up Toplantısı):
    • Her gün belirlenen bir saatte maksimum 15 dakika süren toplantıdır.
    • Üç temel soru sorulur:
      • Dün ne yaptın?
      • Bugün ne yapacaksın?
      • Önünde bir engel var mı?
  3. Sprint Review (Sprint Gözden Geçirme):
    • Sprint sonunda yapılır.
    • Ürün geliştirme süreci değerlendirilir ve geri bildirimler alınır.
  4. Sprint Retrospective (Sprint Değerlendirme):
    • Takım, Sprint sürecini değerlendirir.
    • İyileştirmeler yapılması için öneriler tartışılır.

III. Scrum Yapıları

  1. Product Backlog (Ürün İş Listesi):
    • Product Owner tarafından yönetilir.
    • Tüm yapılacak işleri içerir ve sürekli güncellenir.
  2. Sprint Backlog (Sprint İş Listesi):
    • Ekip tarafından belirlenen, sprint süresince tamamlanacak görevleri içerir.
  3. Increment (Artış):
    • Sprint sonunda çalışan ve değerli bir yazılım parçasının oluşturulmasıdır.

3- Agile ve Scrum’da Test Mühendisinin Rolü

Geleneksel yazılım geliştirme yöntemlerinde test süreci, geliştirme aşamalarından sonra gelir ve çoğu zaman bağımsız bir ekip tarafından yürütülürdü. Ancak Agile ve Scrum’da test mühendisleri, geliştirme sürecinin her aşamasına entegre olur ve “sürekli test” anlayışını benimser.

Test mühendisleri, sadece hata bulmakla kalmaz, aynı zamanda yazılımın kalitesini artırmaya yönelik süreçleri geliştirir ve otomasyon araçları ile süreci hızlandırır.

Agile ve Scrum’da Test Mühendisinin Sorumlulukları

Scrum takımlarında test mühendisleri geliştirme ekibinin bir parçasıdır ve şu görevleri üstlenir:

I. Sprint Öncesi ve Planlama Aşaması

  • Product Owner ve geliştiricilerle iş birliği yaparak, kullanıcı hikayelerini (User Stories) anlamak ve test edilebilir hale getirmek.
  • Test senaryolarını belirlemek ve kabul kriterlerini (Acceptance Criteria) oluşturmak.
  • Risk analizi yapmak ve kritik test alanlarını belirlemek.
  • Test stratejisi oluşturmak: Hangi testlerin manuel, hangi testlerin otomasyon ile gerçekleştirileceğini planlamak.

II. Sprint İçerisinde Test Süreci

  • Geliştirilen özellikleri mümkün olan en erken aşamada test etmek (Shift-left testing).
  • Manuel ve otomatik testleri çalıştırarak erken hataları yakalamak.
  • Regresyon testleri ile eski kodların yeni kod değişikliklerinden etkilenmediğini doğrulamak.
  • Test verisi oluşturmak ve test ortamlarını yönetmek.
  • API ve entegrasyon testlerini yürütmek (Özellikle microservices kullanılan projelerde kritik bir rol oynar).

III. Sprint Sonu ve Sonrası

  • Sprint Review toplantısında test süreçleri hakkında geri bildirimler sunmak.
  • Test sonuçlarını raporlamak ve geliştiricilerle paylaşmak.
  • Sprint Retrospective toplantılarında, test süreçlerini iyileştirmek için önerilerde bulunmak.

3. Agile ve Scrum’da Test Mühendisinin Avantajları

Geleneksel Test SüreciAgile Test Süreci
Test süreci son aşamada başlar.Test süreci geliştirme ile birlikte başlar.
Hatalar geç tespit edilir, düzeltmesi pahalıdır.Hatalar erken bulunur, düzeltilmesi kolaydır.
Geliştiriciler ve test mühendisleri genellikle farklı ekiplerde çalışır.Test mühendisleri geliştirme ekibinin bir parçasıdır.
Değişikliklere uyum sağlamak zordur.Değişiklikler hızla test edilir ve uyarlanır.

4. Scrum Takımlarında Test Mühendisi Olmanın Zorlukları

Her ne kadar Agile süreçler test mühendislerine büyük avantajlar sağlasa da, bazı zorluklar da beraberinde gelir:

  1. Hızlı değişen gereksinimler nedeniyle test senaryolarını sıkça güncellemek gerekir.
  2. Kısa sprint süreleri içinde yeterli test kapsamını sağlamak zor olabilir.
  3. Otomasyon altyapısının güçlü olması gerekir, aksi takdirde manuel testler sprint sürecini yavaşlatabilir.
  4. Ekip içi iletişim kritik bir rol oynar, test mühendislerinin geliştiricilerle sürekli iş birliği yapması gereklidir.

Toparlıycak olursak, Agile ve Scrum metodolojileri, test mühendislerinin sürekli entegrasyon, sürekli test ve erken hata tespiti süreçlerine dahil olmasını sağlar. Test mühendisleri artık sadece “hata bulan” değil, aynı zamanda kaliteyi en baştan inşa eden bir rol üstlenmektedir.

  • Manuel testler ve otomasyon dengeli bir şekilde kullanılmalıdır.
  • Test mühendisleri, geliştiriciler ve ürün sahipleriyle sürekli iş birliği içinde olmalıdır.
  • API testleri, entegrasyon testleri ve UI testleri birlikte düşünülmelidir.
  • CI/CD süreçlerine test otomasyonunun entegre edilmesi gereklidir.

Agile dünyasında başarılı bir test mühendisi olmak için hızlı adapte olabilen, proaktif ve sürekli öğrenmeye açık olmak kritik bir öneme sahiptir.

CEVAP VER

Lütfen yorumunuzu giriniz!
Lütfen isminizi buraya giriniz