Flutter, iOS, Android ve web için tek bir codebase vaadiyle geliştiricilerin dikkatini çekiyor. Google Pay, BMW ve Toyota gibi 26.000'den fazla şirket bu frameworkü kullanıyor. Ancak, geliştirme sürecinin kolaylığı, test sürecinin zorluğuyla karşılaşıyor. Mühendisler, 'Flutter geliştirme için mükemmel, ancak test için everything çöküyor' diyor.
Flutter Test Ecosystemunun Problemleri
Flutter test ecosystemu, geleneksel test paradigmalarıyla eşleşmeyen bir mimariye sahip. Google'ın yerleşik çözümleri, topluluk eklentileri ve yerli köprüler, kritik sınırlamalarla geliyor ve ekiplere ağrı verici çalışma-around'lar yapıyor. Sonuç, test bakımının %30-50'lik bir zaman dilimini kapsaması, kırılgan seçiciler ve tüm kullanıcı akışlarının test edilmemesi.
Flutter Testinin Üç Katmanı ve Gizli Hataları
Flutter test ecosystemu, üç ayrı katmana bölünmüştür. Her katman, belirli bir amaç için tasarlanmıştır, ancaknone tek başına tam test piramidini ele alamaz.
Katman 1: Widget Testleri (Tek Güvenilir Katman)
Widget testleri, Flutter'ın parlak yıldızı. Dart'da çalışır ve cihaz veya emülatör gerektirmez, milisaniyeler içinde izole bileşenleri doğrular. Bir test, genellikle bir düğme doğru bir şekilde 렌der edilip edilemeyeceğini, bir form girişini doğrulayıp doğrulamadığını veya bir liste doğru verileri görüntüleyip görüntülemeyeceğini kontrol eder.
testWidgets('Verify counter increments on button tap', (WidgetTester tester) async {
await tester.pumpWidget(const MyApp());
expect(find.text('0'), findsOneWidget);
expect(find.text('1'), findsNothing);
await tester.tap(find.byIcon(Icons.add));
await tester.pump();
expect(find.text('1'), findsOneWidget);
expect(find.text('0'), findsNothing);
});Bu yaklaşım hızlı, deterministik ve CI boru hatları için idealdir. Ancak, widget testleri yalnızca Flutter widget ağacını doğrular, yerel OS etkileşimlerine, sistem diyaloglarına veya donanıma özgü davranışlara görünürlük sağlamaz.
Gelecek: Vision AI Testi ve Seçicilerin Sonu
Birçok ekip, seçici tabanlı testi tamamen terk ederek Vision AI testine yöneliyor. Bu yaklaşım, ekranda görsel olarak yorumlama yapıyor, tıpkı bir insan testçisi gibi. Flutter'ın rendering tuhaflıklarını, piksel yerine widget ağaçlarını analiz ederek atlıyor.
Seçici tabanlı testi terk ederek, Vision AI araçları gibi Drizz veya Test.ai, seguinte şunları yapabilir:
- Görünüşe göre düğmeleri tıklama (örneğin, 'mavi giriş düğmesini beyaz bir simgeyle bul').
- UI değişikliklerini doğrula.
Yapay zeka özeti
Flutter test ecosystemu, geliştiriciler için bir sorun teşkil ediyor. Ancak, Vision AI testi gibi yeni yaklaşımlar, bu sorunu çözmeye yardım ediyor.