Etiket: Software Testing

  • AI Kötü Süreçleri Düzeltmez, Büyütür

    AI ile yazılım geliştirme konuşurken çoğu zaman hızdan bahsediyoruz.

    Daha hızlı kod yazmak.
    Daha hızlı test üretmek.
    Daha hızlı dokümantasyon hazırlamak.
    Daha hızlı analiz yapmak.
    Daha hızlı release’e çıkmak.

    Bunların hepsi değerli.

    Ama burada çok kritik bir gerçek var:

    AI iyi tasarlanmış bir süreci hızlandırabilir.
    Kötü tasarlanmış bir süreci ise daha hızlı karmaşaya dönüştürebilir.

    R. Buckminster Fuller’a atfedilen meşhur bir söz var:

    “A fool with a tool still remains a fool.”

    Yani araç ne kadar güçlü olursa olsun, onu kullanan düşünce yapısı, süreç ve karar kalitesi zayıfsa sonuç kendiliğinden iyi hale gelmez.

    AI da böyledir.

    AI sihirli bir süreç düzeltici değildir.

    Eğer gereksinimler belirsizse, AI da belirsizliğin üzerine üretim yapar.
    Eğer backlog dağınıksa, AI da dağınık bağlamla çalışır.
    Eğer test stratejisi zayıfsa, AI’ın ürettiği testler sahte güven oluşturabilir.
    Eğer mimari kurallar net değilse, AI çalışan ama mimariyi bozan kod üretebilir.
    Eğer release kararı izlenebilir değilse, AI sadece bu kararsızlığı hızlandırır.

    Bu yüzden AI kullanmaya başlamadan önce şu soruyu sormak gerekir:

    Biz gerçekten iyi bir süreci mi hızlandırıyoruz, yoksa kötü bir süreci mi ölçekliyoruz?


    AI hız kazandırır, ama yön vermez

    AI çok hızlı çıktı üretebilir.

    Ama hız tek başına kalite değildir.

    Bir ekip ne istediğini net bilmiyorsa, AI’ın hızlı üretmesi problemi çözmez.

    Tam tersine, yanlış yöne daha hızlı gidilmesine neden olabilir.

    Çünkü yazılım geliştirmede asıl mesele sadece üretmek değildir.

    Doğru problemi anlamak, doğru çözümü tasarlamak, doğru test etmek, doğru zamanda doğru kararı vermek gerekir.

    AI bu adımlara destek olabilir.

    Ama sürecin temel disiplini yoksa AI’ın çıktısı da güvenilir olmaz.


    Belirsiz gereksinim, hızlı yanlış üretim demektir

    Yazılım projelerinde birçok sorun koddan önce başlar.

    İhtiyaç net değildir.
    Kabul kriterleri eksiktir.
    Kapsam sürekli değişir.
    Öncelikler belirsizdir.
    Kim karar verecek belli değildir.

    Böyle bir ortamda AI’a görev verdiğimizde, AI boşlukları tahminle doldurur.

    Ve çoğu zaman bunu çok ikna edici şekilde yapar.

    Sonuçta ortaya çalışan ama yanlış ihtiyacı karşılayan bir çıktı çıkabilir.

    Bu yüzden AI-native SDLC’de gereksinim kalitesi daha da önemli hale gelir.

    Çünkü AI yanlış ihtiyacı çok hızlı şekilde ürüne dönüştürebilir.


    Zayıf test kültürü, AI ile daha tehlikeli hale gelir

    AI test de üretebilir.

    Ama bu, sistemin iyi test edildiği anlamına gelmez.

    AI çoğu zaman mutlu yolu test eder.
    Edge case’leri atlayabilir.
    İş kuralını yanlış anlayabilir.
    Yetersiz assertion yazabilir.
    Kritik regresyon senaryolarını kaçırabilir.

    Eğer ekipte güçlü bir test stratejisi yoksa, AI’ın ürettiği testler sahte güven oluşturabilir.

    Test varmış gibi görünür.

    Ama gerçekten neyi doğruladığı belirsizdir.

    Bu yüzden AI-native dünyada test otomasyonu kadar test aklı da önemlidir.


    Mimari belirsizlik teknik borcu hızlandırır

    AI çalışan kod üretebilir.

    Ama çalışan kod her zaman iyi kod değildir.

    Mimari sınırlar net değilse AI:

    • katmanları karıştırabilir,
    • domain kurallarını yanlış yere koyabilir,
    • tekrar eden kod üretebilir,
    • bağımlılık yönünü bozabilir,
    • geçici çözümü kalıcı hale getirebilir,
    • sistemi zamanla daha kırılgan hale getirebilir.

    Bu yüzden AI ile kod üretmeden önce mimari kuralların, modül sınırlarının ve kalite standartlarının net olması gerekir.

    Aksi halde AI teknik borcu azaltmaz.

    Teknik borcu daha hızlı üretir.


    Review kültürü yoksa AI çıktısı kontrolsüz kalır

    AI’ın ürettiği kod, dokümantasyon, test veya analiz doğrudan doğru kabul edilmemelidir.

    Review kültürü zayıfsa, AI çıktısı kolayca sisteme girer.

    Çünkü düzgün görünür.
    Mantıklı görünür.
    Çalışıyor gibi görünür.
    Hatta bazen testten de geçer.

    Ama bu yeterli değildir.

    AI çıktısı şu sorularla değerlendirilmelidir:

    • Doğru ihtiyaca mı hizmet ediyor?
    • Mimariye uygun mu?
    • Testler anlamlı mı?
    • Güvenlik riski var mı?
    • Bakımı kolay mı?
    • İnsan onayı gereken bir karar içeriyor mu?

    AI-native geliştirmede review daha az değil, daha akıllı hale gelmelidir.


    Quality gate yoksa hız risk üretir

    AI ile üretim hızlandıkça quality gate’lerin önemi artar.

    Çünkü hızlanan sadece doğru işler değildir.

    Hatalar da hızlanır.
    Eksik testler de hızlanır.
    Yanlış kararlar da hızlanır.
    Teknik borç da hızlanır.

    Bu yüzden AI çıktısı teslimata dönüşmeden önce doğrulanmalıdır.

    Build geçti mi?
    Testler anlamlı mı?
    Static analysis temiz mi?
    Security riski var mı?
    Fonksiyonel davranış doğru mu?
    Deployment sonrası sistem izlenebilir mi?
    İnsan onayı gereken yerde süreç duruyor mu?

    Quality gate yoksa AI-native geliştirme değil, hızlı ve kontrolsüz üretim vardır.


    Küçük hedefler, kısa iterasyonlar ve PDCA

    AI-native dönüşüm bir anda büyük bir platform kurarak başlamamalı.

    Daha doğru başlangıç küçük, ölçülebilir ve kontrollü hedefler koymaktır.

    Örneğin:

    • önce gereksinim kalitesini iyileştirmek,
    • sonra kabul kriterlerini netleştirmek,
    • sonra test otomasyonunu güçlendirmek,
    • sonra quality gate eklemek,
    • sonra AI çıktısını değerlendirme sürecine almak,
    • sonra agentic akışları kontrollü şekilde denemek.

    Burada PDCA yaklaşımı çok faydalıdır:

    Plan  → Neyi iyileştireceğiz?
    Do    → Küçük bir alanda dene.
    Check → Sonucu ölç ve öğren.
    Act   → İşe yarıyorsa standartlaştır, yaramıyorsa düzelt.

    AI-native SDLC de böyle gelişmelidir.

    Büyük iddialarla değil, küçük ve sürekli öğrenen iterasyonlarla.

    Çünkü süreç iyileştirme tek seferlik bir proje değildir.

    Öğrenme döngüsüdür.

    AI bu döngüyü hızlandırabilir.

    Ama döngünün kendisi yoksa, AI sadece daha hızlı deneme-yanılma üretir.


    AI kötü süreci görünür hale getirir

    Aslında AI’ın iyi taraflarından biri de budur.

    Kötü süreci gizlemez.

    Çoğu zaman daha görünür hale getirir.

    Backlog dağınıksa belli olur.
    Kabul kriterleri zayıfsa belli olur.
    Test stratejisi eksikse belli olur.
    Mimari kararlar belirsizse belli olur.
    Release süreci izlenebilir değilse belli olur.

    Bu yüzden AI kullanımı bir fırsat da olabilir.

    Çünkü ekip şunu fark eder:

    Sorun AI’da değil, sürecin kendisinde.

    AI’dan iyi sonuç almak için önce süreci iyileştirmek gerekir.


    Nereden başlamak gerekir?

    AI-native olmak için hemen büyük bir agentic platform kurmak gerekmez.

    Önce mevcut sürece dürüstçe bakmak gerekir.

    Şu sorular iyi bir başlangıçtır:

    • Gereksinimler yeterince net mi?
    • Kabul kriterleri yazılıyor mu?
    • Test stratejimiz var mı?
    • Kritik iş akışları otomasyonla korunuyor mu?
    • Kod review gerçekten yapılıyor mu?
    • Mimari kurallar tanımlı mı?
    • Release kararı kanıta dayanıyor mu?
    • Production sonrası sistem izleniyor mu?
    • AI çıktısını nasıl doğruluyoruz?

    Bu sorulara cevap vermeden AI’ı sürece eklemek, çoğu zaman var olan sorunları hızlandırır.

    Başlangıç küçük olmalı.

    Bir ekip.
    Bir ürün.
    Bir süreç problemi.
    Bir ölçülebilir hedef.
    Bir kısa iterasyon.

    Sonra öğren, düzelt, tekrar dene.

    AI-native dönüşümün sağlıklı yolu budur.


    Sonuç

    AI yazılım geliştirmeyi hızlandırabilir.

    Ama kötü süreci düzeltmez.

    Belirsiz gereksinimi netleştirmeden kod üretmek risktir.
    Zayıf test stratejisiyle AI testlerine güvenmek risktir.
    Mimari kurallar olmadan AI kodu almak risktir.
    Review kültürü olmadan AI çıktısını kabul etmek risktir.
    Quality gate olmadan AI ile release yapmak risktir.

    Bu yüzden AI-native SDLC’nin özü sadece AI kullanmak değildir.

    Öz, AI’ı iyi tasarlanmış bir yazılım teslimat sisteminin içine yerleştirmektir.

    Bu da küçük hedefler, kısa iterasyonlar ve sürekli öğrenme ile olur.

    Süreç iyiyse AI değeri büyütür.

    Süreç kötüyse karmaşayı büyütür.

    Bence bu dönemin en net cümlelerinden biri şu:

    AI kötü süreçleri düzeltmez.
    Sadece daha hızlı görünür hale getirir.

    Ve yine aynı dengeye geliyoruz:

    AI üretir.
    Sistem doğrular.
    İnsan karar verir.


    Serinin devamı

    Bu yazı, Agentic Software Development serisinin yedinci yazısıdır.

    Serinin önceki yazısı:
    Evaluation-Driven Development: AI Sistemlerinde Test Artık Kod Testi Değil

    Serinin sonraki yazısı:
    Proof-Carrying Delivery: AI ile Üretilen İş Kanıtıyla Gelmeli


  • Evaluation-Driven Development: AI Sistemlerinde Test Artık Kod Testi Değil

    Yazılım dünyasında test uzun yıllar boyunca daha çok şu soruya odaklandı:

    Kod doğru çalışıyor mu?

    Bu soru hâlâ önemli.

    Unit test, integration test, functional test, performance test, security test, UAT… Bunların hiçbiri önemini kaybetmedi.

    Ama AI-native ve agentic sistemlerde artık bu soru tek başına yeterli değil.

    Çünkü sistemin içinde sadece klasik kod yok.

    Artık prompt var.
    Context var.
    RAG var.
    Tool calling var.
    Memory var.
    Agent workflow var.
    İnsan onayı gereken karar noktaları var.

    Bu yüzden yeni soru şu hale geliyor:

    AI doğru bağlamda, doğru aracı, doğru sınırlar içinde kullandı mı?

    İşte Evaluation-Driven Development burada devreye giriyor.


    Evaluation-Driven Development nedir?

    Evaluation-Driven Development, AI destekli veya agentic sistemlerde çıktının sadece çalışıp çalışmadığını değil; doğru, güvenilir, izlenebilir ve beklenen davranışa uygun olup olmadığını değerlendirme yaklaşımıdır.

    Klasik test genelde şunu sorar:

    Fonksiyon beklenen sonucu verdi mi?

    Evaluation ise daha geniş bakar:

    AI bu sonuca nasıl ulaştı?
    Doğru bağlamı kullandı mı?
    Kaynakları doğru yorumladı mı?
    Gerekli yerde durup insana sordu mu?
    Yanlış aracı çağırdı mı?
    Uydurma bilgi üretti mi?
    Güvenlik veya politika sınırını aştı mı?

    Yani AI-native sistemlerde test, sadece kodun davranışını değil, AI’ın karar ve aksiyon sürecini de kapsar.


    Neden şimdi önemli?

    Çünkü AI çıktıları çoğu zaman ikna edici görünür.

    Cümleler düzgün olabilir.
    Kod çalışıyor olabilir.
    Test yazılmış olabilir.
    Dokümantasyon profesyonel durabilir.
    Analiz mantıklı görünebilir.

    Ama görünüm güvenilirlik değildir.

    AI yanlış context kullanabilir.
    Eksik bilgiyle karar önerebilir.
    RAG sonucunu yanlış yorumlayabilir.
    Yanlış tool çağırabilir.
    İnsan onayı gereken yerde otomatik ilerleyebilir.
    Hallucination üretebilir.
    Güvenlik veya gizlilik sınırını aşabilir.

    Bu yüzden AI-native SDLC’de sadece “test geçti mi?” demek yeterli olmaz.

    Şunu da sormak gerekir:

    AI davranışı değerlendirildi mi?


    Artık sadece output değil, süreç de test edilmeli

    Klasik yazılımda çoğu zaman sonuca bakarız.

    Fonksiyon beklenen sonucu verdi mi?
    API doğru response döndü mü?
    UI beklenen davranışı gösterdi mi?

    AI sistemlerinde sonuç kadar, o sonuca nasıl ulaşıldığı da önemlidir.

    Çünkü AI doğru cevaba yanlış yoldan ulaşabilir.

    Yanlış kaynağı kullanıp doğru görünen cevap verebilir.
    Yanlış tool çağırıp sonucu şans eseri doğru yorumlayabilir.
    İnsan onayı gereken yerde durmadan ilerleyebilir.
    Eksik context ile fazla özgüvenli bir çıktı üretebilir.

    Bu yüzden AI-native sistemlerde testin kapsamı genişler.

    Sadece çıktı değil, süreç de değerlendirilmelidir.


    Neleri evaluate etmeliyiz?

    Evaluation-Driven Development içinde birkaç temel alan öne çıkar.


    1. Output Evaluation

    İlk bakılacak şey AI çıktısının kendisidir.

    Şu sorular sorulur:

    • Çıktı doğru mu?
    • Beklenen formatta mı?
    • Eksik bilgi var mı?
    • Uydurma bilgi içeriyor mu?
    • Kullanıcı ihtiyacına gerçekten cevap veriyor mu?
    • Gereksiz özgüvenli veya yanıltıcı mı?

    Bu özellikle dokümantasyon, analiz, özet, kod açıklaması ve karar önerilerinde önemlidir.

    Çünkü AI çıktısı düzgün görünse bile yanlış olabilir.


    2. Context Evaluation

    AI’ın kalitesi büyük ölçüde kullandığı context’e bağlıdır.

    Yanlış context, yanlış sonuç üretir.

    Bu yüzden şu sorular önemlidir:

    • AI doğru dokümanları kullandı mı?
    • Güncel bilgiye mi dayandı?
    • Eski veya geçersiz bilgiyi mi kullandı?
    • Gereksiz context sonucu bozdu mu?
    • Kritik bağlam eksik miydi?

    AI-native sistemlerde context yönetimi test edilmeden güvenilirlik sağlanamaz.

    Çünkü çoğu hata modelden değil, yanlış veya eksik context’ten gelir.


    3. RAG Evaluation

    RAG kullanılan sistemlerde evaluation daha da önemlidir.

    Çünkü cevap sadece modelden değil, getirilen kaynaklardan da etkilenir.

    RAG için şu sorular sorulur:

    • Doğru kaynaklar getirildi mi?
    • Getirilen kaynaklar güncel mi?
    • Cevap kaynaklara dayanıyor mu?
    • Kaynakta olmayan bilgi uyduruldu mu?
    • Benzer ama yanlış doküman kullanıldı mı?
    • Kritik kaynak kaçırıldı mı?

    RAG sistemlerinde başarı sadece “cevap güzel mi?” değildir.

    Başarı, cevabın doğru kaynağa dayanmasıdır.


    4. Tool Calling Evaluation

    Agentic sistemlerde AI sadece cevap üretmez.

    Araç da çağırır.

    Kod çalıştırabilir.
    API çağırabilir.
    Veritabanı sorgulayabilir.
    Dosya okuyabilir.
    Ticket açabilir.
    Deployment başlatabilir.

    Bu yüzden tool calling mutlaka değerlendirilmelidir.

    Şu sorular sorulmalıdır:

    • Doğru araç çağrıldı mı?
    • Araç doğru parametrelerle kullanıldı mı?
    • Gereksiz tool call yapıldı mı?
    • Tool sonucu doğru yorumlandı mı?
    • Hata durumunda doğru davrandı mı?
    • Yetkisi olmayan bir aksiyon almaya çalıştı mı?

    Agentic sistemlerde tool calling kontrol edilmezse, AI sadece yanlış cevap üretmez; yanlış aksiyon da alabilir.


    5. Agent Workflow Evaluation

    Birden fazla adımı olan agentic sistemlerde sadece sonuç değil, akış da önemlidir.

    Ajan doğru sırayla mı ilerledi?
    Doğru noktada durdu mu?
    Gerekli kontrolü yaptı mı?
    İnsan onayı gereken yerde bekledi mi?
    Quality gate’i atladı mı?
    Hatalı adımdan geri dönebildi mi?

    Bu yüzden agent workflow test edilmelidir.

    Özellikle yazılım geliştirme ajanlarında bu çok kritiktir.

    Çünkü bir ajan gereksinimi yanlış yorumlarsa, diğer ajan kodu da yanlış yazabilir, test de yanlış senaryoyu doğrulayabilir.

    Hata zincir boyunca büyür.


    6. Human Decision Evaluation

    AI-native SDLC’de insan tamamen devreden çıkmaz.

    Ama insan her adımda da olmamalıdır.

    Önemli olan insanın doğru karar noktasında devreye girmesidir.

    Bu yüzden şu sorular test edilmelidir:

    • İnsan onayı gereken yerde sistem duruyor mu?
    • Düşük riskli durumda otomasyon ilerleyebiliyor mu?
    • Yüksek riskli durumda approval istiyor mu?
    • AI riskli bir kararı kendi vermeye çalışıyor mu?
    • Onay geçmişi kayıt altına alınıyor mu?

    Bu yaklaşımı şöyle özetleyebiliriz:

    Human-in-the-loop değil, human-at-the-decision-point.

    Yani insan her adımda süreci yavaşlatan kişi değil, kritik karar noktasında devreye giren kişidir.


    Evaluation sadece manuel yapılmaz

    Evaluation deyince her şeyi insanın tek tek kontrol etmesi anlaşılmamalı.

    Bazı değerlendirmeler otomatik olabilir:

    • output format kontrolü,
    • test sonucu,
    • güvenlik scan sonucu,
    • policy check,
    • regression eval,
    • golden dataset karşılaştırması,
    • hallucination kontrolü,
    • tool call doğrulaması,
    • RAG kaynak uygunluğu,
    • metrik bazlı kalite kontrolü.

    Bazı değerlendirmeler ise insan kararı gerektirir:

    • risk kabulü,
    • mimari istisna,
    • ürün kararı,
    • müşteri etkisi,
    • etik veya hukuki hassasiyet,
    • production release onayı.

    Yani evaluation, otomasyon ve insan kararının birlikte tasarlandığı bir kalite yaklaşımıdır.


    Evaluation-Driven Development ve Quality Gates ilişkisi

    Bir önceki yazıda quality gates konusunu konuşmuştuk.

    Evaluation-Driven Development, bu quality gate’lerin AI-native dünyadaki karşılığıdır.

    Klasik quality gate şunu sorar:

    Testler geçti mi?

    AI-native quality gate ise şunu da sorar:

    AI çıktısı güvenilir mi?
    AI doğru context kullandı mı?
    Ajan doğru aracı çağırdı mı?
    İnsan onayı gereken yerde durdu mu?
    Cevap kaynaklara dayanıyor mu?
    Süreç sonradan denetlenebilir mi?

    Bu yüzden evaluation, AI-native SDLC’nin merkezinde olmalıdır.

    Çünkü AI ile üretim hızlandıkça, değerlendirme disiplini zayıf kalırsa risk büyür.


    Evaluation nasıl uygulanabilir?

    Evaluation-Driven Development bir anda büyük ve karmaşık bir sistem kurmak zorunda değildir.

    Küçük başlanabilir.

    Örneğin:

    • AI çıktıları için beklenen format kuralları belirlenebilir.
    • Kritik prompt’lar için test veri setleri hazırlanabilir.
    • RAG cevapları için kaynak doğruluğu kontrol edilebilir.
    • Tool calling senaryoları için başarılı ve başarısız akışlar test edilebilir.
    • İnsan onayı gereken karar noktaları netleştirilebilir.
    • Agent workflow logları izlenebilir hale getirilebilir.
    • Kritik senaryolar için regression eval setleri oluşturulabilir.

    Buradaki amaç, AI’ı yavaşlatmak değildir.

    Amaç, AI’ın hızlı üretimini güvenilir hale getirmektir.


    Sonuç

    AI-native sistemlerde test artık sadece kod testi değildir.

    Kod hâlâ test edilmelidir.

    Ama bunun yanında AI çıktısı, context, RAG, tool calling, agent workflow, insan karar noktaları ve audit evidence da değerlendirilmelidir.

    Çünkü AI sadece metin üretmez.

    Karar önerir.
    Aksiyon alır.
    Araç kullanır.
    Süreçleri tetikler.
    Teslimat zincirine dahil olur.

    Bu yüzden yeni dönemde yazılım kalitesi iki soruyla ölçülecek:

    Sistem doğru çalışıyor mu?

    ve

    AI doğru davrandı mı?

    Bence Evaluation-Driven Development’ın özü burada.

    Ve yine aynı dengeye geliyoruz:

    AI üretir.
    Sistem değerlendirir.
    İnsan kritik kararı verir.


    Serinin devamı

    Bu yazı, Agentic Software Development serisinin altıncı yazısıdır.

    Serinin önceki yazısı:
    Quality Gates: AI Çıktısı Nasıl Teslimata Dönüşür?

    Serinin sonraki yazısı:
    AI Kötü Süreçleri Düzeltmez, Büyütür

Top