E2E Testlerde Yeni Bir Yaklaşım: tester-army/e2e Framework'ü

E2E Testlerde Yeni Bir Yaklaşım: tester-army/e2e Framework'ü
audio-thumbnail
E2E Testlerde Yeni Bir Yaklaşım: tester-army/e2e Framework'ü
0:00
/0

E2E Testlerde Yeni Bir Yaklaşım: tester-army/e2e Framework'ü

End-to-end (E2E) testler, yazılım geliştirme sürecinde uygulamanın tüm katmanlarını kapsayarak gerçek kullanıcı deneyimini simüle eden kritik bir adımdır. Ancak geleneksel E2E testlerinin çoğu, test adımlarını kodla tanımlama, sabit locatorler kullanma ve her testte yeni bir oturum başlatma gibi sınırlamalara sahiptir. Bu durum, testlerin esnekliğini, okunabilirliğini ve bakım kolaylığını azaltır.

Bu bağlamda, yeni bir E2E test framework’ü olan tester-army/e2e, bu zorluklara yeni bir çözüm sunuyor. Framework, doğal dilde tanımlanan hedeflerle çalışır ve bir "agent" (aracı) sayesinde uygulamayı hedefe ulaştırmak için adım adım hareket eder. Bu yaklaşım, testlerin daha akıllı, daha hızlı ve daha doğruluğa sahip olmasını sağlar.

Yeni Bir Test Yaklaşımı: Agent Tabanlı Testler

tester-army/e2e, testleri "bir hedefi doğrudan doğal dilde ifade et" şeklinde tanımlamayı sağlar. Örneğin bir test senaryosunda:

await agent.act('upgrade the workspace to the Pro plan');

Bu satır, bir "agent"ın uygulamayı bilgisayarın ekranında bulduğu yerde "Pro plana yükselt" adımı gerçekleştirerek ilerlemesini sağlar. Agent, bu işlemi gerçekleştirdikten sonra, sonucun doğruluğunu doğrulamak için bir sonraki adımda assert (doğrula) komutu ile kontrol edilir:

await agent.assert('the invoice preview shows a prorated amount');

Bu, testin sadece bir dizi kod değil, aynı zamanda bir "kullanıcı eylemi" olarak görülebilir hale gelmesini sağlar. Testler, daha önce yapılan eylemleri kaydeder ve bu kayıtlar, uygulama değişikliği olmadığı sürece sonraki test çalıştırmasında yeniden oynanır. Bu sayede, her testin başına model çağrıları veya tekrarlı eylemler gerekmeyebilir.

Avantajları: Daha Akıllı, Daha Hızlı, Daha Kolay

1. Doğal Dil ile Test Yazımı

Test senaryolarını doğrudan doğal dilde tanımlayarak, testler hem geliştiriciler hem de ürün ekibinin anlayabileceği bir dilde yazılabilir. Bu, testlerin okunabilirliğini artırır ve ekip içi iletişimde daha az anlaşılmazlık oluşmasına neden olur.

2. Agent ile Otomatik Hareket

Her test adımında bir "agent" uygulamayı kontrol eder. Bu agent, kullanıcı gibi davranarak butonlara tıklar, metin girer, sayfaları geçer gibi eylemleri gerçekleştirir. Böylece testler, uygulamanın gerçek kullanıcı davranışını daha gerçekçi bir şekilde simüle eder.

3. Otomatik Eylem Kaydı ve Oynatma

Agent'ın yaptığı her eylem kaydedilir. Sonraki test çalıştırmasında bu eylemler, uygulama değişikliği olmadığı sürece tekrar oynanır. Bu, testlerin hızını önemli ölçüde artırır çünkü her seferinde aynı adım tekrarlanmaz. Sadece testin sonucu doğrulanır.

4. Hem Web Hem de Mobil Destek

tester-army/e2e, hem web hem de mobil uygulamalar için çalışır. Web için Playwright temelli bir motor kullanırken, mobil için agent-device ile iOS ve Android simülatörlerini destekler. Bu sayede aynı test senaryosu, farklı platformlarda aynı şekilde çalıştırılabilir.

5. Çekirdek ve Sistem Bütünlüğü

Framework, @e2e-dev/kernel ve @e2e-dev/smol gibi paketlerle sunulan özel bir yapıya sahiptir. Bu paketler, her test çalıştırmasında bir warm Chromium microVM içinde çalışacak şekilde ayarlanır. Bu da testlerin izole ve tutarlı çalışmasını sağlar.

6. Kullanıcı Tarafından Seçilebilir Model ve API

Framework, kullanıcıların kendi aboneliklerini, API anahtarlarını veya yerel modeli kullanmasını sağlar. Bu, özel güvenlik gereksinimlerine veya kurumsal kurallara uygun bir yapı sunar.

Kullanım Senaryoları

1. CI/CD Süreçlerinde Otomatik Test Çalıştırması

tester-army/e2e, her pull request veya schedule ile çalıştırılabilir. Bu sayede her değişiklik, otomatik olarak test edilir ve hatalar hızlıca tespit edilir. Ayrıca, @e2e-dev/github paketi ile test sonuçları doğrudan pull request'e yorum olarak eklenir. Bu, geliştiricilerin hemen farkında olmalarını sağlar.

2. Ürün Geliştirme Ekibine Yöneltme

Testler doğrudan kullanıcı eylemleri gibi ifade edildiğinden, ürün ekibinin test senaryolarını doğrudan anlaması mümkündür. Bu, testlerin sadece geliştiriciler için değil, aynı zamanda ürün yöneticileri ve test mühendisleri için de anlamlı olmasına neden olur.

3. Çoklu Platform Destekli Uygulamalar

Eğer bir uygulama hem web hem de mobil platformda çalışıyorsa, aynı test senaryosu her iki platformda da çalıştırılabilir. Bu, hem test kodunun tekrarlanmasını azaltır hem de tutarlılık sağlar.

4. Çevresel ve Çekirdek Testler

Framework, web ve mobil uygulamalar için desteklediği Vite, Next.js, Astro, Expo, SwiftUI, Jetpack Compose, Kotlin Multiplatform, Flutter gibi teknolojilerle birlikte örnek projeler sunar. Bu sayede hızlı bir şekilde kurulum ve kullanım sağlanabilir.

Geliştirme ve Geliştirme Durumu

tester-army/e2e, şu anda aktif geliştirme sürecindedir ve 1.0 sürümüne doğru ilerlemektedir. API’ler ve yapılandırma dosyaları hâlâ küçük değişikliklere uğrayabilir. Ancak, projenin açık kaynak (Apache-2.0) lisansı altında olması ve Discord üzerinden destek alınabilmesi, geliştirici topluluğunu etkin bir şekilde desteklemektedir.

Sonuç

tester-army/e2e, E2E testlerinde bir dönüm noktası sunar. Doğal dil, agent tabanlı hareketler ve otomatik eylem kaydı, testlerin hem daha akıllı hem de daha hızlı olmasını sağlar. Özellikle büyük ölçekli ve çoklu platformlu projelerde, bu framework, test sürecini yeniden tanımlayabilir. Geliştiricilerin, doğrudan kullanıcı gibi davranan bir "agent" sayesinde testler yazmasına izin veren bu yaklaşım, geleceğin test framework’lerinden biri olmaya aday görünüyor.