Agile Yazılım Ortamında Başarılı Test Otomasyonu İçin Stratejiler

Supreme Test
6 min readDec 20, 2021

--

Günümüz dünyası sürekli gelişen ve değişen bir teknolojik çağın yükselişine tanık oluyor. Bu yeni dünya yapısında başarılı bir şirket kurmanın ve sürdürmenin en iyi yolu ise değişime ayak uydurmak. Dolayısıyla şirketlerin başarısını belirleyen temel faktörler; sorunlara hızlı bir şekilde çözüm üretmek, verimliliği en üst düzeye çıkarmak, yeni çıkan teknolojileri takip etmek ve müşteri geri bildirimlerini dikkate almaktır. Bu temel faktörleri hayata geçirebilmenin en pratik yolu ise “Agile (Çevik) Yöntemi” olarak adlandırılan yazılım geliştirme ve proje yönetimidir.

15'inci Agile Durum Raporu’na göre Agile yöntemini kullanan şirketlerin %70’i değişen öncelikleri yönetebilme kabiliyetlerinin geliştiğini belirtmiştir.*

Şimdi özellikle yazılım geliştirme alanında kullanılan Agile yönteminin ne olduğuna, ne gibi zorlukları olduğuna ve bu zorlukların nasıl aşılabileceğine bir göz atalım.

Agile (Çevik) Yöntem Nedir?

Agile (çevik) yöntem, yazılım geliştirme sürecinde kullanılan özel bir yazılım geliştirme ve proje yönetim modelidir. Bu yöntem, yazılım geliştirme sürecinde karşılaşılan problemleri çözmek için tekrarlanan yazılım geliştirme modeli taban alınarak geliştirilmiştir. Yani bir yazılımın parça parça oluşturulmasını ve her parçanın kalite kontrol ekibi tarafından sık sık kontrol edilmesini teşvik eden bir yazılım geliştirme modelidir. Bu sık sık kontrol etme ve işi parça parça yapmaya “sprint” adı verilir. Kısaca Agile yöntemi, ekiplerin yazılım geliştirme süreçlerinde karşılaştıkları öngörülemezliğe bir cevap verilmesine ve muhtemel sorunlara çözüm üretilmesine yardımcı olur.

15'inci Agile Durum Raporu’na göre bu yöntemi kullanan şirketlerin %86’sı yazılım geliştirme sektöründe faaliyet göstermektedir.**

Agile yönteminin 4 temel değeri vardır. Bunlar:

1. Bireyler ve aralarındaki etkileşim, iş süreçleri ve araçlardan daha değerlidir.

2. Çalışan bir yazılım ortaya koymak, kapsamlı bir dokümantasyon sürecinden daha önemlidir.

3. Müşteri ile işbirliği yapmak, sözleşme görüşmelerinden daha önemlidir.

4. Değişime cevap vermek, mevcut planı izlemekten daha önemlidir.

Agile yöntem soldaki bu 4 temel alanın çok önemli olduğunu belirtirken sağdaki diğer alanların tamamen değersiz ya da önemsiz olduğunu söylemez. Aksine bunların bir bütün olarak görülmesi gerektiğini ve hepsinin kullanılması gerektiğini belirtir. Ancak projenin başarılı bir şekilde gerçekleştirilebilmesi için ağırlığın soldaki dört temel değere verilmesi gerektiğinin altını çizer.

Agile (Çevik) Yöntemin Zorlukları Nelerdir?

Agile yöntem, özellikle sürekli değişen dinamik projelerde bir fikri gerçeğe dönüştürmek için kullanılabilecek en hızlı ve en verimli yoldur. Ancak bu yöntemin de bazı zorlukları bulunur. Bunlar:

  1. Sık Sık Yapılan Güncellemeler Nedeniyle Değişen Kod

Agile yöntem sürekli ve ani bir şekilde gerçekleşen değişikliklere hızlı bir şekilde uyum sağlayabilmek üzerine kurulmuştur. Yani yazılım geliştirme sürecinde yapılan her yeni güncellemenin, kodun kendisinde ve GUI katmanlarında doğru bir şekilde çalıştığından emin olmak için sık sık test edilmelidir. Ancak Agile yöntemin doğası gereği yazılımda sık sık değişiklikler ve güncellemeler yapılır. Bu yüzden kalite kontrol ekibi birçok geri dönüş (regression) testi yapmak zorunda kalır. Bu da projenin ilerleme sürecini yavaşlatabilir.

  1. Kalite Kontrol Ekibine Binen Aşırı İş Yükü

Sprint mantığı gereği Agile yöntemde yazılım parçalara bölünür ve her bir parça tek tek performans ve bug testinden geçirilir. Her bir parça ve bu parçaların yeni sürümü için kalite kontrol ekibinin manuel olarak test hazırlaması hem süreci yavaşlatır hem de testlerdeki hata payını artırır. Kısaca, sık sık yapılan güncellemelerin kalite kontrol ekibi tarafından sürekli test edilmesi oldukça zorlu ve vakit kaybettiren bir süreçtir. Bu sebeple Agile yöntem kalite kontrol ekibine aşırı bir iş yükü binmesine sebep olur.

  1. Uygulamanın Performansında Düşüş

Her bir yeni güncelleme daha fazla düzeltme, özellik ve iyileştirmeyle beraber gelir. Bu da geliştirilen uygulamanın ana koduna birçok ek kod eklenmesine ve daha da karmaşık hale gelmesine sebep olabilir. Bu kadar hızlı bir şekilde büyüyen yazılımlarda ise performans düşüşü ve yeni eklenen kod parçaları arasında uyumsuzluk çıkması oldukça doğaldır. Bu performans düşüşünü engellemek için her yeni güncellemenin performans testine tabi tutulması gerekir. Kısaca sık sık yapılan güncellemeler ve manuel testlerin yavaşlığı sebebiyle Agile yöntem ile geliştirilen uygulamalarda performans düşüşü gözlenebilir.

2. API Testlerinin Karmaşıklığı ve Zorluğu

Modern ürünlerin, özellikle web ve mobil uygulamaların, farklı sunucular arasında yoğun veri alışverişi yapabilmesi gerekmektedir. Bu veri entegrasyonunun başarılı bir şekilde gerçekleştiğinden emin olmak için sık sık API testler yapılmalıdır. Ancak API testler büyük programlarda birçok farklı veri akışını kontrol ettiği için yapılması oldukça zor ve karmaşık bir test türüdür. Bu yüzden programın veri entegrasyonunda hatalar ve güvenlik açıkları ile karşılaşılabilir.

Agile (Çevik) Yöntemin Zorlukları Nasıl Aşılabilir?

Bahsettiğimiz zorlukların çoğu yapılan testlerin manuel olarak yapılmasından dolayı gerçekleşir. Manuel olarak yapılan testler hem ek iş gücü hem de ek zaman gerektirir. Bu sebeple hem yazılım hem de kalite kontrol takımlarının verimliliği düşecek ve doğal olarak projenin ilerleyişi yavaşlayacaktır. Bu zorlukları aşmanın en pratik ve güvenilir yolu ise test otomasyonu uygulamaları kullanmaktır. Test otomasyon uygulamaları kalite kontrol ekibinin üzerindeki iş yükünü azaltırken insan kaynaklı test hatalarını da en aza indirir. Ancak her ne kadar test otomasyonu işleri kolaylaştırsa da başarılı bir yazılım geliştirme süreci için takip edilmesi gereken bazı stratejiler vardır.

  1. Proje gelişim süreçlerini Agile yönteme göre planlamak

Eğer projenizi Agile modeli ile tasarlayacaksanız proje planlamanızın da buna uygun olması gerekir çünkü Agile yöntem geleneksel proje yapısından farklıdır. Yani bir tane teslim tarihi yerine birçok teslim tarihi belirlemeli ve uygulamanın her yeni sürümü için testler hazırlanmalıdır. Bu test yükünden kurtulmak için projenizin tipine uygun bir test otomasyon uygulaması kullanmak hem projenin başarısını hem de hızını büyük ölçüde artıracaktır.

2. Nerede Test Otomasyonu Kullanılacağını Saptamak

Test otomasyon uygulamaları, projelerin ilerleyişini hızlandırsa da her testi otomasyon uygulamaları ile yapmak kesin başarı elde etmek anlamına gelmez. Aksine bazı testleri manuel olarak yapmak ve bir insanın bakış açısı ile değerlendirmek bazı durumlarda daha iyi bile olabilir. Bu sebeple proje boyunca yapılacak olan testlerin hangilerinin otomasyon hangilerinin manuel olarak yapılacağını önceden belirlemek oldukça önemlidir. Bu tarz bir strateji uygulandığında kalite kontrol ekibi için gerekli kişi sayısı ve harcama daha öngörülebilir hale gelir. Sonuç olarak bu doğrudan projenin verimliliğini yükseltir.

3. Paralel Testler Yapmak

Yapılan testler her zaman %100 sonuç vermeyebilir. Bu yüzden her güncelleme için en az 2 farklı test uygulanması projenin başarı oranını yükseltecektir. Örneğin uygulamanıza eklediğiniz yeni bir güncellemeyi kullandığınız test otomasyon uygulaması ile test ettiniz; ancak bazı yerlerde şüpheleriniz var. Bu durumda kalite kontrol ekibinden bir kişinin bu testi manuel olarak tekrarlaması hata payını düşürecektir. Başka bir strateji ise iki farklı test otomasyon uygulaması kullanmak

olabilir. Her test otomasyon uygulaması aynı prosedürleri takip ederek testleri gerçekleştirmez. Bu yüzden bir test otomasyon uygulamasının kaçırdığını bir diğeri yakalayabilir. Böylece uygulamanızdaki hata payını en aza iner ve Agile yöntemini başarıyla uygulamanıza yardımcı olur.

4. Agile Takımlar Arasında Aktif Bir İletişim Ağı Kurmak

Agile yöntemin doğası gereği proje parçalara bölünmüştür. Bu hem projenin hızlı bir şekilde ilerlemesini sağlamak hem de hata payını düşürmek amacıyla yapılır. Proje parçalara bölündüğü için doğal olarak takımlar da kendi içlerinde ayrılmış ve daha spesifik konular üzerine yoğunlaşmışlardır. Ancak takımların birbirinden ayrılması birbirleriyle olan iletişimlerini kesmeleri gerektiği anlamına gelmez. Aksine her takımın birbirinden haberdar olması ve yeni gelen güncellemelere kendilerini adapte etmeleri gerekir.

Supreme Test ile Agile Test Otomasyonu

Test otomasyonu üzerine Huawei Türkiye Ar-Ge ekibi tarafından geliştirilen Supreme Test, sağladığı imkanlar ile Agile yöntemiyle yürütülen projelerin zorluklarını ortadan kaldırmaya yardımcı olur. Supreme Test sayesinde insan kaynaklı olan hatalar en aza iner ve “sürükle bırak” özelliği sayesinde test şablonları kolayca oluşturulur.

Şimdi Supreme Test’in Agile yöntem alanında sağladığı imkanlara daha yakından bakalım.

Supreme Test;

  • Ortak koşulacak testler için kullanıcılara test senaryosu havuzu sunar. Bu şekilde farklı sürümler bu havuzdan seçilen bir test ile aynı anda kolayca kontrol edilebilir.
  • Şablon mantığıyla kullanıcıların hızlı bir şekilde test senaryosu oluşturmasına imkân tanır. Aynı zamanda bu şablonların kaydedilmesini de sağladığı için kullanıcılar uygulamanın her yeni sürümü için ayrı bir test oluşturmak yerine kaydettikleri şablona ekleme ve çıkarma yaparak pratik bir şekilde yeni testler oluşturabilir.
  • Geçmişte yapılan testleri hafızasında tutar ve yeni yapılan testlerin sonuçlarını karşılaştırmaya imkan tanıyan güvenilir raporlar sunar. Bu şekilde kullanıcılar yeni yapılan değişiklerin bir yeni bir hataya neden olup olmadığı rahat bir şekilde saptayabilir.
  • Yapılacak olan testlerin zamanlanabilir oluşu kullanıcıların vakit kaybetmesini engelleyerek takımın verimliliğini arttırır.
  • Yapılması oldukça zor olan API testlerini sahip olduğu güçlü veri tabanı kontrol özelliği ile başarılı bir şekilde gerçekleştirir.
  • Yapılan her türlü test için rapor hazırlar ve bu raporları e-posta yolu ile kullanıcılara ulaştırır. Bu sayede testlerin sonucunu değerlendirmek üzere harcanan süre azalır ve problemli olan özelliğe daha kolay bir şekilde çözüm üretilebilir.
  • Supreme Test bu ve bunun gibi sağladığı birçok kolaylık sayesinde Agile yöntemi ile başarılı test otomasyonlarının gerçekleştirilmesini sağlayarak şirketlerin projelerine en uygun stratejiyi geliştirmelerini kolaylaştırır.

(*)https://stateofagile.com/#ufh-i-661275008-15th-state-of-agile-report/7027494

(**)https://stateofagile.com/#ufh-i-661275008-15th-state-of-agile-report/7027494

--

--