Otomasyon QAQA Automation Lead

Otomatik testlerde test verilerini nasıl yönetirsiniz ve bu süreçte hangi zorluklar ortaya çıkabilir?

Hintsage yapay zeka asistanı ile mülakatları geçin

Cevap

Soru Tarihi:

Otomatik testlerin otomasyonu, öngörülebilir ve yeniden üretilebilir test verilerinin oluşturulması ve bakımını gerektirir. Manuel testler rastgele verileri kullanabilirken, otomatik senaryolar, veri tabanı veya ortam durumunun tam kontrolünü gerektirir. Uygulamaların ölçeği, mikro hizmetlerle çalışma ve gizlilik gereksinimleri, test verilerinin yönetimini daha da zorlaştırmıştır.

Sorun:

Kontrol edilen test verileri olmadan testler istikrarsız hale gelir, sonuçları da yanıltıcı olabilir. Sık karşılaşılan durumlar şunlardır:

  • Testler veri tabanındaki değişiklikler nedeniyle bozulur
  • Veriler birden fazla test tarafından aynı anda kullanılır
  • Çakışmalar ve karmaşık bağımlılıklar ortaya çıkar

Ayrıca, gerçek verilerin kullanımı güvenliği veya gizlilik politikasını ihlal edebilir.

Çözüm:

Modern yaklaşımlar şunları içerir:

  • Testten önce yüklenen ve sonra silinen "fixture" (veri setleri) hazırlamak
  • Anlık olarak benzersiz test verileri oluşturmak
  • Ayrı test ortamları kullanmak
  • Dış hizmetler için mocklama veya stub kullanmak
  • Veri taşınması ve geri alma araçlarını (örneğin, Liquibase, Flyway) uygulamak

Ana Özellikler:

  • Ortam durumunu tamamen kontrol etme imkanı
  • Verilerin standart duruma hızlı bir şekilde geri yüklenmesi
  • Özel test veri depolarını kullanma

Yanıltıcı Sorular.

Otomatik testler için üretim ortamından gerçek verileri kullanabilir miyiz?

Hayır. Bu, veri sızıntısına, düzenlemelerin ihlaline ve üretim sistemindeki sürekli değişiklikler nedeniyle testlerin istikrarsızlaşmasına neden olabilir.

Testler arasında tüm verilerin temizlenmesi, testin istikrarını garanti eder mi?

Hayır. Verileri sadece temizlemek yeterli değildir, aynı zamanda doğru bir duruma hazırlamak da önemlidir. Üstelik, toplu temizleme, paralel çalışan testleri veya hizmetleri etkileyebilir.

Tüm ekipler için tek bir test ortamına sahip olmak yeterli midir?

Hayır, bu farklı ekiplerin testleri arasındaki çakışmalara ve çatışmalara yol açar. İdeal olarak, izole ortamlar veya konteynerleştirme (Docker test takımları, geçici ortamlar) tercih edilmelidir.

Yaygın Hatalar ve Anti-Desenler

  • "Canlı" verilerle otomasyon yapmak
  • Ortamın temizlenmesi ve hazırlanmasının olmaması
  • Paralel testlerde aynı verilerin kullanılması

Gerçek Hayattan Örnek

Olumsuz Durum

Test mühendisleri, hem otomatik hem de manuel testlerin çalıştığı tek bir test veritabanı kullanıyordu. Sıklıkla otomatik testler, verilerin elle silinmesi veya değiştirilmesi nedeniyle başarısız oluyordu, bu da uzun hata ayıklama sürelerine ve zaman kaybına neden oluyordu.

Artılar:

  • Altyapı için minimum maliyet
  • Tüm verilere kolay erişim

Eksiler:

  • Testlerin istikrarsızlığı
  • Sık sık "bozuk" ortamlar
  • Testlerin başarısız olma nedenlerinin analizi zor

Olumlu Durum

Şirket, her testin Docker aracılığıyla oluşturulan ayrı bir veritabanı kopyasında çalıştığı geçici ortamlar altyapısını kurdu. Fixture'lar otomatik olarak göç scriptleri ile yüklendi.

Artılar:

  • Testlerin tam izolasyonu
  • Verilerin şeffaflığı ve yeniden üretilebilirliği
  • Ortamın hızlı bir şekilde geri yüklenmesi

Eksiler:

  • Araçların ve izole ortamların bakım maliyetleri
  • Karmaşık testlerin başlatma süresinin artması