Yazılım testi her zaman zamana karşı bir yarış olmuştur. Yayın pencereleri daralıyor. Kod tabanları büyüyor. Ekiplerden, bir şeyleri bozmadan daha hızlı ürün çıkarmaları bekleniyor. Son zamanlarda yapay zeka, bu baskı ortamına bir rahatlama vaadiyle adım attı. Saniyeler içinde test senaryoları oluşturabilir, binlerce satır kodu anomaliler için tarayabilir ve ekibiniz uyurken tekrarlayan test setlerini çalıştırabilir. Hız gerçektir. Ancak yönü olmayan hız, sadece daha hızlı bir kaza yapma yoludur.

Gerçek şu ki, test süreçlerinde yapay zeka bir otopilot değil, bir hızlandırıcı olarak en iyi sonucu verir. İyi kullanıldığında, angarya işleri azaltır ve hataları erkenden gün yüzüne çıkarır. Dikkatsizce kullanıldığında ise kör noktalar yaratır ve size sahte bir güvenlik hissi verir. Yapay zekanın nerede yardımcı olduğunu ve nerede başarısız olduğunu anlamak, kararlı bir yazılım çıkarmak ile zamanında yetişmiş ancak bozuk bir kod çıkarmak arasındaki farktır.

Yapay Zekanın Hak Ettiği Yerler

Yapay zekanın neleri iyi yönettiğiyle başlayalım. Tekrarlayan regresyon testleri bariz bir kazanımdır. Onlarca tarayıcı ve cihaz kombinasyonunda aynı giriş akışlarını, form doğrulamalarını ve ödeme adımlarını çalıştırmak insanlar için zihin yorucudur, makineler için ise basittir. Yapay zeka destekli test çalıştırıcıları, bu test setlerini gece boyunca yürütebilir ve yorgun bir mühendisin gözden kaçırabileceği görsel regresyonları veya performans düşüşlerini işaretleyebilir.

Test verisi oluşturma bir diğer güçlü yanıdır. Gerçekçi ancak sahte isimler, adresler, işlem geçmişleri ve saat dilimlerine sahip on binlerce kayda ihtiyaç duyduğunuzda, yapay zeka bunu anında oluşturabilir. Bu, bir veri tabanına yük testi yaparken veya analitik panelinizin yüksek kardinaliteli verileri nasıl işlediğini kontrol ederken önemlidir. Bu hacimde veriyi manuel olarak üretmek sadece yavaş değil, aynı zamanda gerçek dışıdır.

Yapay zeka ayrıca taslak (boilerplate) test scriptlerinin yazılmasını da hızlandırır. Yeni bir API uç noktası için standart bir birim testi (unit test) veya bir sayfanın yüklenip yüklenmediğini doğrulamak için temel bir script'e ihtiyacınız varsa, bir yapay zeka asistanı iskeleti oluşturabilir. Tüm yazım sürecini sıfırdan yürütmeden yapıyı, sahte girdileri ve assertion (doğrulama) yer tutucularını elde edersiniz. Bu, makul bir başlangıç noktasıdır.

Bu faydalar somuttur. Geniş kapsamlı testler yapmanın maliyeti düştüğü için hatalar daha erken yakalanır. Tekrarlayan görevler insan mesaisinden çalmayı bırakır. Ekip daha zorlu problemlere odaklanabilir.

Kimsenin Konuşmadığı Kör Noktalar

Sorun, ekipler geniş kapsamı (broad coverage) derin kapsamla (deep coverage) karıştırdığında başlar. Yapay zeka kalıpları bulur. Eğitildiği verilere dayanarak normal bir hatanın nasıl görüneceğini tahmin eder. Bu da sıradan olanlarda mükemmel olduğu, ancak tuhaf olanlarda sürekli başarısız olduğu anlamına gelir.

Uç durumları (edge cases) düşünün. Standart kullanıcı yolculukları üzerine eğitilmiş bir model, muhtemelen bir kullanıcının üç modal diyalog açtığında, tarayıcı geri düğmesine bastığında ve asenkron bir kaydetme sırasında sayfayı yenilediğinde tetiklenen hatayı kaçıracaktır. Bunlar varsayım değil. Canlı ortamdaki (production) olaylar genellikle, istatistiksel olarak nadir oldukları için hiçbir eğitim veri setinin yeterince temsil edemediği dizilerden kaynaklanır. Yapay zeka çan eğrisinin merkezini kovalar. En kötü hatalarınız ise uçlarda yaşar.

İnsan sezgisi burada önem kazanır. Deneyimli bir test uzmanı yeni bir özelliğe bakar ve iş riskini düşünür. Hayal kırıklığına uğramış bir kullanıcının bir formu nasıl suistimal edebileceğini veya bir tatil trafiği artışı sırasında ödeme ağ geçidinin zaman aşımına uğraması durumunda ne olacağını sorar. Bu, bağlamsal düşünmedir. Yapay zeka iş baskısını hissetmez. Envanter sisteminizin yıllar öncesinden kalan eski bir entegrasyon nedeniyle kırılgan olduğunu bilmez. Doğru olanı değil, sizin özel alanınız için doğru görüneni yazar.

Ayrıca halüsinasyon ve kırılgan otomasyon sorunu da vardır. Yapay zeka tarafından oluşturulan test scriptleri makul görünür ancak yanlış seçiciler (selectors), yanlış doğrulamalar (assertions) veya bir sonraki sprint'te değişebilecek DOM yapısı hakkındaki varsayımlar içerebilir. Bu scriptleri okumadan çalıştırırsanız, zaman kaybına neden olan yanlış pozitifler (false positives) veya hataların geçmesine izin veren yanlış negatifler (false negatives) alırsınız. Eğer test aslında doğru davranışı doğrulamıyorsa, bir test panelindeki yeşil onay işareti anlamsızdır.

Ne