Yazılım Test Otomasyonu

Sıtkı Demirci
sigortamnet
Published in
5 min readJan 29, 2024

Yazılım Test Otomasyonu nedir?

Yazılım test otomasyonu, otomasyon araçlarını ve senaryolarını kullanarak işlevsel, performans, güvenlik ve diğer yazılım türlerinin insan müdahalesi olmadan test edilmesi sürecidir. Bu otomasyon araçları, yazılımın farklı bölümlerini ve işlevlerini test etmek ve sonuçları değerlendirmek için önceden tanımlanmış testleri otomatik olarak çalıştırabilir.

Neden otomasyon?

Yazılım test otomasyonu, tekrar eden test senaryolarını hızlı ve hatasız bir şekilde çalıştırarak zaman tasarrufu sağlar. Otomasyon, geniş kapsamlı testleri daha hızlı ve daha etkili bir şekilde gerçekleştirebilir, böylece yazılımın güvenilirliğini ve kalitesini artırarak kullanıcı deneyimini iyileştirir. Ayrıca, otomasyon, yazılımın sürekli entegrasyon ve dağıtım süreçlerinde de önemli bir rol oynar. Hataların daha erken tespit edilmesini ve düzeltilmesini sağlar. Bu nedenlerle, yazılım test otomasyonu, hız, güvenilirlik ve sürekli kalite sağlamak için önemli bir ihtiyaçtır. Otomasyonun faydalarını açıklamak gerekir ise;

  • Hız ve Verimlilik:

Otomatik test senaryoları hızlı bir şekilde çalıştırılabilir ve aynı zamanda tekrar edilebilir. Bu, yazılımın hızlı bir şekilde test edilmesini ve geri bildirim alınmasını sağlar. Test ekibinin kaynaklarını daha verimli kullanmaya yardımcı olur. Test ekibinin daha karmaşık ve zorlayıcı testler üzerinde çalışmasına olanak tanır.

  • Yeniden Kullanılabilirlik:

Otomatik test senaryolarının ve bileşenlerinin başka projelerde veya farklı test durumlarında kolayca yeniden kullanılabilmesini ifade eder. Örneğin bir otomasyon scriptini benzer işlevi gören birçok yerde kullanabilir ve bu sayede zaman, efor ve bakım maliyetini azaltmış oluruz.

  • Kapsamlı ve Kesintisiz Çalışma:

7/24 çalışabilen sistemler ve süreçler oluşturulmasına olanak sağlar. Çalışma saatleri dışında da süreçlerin kesintisiz olarak sürdürülmesi mümkün olur. Örneğin, schedule edilmiş bir otomasyon sistemi günün herhangi bir saatinde insan müdahalesine ihtiyaç duymadan çalışabilir ve sonuçları raporlayabilir. Bu sayede zaman bağımsız bir şekilde test etmemize yardımcı olur.

  • Maliyet düşürme:

Otomasyon test senaryoları, manuel testlere kıyasla çok daha ve tekrar edilebilir bir şekilde çalıştırılabilir. Bu, aynı test setinin farklı sürümler veya işlevselliği için kolayca kullanılabilmesi anlamına gelir. Bu sürekli kullanım, maliyetleri düşürür çünkü aynı testlerin sürekli manuel çalıştırılması gerekmeyecek, zaman ve iş gücü tasarrufu sağlanacaktır. Örneğin manuel olarak saatlerce sürecek bir test, otomasyon ile dakikalar içerisinde tamamlanabilir.

  • Doğruluk ve Tutarlılık:

Test otomasyonu, belirli test senaryolarını ve görevleri tanımlanan kurallara göre hatasız bir şekilde yürütme yeteneği sağlar. Otomasyon araçları, her seferinde aynı adımları, aynı sırayla ve aynı parametrelerle uygular. Bu, test sonuçlarının daha güvenilir ve doğru olmasını sağlar. Aynı zamanda sürekli olarak belirli bir test setini aynı standartlara ve kriterlere göre uygular. İnsanlar arasındaki değişkenlik ve farklı yorumlar ortadan kalkar. Her bir test çalıştırıldığında, aynı adımların ve kontrol noktalarının kullanılması, tutarlı bir test ortamı oluşturur. Bu, yazılımın farklı sürümleri veya yapılandırmaları üzerinde tutarlı bir şekilde test yapılabilmesine imkan tanır. Tutarlılık, geliştirme ekibine güvenilir ve kararlı bir geri bildirim sağlar.

  • Gelişmiş Raporlama ve Analiz:

Test otomasyon projelerinin en kritik aşamalarından biri de raporlamadır. İş süreçlerinin ve performansının izlenmesini ve raporlamasını kolaylaştırır. İyi bir raporlama sayesinde ekip hataların kök nedenleri ve iyileştirilmesi gereken alanları belirleyebilir. Geliştirme ekibine güvenilir ve kararlı bir geri bildirim sağlar. Raporlama için kullanılacak araç, ekibin ihtiyaçlarına uygun ve mümkün olduğu kadar anlaşılabilir raporlar sunmalıdır.

  • Hata azaltma:

Test otomasyonu insan hatasını minimize eder. Tekrar eden görevlerde veya veri girişi gibi alanlarda yapılan hatalar, otomasyon ile önemli ölçüde azaltılabilir. Otomasyonun dikkatli planlanması, sürekli bakımı ve doğru uygulanması ile yazılım geliştirme sürecindeki hataları minimize ederek daha güvenilir ve kararlı bir ürün elde etmeyi amaçlar.

Otomasyon hazırlığı nasıl olmalıdır?

Otomasyonu geliştirmeye başlamadan önce yapılacak bir ön hazırlık hem otomasyon sürecini hızlandıracak hem de bize daha verimli bir geliştirme süreci sunacaktır. Otomasyon hazırlık süreçlerini şu şekilde açıklayabiliriz;

  • Test Stratejisi ve Planlaması:

Bu aşama proje ve ürünün analizi, testin hedeflerinin ve kapsamının belirlenmesi, hangi testlerin otomatize edileceği, otomatize edilecek testlerin çerçevesinin ne olacağı, zaman ve kaynak planlanması, risk analizi ve yönetimi, raporlamanın yanı sıra metriklerin nasıl olacağı gibi sorulara cevap aranan aşamadır. Yazılımı %100 test etmek imkansızdır Yazılımı tüm girdi ve çıktı kombinasyonları ile test etmek, projenin zaman ve bütçe kısıtları sebebiyle mümkün değildir. Önemli olan risk analizi ile yazılımdaki riskli alanların tespit edilip, önceliklendirmelerin yapılması ve bu alanların normalden daha fazla test edilmesidir.

  • Uygun Araç Seçimi:

Bu aşamada en önemli şey seçilen aracın otomasyonun teknik gereksinimlerini ve kullanılan teknolojileri desteklemesidir. Araç seçiminde kesin işe yarayan tek bir doğru yoktur. Tek bir araç, tüm proje gereksinimlerini ve kısıtlamalarını karşılamayabilir. Projenize en uygun aracı seçmek için araştırma yapmalı ve araçların artı-eksi yönlerini görmelisiniz.

  • Test ortamı ve altyapının kurulması:

Testleri hangi ortamda, hangi datayla çalıştırmak istiyorsanız öncesinde bunları belirlemeniz ve varsa eksikleri gidermeniz gerekir. Geliştirme, test, canlı gibi farklı ortamlar üzerinde test yapılabilir. Her bir ortamın kendi gereksinimleri ve özellikleri vardır. Özellikle regresyon testleri canlıya en yakın ortamda koşulursa daha stabil sonuçlar alınabilir. Gerçekçi ve çeşitli test verileri kullanılarak uygulamanın farklı koşullarda nasıl davrandığı test edilmelidir.

  • Mimarisinin Belirlenmesi:

Otomasyon senaryolarının nasıl oluşturulacağına ve düzenleneceğine dair bir strateji belirlenir. Otomasyon scriptlerini yönetmek için bir mimari oluşturulur. Bu aşamada varsa şirketin mimari ekiplerinden görüş alınabilir. Daha önce benzer projelerde yer almış ekiplerin know howları bu aşamada yararlı olacaktır. Mimari yapı uzun vadeli ve olası değişikliklere uyumlu olmalıdır.

  • Eğitim ve Yetenekler:

Ekip üyelerinizin test otomasyon araçları ve teknik becerileri konusunda gerekli eğitimi alması önemlidir. Otomasyon scriptleri yazabilen, hata raporlarını analiz edebilen ve bakımını yapabilen bir ekip kilit bir noktadır. Herkesin bireysel çalışmalar yapması, birbirlerinin kodlarını gözden geçirmeleri, farklı yetkinlik ya da gözlemlerini birbirleriyle paylaşmaları ekibe know how katkısı da sunacaktır.

  • Test Senaryolarının Tanımlanması:

Otomatize edilecek test senaryoları belirlenir ve ayrıntılı olarak beklenen sonuçlara göre senaryolar yazılır. Her senaryo, belirli bir işlevselliği test etmek veya bir kullanıcı senaryosunu simüle etmek için adımları içermelidir. Adımların açık ve anlaşılır bir şekilde ifade edildiği bir format içermelidir. Her adım, ne yapılması gerektiğini ve beklenen sonuçları içermelidir. Test senaryoları, normal kullanım durumlarının yanı sıra hata durumlarını ve özel durumları da içermelidir. Bu, uygulamanın hatalarla nasıl başa çıktığını değerlendirmek için önemlidir.

  • Hata Yönetimi ve Raporlama:

Otomasyon sırasında oluşabilecek hatalar için bir hata yönetimi stratejisi oluşturulmalıdır. Test sonuçlarının düzenli olarak raporlanması için bir mekanizma oluşturulmalı, sürekli iyileştirme çabalarıyla hata oranları azaltılmalı ve otomasyon süreci optimize edilmelidir. Otomasyon raporlarının yakın takibi ve bulunan hataların gruplandırılması, sorunların titizlikle incelenmesi kritiktir. Hataların kök nedenleri araştırılmalı ve ilgili ekiplerle iş birliği halinde çözülmelidir.

  • Sürekli Entegrasyonu (CI):

Otomasyon geliştirmesi daha güven verir hale geldiğinde otomasyon scriptleri sürekli entegrasyon (CI) süreçlerine entegre edilmelidir. Bunun için gerekli yapılandırmalar ilgili paydaşlarla beraber yapılmalıdır. Yazılım projesinin otomasyon scriptleri kullanılarak düzenli olarak test edilmesini ve geliştirme ekibine hızlı geri bildirim verilmesini sağlar. Bu entegrasyon, yazılımın sürekli olarak geliştirilmesini, test edilmesini ve dağıtılmasını kolaylaştırarak kaliteyi artırır.

  • Sürdürülebilirlik ve Bakım Planı:

Otomasyon scriptleri modüler ve esnek bir tasarıma sahip olmalıdır. Bu, değişikliklere hızlı uyum sağlanmasını ve bir bölümdeki değişikliklerin diğer bölümleri etkilememesini sağlar. Aynı zamanda belirli standartlara uygun olarak yazılmalıdır. Bu standartlar, kodun okunabilirliğini artırarak bakım süreçlerini kolaylaştırır. Geliştirmenin bakımı maliyetli olmamalıdır. Uzun vadeli bir yapı oluşturulmalı ve olası değişikliklere hızlı uyum sağlayabilmelidir. Aksi halde bakım maliyeti otomasyonun çalışır halde kalması için fazla eforlu olabilir.

Bu aşamalardan sonra küçük bir proje oluşturabilir, bir test durumunu otomatikleştirebilir ve CI/CD pipeline’ına ekleyebiliriz. Bir kez çalışmaya başladığında, aracın kullanımının kolay ve projeye faydalı olup olmadığına karar verebiliriz. Eğer araç iyi bir uyum sağlamıyorsa, seçimimizi gözden geçirebilir ve projeye daha iyi uyan başka bir araç deneyebiliriz. Bu aşamadan sonra bir başka PoC oluşturabiliriz ve işe yaradığında, kapsamı artırmak için daha fazla test durumunu otomatikleştirmeye devam edebiliriz.

--

--