Bu sitede çerezler kullanılmaktadır, sitede gezinmeye devam ederek çerez kullanımını kabul etmiş olursunuz.

Test Otomasyonu Stratejisi Oluşturmak İçin Doğru Sorular: Neyi ve Neden Otomatikleştirmeliyiz

2021-07-14
Yazılım ve ürün geliştirme alanlarında büyük işler başarmanın yolu, uzun ve karmaşık bir problemi kısa ve basit problemlere dönüştürmek ve özelleştirilmiş çözümlerle genelgeçer yöntemler arasındaki dengeyi kurabilmektir. Otomasyon, birbirine benzer problemler olduğunda, insan gözetiminin minimal tutulduğu ve problemlerin kendine has özelliklerinin önceden kategorize edilmiş süreçlerden geçirilerek çözüldüğü bir test şekli sağlar. Bir problemi çözmekten ziyade, o problemi de içeren çeşitli problem şekillerinin çözüldüğü bir otomatik süreç yazmak, başlangıçta daha uzun sürmesine rağmen aynı testin manuel olarak tekrar tekrar yenilenmesiyle kıyaslandığında emek açısından kâr sağlar.

Otomasyonun Sağladığı Faydalar

Otomasyonun manuel yöntemlere göre pek çok üstünlüğü vardır. Manuel yöntemlerde insan hatası sık yaşanabilen bir durumken otomasyonda bu ihtimal minimize edilir. Ayrıca otomasyonda manuel sistemlerin aksine süpervizyon gerekli değildir ve büyük işlemler insan mesaisi harcanmadan gerçekleştirilebilir. Manuel testlerin kapsamı, otomatik testlere oranla daha dardır ve tekrarlanmaları da otomasyona kıyasla çok daha maliyetlidir. Manuel testler, problem büyüdükçe artan bir hızla zorlaşırken, otomatik testlerde çözülmüş her problem, daha karmaşık problemlerin çözümünde yapı taşı olarak kullanılabildiği için kümülatif ilerleyen bir sürece girilmesini sağlar.

Bütün bunlar göz önünde bulundurulduğunda, sektörde genelde manuel yapılan bazı testlerin Supreme Test ile otomatize edilmesi araştırma-geliştirme açısından atılan büyük bir adım olarak karşımıza çıkıyor. Supreme Test, manuel testlerle gün boyu devam edebilen test süreçlerini dakikalara indirgeyerek büyük bir verim artışı sağlıyor.

Test Stratejileri Nasıl Oluşturulur?

Peki, bu otomatizasyon süreci nasıl işliyor, nelere dikkat ediliyor? Bu konuda test stratejilerinin ana aşamalarını incelemek bize yardımcı olacaktır.

1- Kapsam ve Genel Değerlendirme: Programın ne işe yarayacağı, kim tarafından, ne zaman kullanılacağı ve ne kadar zamanda geliştirileceği belirlenir.

2- Test Yaklaşımı: Test edilecek fonksiyonların neden test edildiği, çıktıların ne işe yarayacağı, nasıl harmanlanacağı belirlenir. İstisnalar, hatalar ve beklenmedik durumlar incelenir. Programı geliştiren takıma roller atanır, kimin hangi aşamada ne yapacağı ve takım halinde nasıl çalışılacağı belirlenir.

3- Test Ortamı: Testin yapılacağı dijital ortam belirlenir. Kimin hangi özellikte işlemcilere, ne şekilde ihtiyacı olduğu tespit edilir. Öncelikler belirlenir ve bunlara göre atamalar yapılır. Verilerin kaydedileceği ve saklanacağı yedekleme alanları oluşturulur. Görevlere ve ihtiyaçlara göre farklı işletim sistemleri, yetkiler ve sistem özellikleri ayarlanır. Test verisi oluşturmak için gereken kıstaslar net bir şekilde belirlenir. Bir sorun çıkması durumunda yedeklenen verinin nasıl geri getirileceği ve kimin bu süreçten sorumlu olduğu seçilir.

4- Test Araçları: Testin yürütülmesi için gerekli test yönetimi ve otomasyon araçları tanımlanır. Fonksiyonel, performans, yük ve güvenlik testleri için gerekli test yaklaşımı ve araçları açıklanır.

5- Sürüm Kontrolü: Yapılacak testlerde kullanılacak programların sürümlerinde tutarlılık olduğundan emin olacak şekilde plan hazırlanılır.

6- Risk Analizi: Öngörülen tüm riskler listelenir. Bu riskleri azaltmak için net bir plan oluşturulur.

7- Denetim ve Onay: Yapılan plan takım içerisinde incelenir. Planda gerçekleştirilecek herhangi bir değişikliğin, takımın haberi olacak şekilde nasıl yapılacağı belirlenir.

API Testlerini Otomatikleştirince Ne Kazanıyoruz?

Bu süreçlerden sonra başlayan otomasyon programı oluşturulması, büyük projelerde hızlı hareket kabiliyeti sağlar. Supreme Test, bu verimi API (Uygulama Programlama Arayüzü) testlerinde, arayüz testlerinde ve veri tabanı testlerinde sağlar. Otomasyonun getirdiği geniş kapsam sayesinde kullanıcıların yaşayabileceği sıkıntıların büyük çoğunluğu test aşamasında tespit edilir ve düzeltme girişimleri, ürün kullanıcıya ulaşmadan başlayabilir.

API testleri sayesinde farklı türden birçok test aracılığıyla, gerçekleşebilecek her türlü ihtimal incelenerek, oluşabilecek sorunlar tespit edilebilir. Arayüzü ne için test edeceğinize karar verdikten sonraki adım, bu gereksinimler etrafında test senaryoları oluşturmak ve bunları yürütmektir. Arayüz testleri yaparken önemli adımlardan biri ne tür bir test yapmak istediğinize karar vermektir. Bu testleri kısaca şöyle sıralayabiliriz:

  • Fonksiyonalite testleri: Arayüzün çalışıp çalışmadığı, görevini yerine getirip getirmediği test edilir.
  • Güvenilirlik testleri: Arayüzün çıkardığı sonuçların tutarlı olup olmamasına bakılır.
  • Onaylama testleri: Arayüzün özelliklerinin doğrulandığı süreçtir.
  • Yükleme testleri: Arayüzün normal şartlardan tepe şartlara kadar her durumda çalıştığı doğrulanır.
  • Kullanıcı Arayüzü testleri: Kullanıcı arayüzünün uygulama programlama arayüzüyle bağlantısının istenen gibi olup olmadığı test edilir.
  • Güvenlik testleri: Arayüzün dış tehditlere karşı güvende olup olmadığı test edilir.
  • Penetrasyon testleri: Saldırgan birinin bakış açısından arayüzdeki güvenlik açıkları incelenir.
  • Fuzz testleri: En kötü durum senaryoları için testler yapılır.

Bu testler sonucunda çıkabilecek sorunlar şunlardır:

  • Duplike veya eksik fonksiyonalite
  • Hatalı geri dönüş
  • Hata idaresi mekanizmasında uyuşmazlık
  • Çok kanallı problemler
  • Güvenlik ve performans sorunları
  • Güvenilirlik sorunları
Manuel test kullanılan durumlarda, programdaki her önemli değişiklikten sonra belirli bir miktar emeğin teste ayrılması gerekirken, otomatize edilmiş sistemlerde bu emeğin minimal tutulabilmesi Supreme Test'in sağladığı en önemli avantajlardan biridir. Normal şartlarda gereksiz görülebilecek testlerin sürelerini ve maliyetlerini de düşürerek, süreci her açıdan daha verimli bir hale getirir. Supreme Test'in izlediği Test Otomasyon Stratejisi, bilgisayarın insandan daha iyi yapabildiği her şeyi bilgisayara bırakırken, yazılım geliştiricinin tekrara binen işlerle zaman kaybetmemesine, yaratıcılığını ve zekasını konuşturabileceği konulara daha fazla odaklanabilmesine imkân sağlar.