Modern yazılım testleri, doğru davranışın tekrar edilebilir olduğu fragile bir varsayımı üzerine kurulmuştur. Ancak Github Copilot Coding Agent gibi otonom ajanlar için bu varsayım hemen hemen luôn bozulur. Bu ajanlar, basit kod önerilerinden gerçek ortamlarla etkileşime geçmeye kadar çeşitli görevleri gerçekleştirebilirler.
Otonom Ajanların Doğrulama Çıktıları
Otonom ajanların davranışlarını doğrulamak, geleneksel test yöntemleriyle zorlaşır. Bu ajanlar, gerçek ortamlarda çeşitli görevleri gerçekleştirebilir ve bu görevlerin doğru şekilde tamamlanması, çeşitli faktörlere bağlı olabilir.
Örneğin, bir Github Actions iş akışında Copilot Agent Mode kullanıyorsunuz. Ajan, bir görevi başarılı bir şekilde tamamlasa da, test çalıştırıldığında başarısız olabilir. Bunun nedeni, ajanın görevi tamamlarken izlediği yolun, önceden kaydedilmiş senaryodan veya assertion zamanlamasından farklı olması olabilir.
Bu durum, üç temel soruna yol açar:
- Yanlış negatifler: Görev başarılı bir şekilde tamamlanır, ancak test çalıştırıcısı varyasyonu tolere edemez.
- Kırılgan altyapı: Testler, zamanlama, renderleme veya environmental gürültü gibi görevin doğruluğuna ilişkin olmayan nedenlerle başarısız olur.
- Uygunluk tuzağı: Sonuç doğru olsa da, ajanın davranışı otomatik testin beklediği davranıştan sapması nedeniyle bir gerileme olarak işaretlenir.
Geleneksel Test Yaklaşımlarının Sınırları
Geleneksel test araçları, sabit yürütme yolları için tasarlanmıştır. Ancak davranış dallanmaya başladığında, bu araçlar zorlanır.
- Assertion-based testing: Her kontrol için manuel, emek yoğun spécifikasyonlar gerektirir ve geçerli alternatif yürütme yollarını hesaba katmaz.
- Record-and-replay tools: Çevresel gürültüye karşı çok hassastır; küçük renderleme farklılıkları veya zamanlama varyasyonları souvent yanlış başarısızlıklara neden olur.
- Visual regression testing: İzole ekran görüntülerini karşılaştırır, ancak daha geniş yürütme akışını veya anlamsal anlamı anlamaz.
- ML oracles: Binlerce eğitim örneğine ihtiyaç duyar ve yanlış olarak işaretlediği bir davranışı açıklamaz.
Bu yaklaşımlar, uygulamada farklılık gösterse de, ortak bir yapısal varsayımı paylaşırlar: Doğru davranış, belirli bir observable durum dizisine uyumu ile tanımlanır.
Doğruluk Yeniden Tanımlamak: Temel ve İsteğe Bağlı Davranış
Otonom sistemler için, doğru davranışın tanımı değişmelidir. Bu sistemlerde, correct executions aynı görünmek zorunda değildir, ancak ortak bir mantıksal yapıya sahip olmalıdırlar.
Kavramsal Değişim
Bir bilgisayar kullanımı etkinleştirilmiş Github Copilot Coding Agent, VS Code'da bir arama gerçekleştiriyor olsun. Bir çalıştırma sırasında bir yüklenme ekranı birkaç saniye görünür; başka bir çalıştırma sırasında UI anında yüklenir.
Geleneksel bir test bu durumları farklı sonuçlar olarak görür. Ancak bir geliştirici için, yüklenme ekranı isteğe bağlı bir durumdur; görevin başarılı olup olmadığı değişmez.
Ajan davranışlarını üç kategoriye ayırabiliriz:
- Temel durumlar: Başarılı olunması için gerçekleşmesi gereken kilometre taşları, örneğin "Arama Sonuçları" ekranına ulaşmak.
- İsteğe bağlı varyasyonlar: Çevresel faktörlere bağlı olarak değişen durumlardır, örneğin yüklenme spinners veya dekoratif UI değişiklikleri.
- Birleşen yollar: Farklı adım dizileri (örneğin, bir kısayol kullanarak veya menü kullanarak), sonunda aynı sonuca ulaşan yollar.
Yüklenme ekranı görünmeyebilir. Ancak arama sonuçları görünmelidir. Sadece biri doğruluğu belirler.
Yapay zeka özeti
Otonom ajanların davranışlarını doğrulamak için geleneksel test yöntemlerinin sınırları ve yeni bir yaklaşımın tanıtılması