SevdanurGenc's picture
Upload 300 files
9438a57 verified
|
Raw History Blame Contribute Delete
28.6 kB

TestAjanı

Yerel BDM ajanlarıyla çok dilli kod yorumlama ve kendini düzelten otomatik test üretimi

English · Türkçe

Python FastAPI React Docker Ollama

TestAjanı, Python, JavaScript/TypeScript ve Java kodlarını bilgisayarınızda çalışan bir büyük dil modeliyle (BDM) yorumlar; birim, arayüz (sözleşme) ve web arayüzü testleri üretir. Üretilen her test paketi yalıtılmış bir Docker ortamında gerçek derleyici ve test koşucusuyla çalıştırılır. Derleme hataları, başarısız testler ve kapsanmayan satırlar ajana geri beslenir; bu döngü testler yeşile dönüp kapsama hedefine ulaşılana kadar sürer. Sonuçta testler satır kapsama, mutasyon testi ve elle yerleştirilmiş gerçekçi hatalar ile puanlanır.

Kaynak kodunuz bilgisayarınızdan çıkmaz: model Ollama üzerinde çalışır, testlerin çalıştırıldığı ortamın ağ erişimi kapalıdır.

Çalışma alanı

İçindekiler

Özellikler

Diller Python (pytest), JavaScript ve TypeScript (Jest + Babel), Java (JUnit 5)
Test türleri Birim · Arayüz/sözleşme (genel API, imzalar, istisna türleri) · Web arayüzü (Playwright)
Ajan döngüsü Planla → Uygula → Doğrula → Düzelt; araç çağırma (tool calling) ile
Doğrulama Docker sandbox'ta gerçek derleyici ve test koşucuları (ağ kapalı, CPU/bellek sınırlı)
Ölçütler Satır kapsama (coverage.py, Istanbul, JaCoCo), mutasyon skoru (8 operatör ailesi), yerleştirilmiş hata yakalama
Arayüz Canlı ajan akışı, kaynak kod üzerinde kapsama + mutant haritası, test indirme, toplu değerlendirme, geçmiş · Türkçe / İngilizce anahtarı (TR · EN) · gerçek zamanlı GPU göstergesi
Yerel öncelikli Araç çağırmayı destekleyen her Ollama modeli; varsayılan qwen2.5-coder:7b; hesaplama cihazı Otomatik / GPU / CPU
Bulut modelleri (isteğe bağlı) OpenAI (ve LM Studio, OpenRouter, vLLM gibi OpenAI uyumlu sunucular) ile Anthropic Claude; bağlandıktan sonra model listesi eşitlenir

Nasıl çalışır?

flowchart TD
    A[Kaynak kod + dil + test türü] --> B[1 · PLANLA<br/>Analist ajan: kod yorumu, birimler, uç durumlar, test planı]
    B --> C[2 · UYGULA<br/>Test yazarı ajan araçları çağırır]
    C --> D[3 · DOĞRULA<br/>Sandbox: derle → çalıştır → kapsama]
    D --> E{Kabul edilebilir ve<br/>kapsama ≥ hedef?}
    E -- evet --> G[5 · DEĞERLENDİR<br/>Mutasyon testi + yerleştirilmiş hatalar]
    G --> M[6 · GÜÇLENDİR<br/>Kaçan mutantlar → ajan test ekler<br/>→ yeniden doğrula, yeniden ölç]
    E -- hayır --> F{Tur hakkı var mı?}
    F -- evet --> R[4 · DÜZELT<br/>Geri besleme: derleme hatası, başarısız testler,<br/>kapsanmayan satırlar + bağlam sıkıştırma]
    R --> C
    F -- hayır --> G
    M --> H[En iyi test paketi, kod yorumu, kapsama, mutasyon skoru, şüpheli hatalar]

Ajan araçları

Araç Görevi
write_tests(code) Test dosyasının tamamını kaydeder
run_tests() Sandbox'ta derler, çalıştırır ve kapsamayı ölçer
read_source() Test edilen kodu satır numaralarıyla döndürür
report_bug(test_name, reason) Başarısız bir testin testteki değil koddaki gerçek bir hatayı gösterdiğini bildirir
finish(summary) Döngüyü bitirir; yalnızca son koşu kabul edilebilir durumdaysa kabul edilir

Küçük yerel modellerin işini kolaylaştıran tasarım kararları

  • Zorunlu doğrulama: Model testi yazıp çalıştırmazsa orkestratör testi kendisi çalıştırır.
  • Kurtarma katmanı: Metne gömülü JSON araç çağrıları ve düz kod blokları araç çağrısına dönüştürülür.
  • Bağlam sıkıştırma: Her yeni turda yalnızca sistem istemi, görev, güncel test dosyası ve son sonuç tutulur.
  • En iyi sürüm seçimi: Teslim edilen paket son aday değil, doğrulanmış en iyi adaydır.
  • Anlaşılır geri besleme: Kapsanmayan satırlar yalnızca numarasıyla değil, kaynak metniyle birlikte verilir.
  • Mutasyon güdümlü güçlendirme: Mutasyon testinden sonra kaçan mutantlar (satır, özgün → değiştirilmiş) ajana gösterilir; ajan bunları yakalaması gereken testler ekler. Genişletilmiş paket yalnızca özgün kodda yeşil kalır, önceki tüm testleri korur ve mutasyon skorunu düşürmezse (aynı tohumlu mutant kümesi) benimsenir. Koşu başına kapatılabilir; deneylerde mutfix ablasyonudur.
  • Koşu başına enerji: NVIDIA kartta koşu boyunca GPU güç çekişi saniyede bir örneklenip Wh olarak toplanır (kartın toplam çekişidir; deneyleri tek tek koşun).

Ayrıntılar: docs/AJAN_MIMARISI.md

Hızlı başlangıç

Tek gereksinim Docker Desktop'tır (Linux'ta Docker Engine). Başlatıcılar Docker'ı açar, ilk çalıştırmada sandbox imajlarını derler, uygulamayı başlatır, ilk seferde modeli indirir (~5 GB) ve http://localhost:8000 adresini tarayıcıda açar.

Sistem Başlat Durdur GPU kontrol Masaüstü kısayolu (bir kez)
Windows Baslat-Windows.bat (çift tık) Durdur-Windows.bat GPU-Kontrol-Windows.bat Kisayol-Olustur-Windows.bat
macOS Baslat-macOS.command (çift tık) Durdur-macOS.command GPU-Kontrol-macOS.command Dosyayı Dock'a sürükleyin
Linux ./baslat-linux.sh ./durdur-linux.sh ./gpu-kontrol-linux.sh ./scripts/linux-kisayol-olustur.sh

Model ekran kartında mı? Ollama GPU'yu kendiliğinden kullanır; açılması gereken bir ayar yoktur. Üst çubuktaki GPU göstergesi (Ollama durumunun solunda) 2 saniyede bir yenilenir: kart adı, kullanım yüzdesi, VRAM kullanılan/toplam ve kart çalışırken yanıp sönen nokta. Tıklayınca ayrıntılar açılır: kullanım ve VRAM çubukları, son 2 dakikanın kullanım grafiği, sıcaklık, güç (anlık/sınır), çekirdek saati, bellek bant genişliği, fan, güç durumu, sürücü ve bellekteki her modelin GPU payı (%100 ise yeşil; bir kısmı CPU'ya taştıysa turuncu). NVIDIA kartlı bilgisayarda başlatıcı uygulama konteynerine GPU izleme erişimi verir (docker-compose.gpu.yml); bu erişim yoksa (ör. Mac'te) gösterge yine Ollama'dan modelin GPU payını gösterir. Her koşu GPU payını üretim hızıyla (token/sn) birlikte kaydeder. GPU kontrol kısayolu modeli yükler, hızı ölçer, çalışan uygulamanın güncel sürüm olup olmadığını denetler ve model tamamen GPU'da değilse ne yapılacağını söyler.

Güncellemeden sonra gösterge görünmüyorsa eski uygulama konteyneri çalışıyordur: başlatıcıyı bir kez daha çalıştırın (uygulamayı her seferinde yeniden derler). Hâlâ eski görünüyorsa Onar-Windows.bat dosyasını çalıştırın: eski uygulama konteynerlerini kaldırır, uygulamayı önbelleksiz yeniden derler ve çalışan sürümü doğrular.

GPU göstergesi

Seçenekler: --model qwen2.5-coder:14b, --rebuild, --no-browser (Windows'ta: Baslat-Windows.bat -Model qwen2.5-coder:14b -Rebuild).

Windows: Docker Desktop, WSL 2 ve donanım sanallaştırması gerektirir. Docker "Virtual Machine Platform not enabled" hatası verirse yönetici PowerShell'de wsl --install --no-distribution komutunu çalıştırıp bilgisayarı yeniden başlatın. Görev Yöneticisi → Performans → CPU ekranında Sanallaştırma: Etkin yazdığından emin olun; yazmıyorsa BIOS'ta Intel VT-x / AMD SVM'yi açın.

macOS: Gatekeeper başlatıcıyı engellerse dosyaya sağ tıklayıp Aç'ı seçin.

Bilgisayarınızda Ollama zaten kuruluysa başlatıcı onu kullanır (Windows/macOS'ta GPU hızlandırması için daha iyidir); kurulu değilse Ollama konteynerde çalışır.

Docker Compose ile elle başlatma
./scripts/build_sandboxes.sh                      # sandbox imajları, bir kez
docker compose --profile ollama up --build -d     # uygulama + Ollama
docker compose exec ollama ollama pull qwen2.5-coder:7b
Docker'sız çalıştırma (geliştirme)
./scripts/setup_local.sh        # pip, npm, JUnit 5/JaCoCo jar'ları, Playwright Chromium
ollama serve &
ollama pull qwen2.5-coder:7b

cd backend && SANDBOX_MODE=local uvicorn app.main:app --reload --port 8000
cd frontend && npm run dev      # http://localhost:5173, API'yi arka uca yönlendirir

SANDBOX_MODE=local kodu doğrudan bilgisayarınızda çalıştırır; yalnızca güvendiğiniz kodlarla kullanın.

Kullanım

  1. Kodu yapıştırın, bir örnek seçin ya da dosya açın: tek dosya, birden çok dosya veya proje zip'i. Birden çok dosyada proje kipine geçilir: test edilecek dosyayı seçersiniz, diğerleri yanına yardımcı modül olarak konur (içe aktarmalar çalışır; kapsama ve mutasyon yalnızca test edilen dosyada ölçülür).
  2. Dili ve test türünü seçin; isterseniz modeli, tur sınırını, kapsama hedefini ve mutant sayısını değiştirin.
  3. Testleri üret düğmesine basıp ajan akışını izleyin.
  4. Sonuç sekmelerini inceleyin: kod yorumu, üretilen testler (kopyala/indir), kapsama ve mutant haritası, mutasyon tablosu. Rapor düğmesi koşunun kendi başına açılan HTML raporunu açar (yazdırıp PDF olarak kaydedilebilir). Aynı ayrıntılı, renkli rapor (genel değerlendirme, göstergeler, tur grafiği, kapsama haritası, mutasyon dökümü, öneriler) Geçmiş sekmesindeki her koşu için HTML ve PDF düğmeleriyle, seçili dilde alınabilir.
Sekme Ne yapar
Çalışma alanı Tek koşu; canlı ajan akışı ve sonuçlar
Değerlendirme Veri setinde toplu koşu; duraklat/sürdür; Markdown rapor
Karşılaştır İki değerlendirme aynı öğeler üzerinde yan yana: ortalamalar, Wilcoxon p, A12, öğe değerleri
Deneyler Makale protokolünün tamamı (hızlı, tam ya da model karşılaştırma profili; harici mutasyon aracıyla çapraz doğrulama dahil): ilerleme, kalan süre, duraklat/sürdür, sonuç zip'i; uygulama yeniden açılınca kendiliğinden sürer
Otomasyon Çok sayıda örneği başında durmadan, sırayla test eder; her biri için TR/EN HTML + PDF rapor kaydeder
Geçmiş Önceki koşular
Kod geçmişi Aynı kodun tüm koşuları bir arada: kapsama/mutasyon eğilimi, model bazında tablo, en iyi koşu, CSV

Çalışma alanı otomasyonu

Otomasyon sekmesi, hazır örneklerden istediğiniz kadarını Çalışma alanındaki gibi, sırayla ve kimse başında olmadan test eder. Örnekleri seçin (arama, dil ve test türü süzgeci; Tümü / Temizle), Çalışma alanındaki ayarları (model, cihaz, tur, kapsama hedefi, mutant, mutant turu) ve rapor dillerini belirleyip Başlat'a basın. Her örnek bitince koşu Geçmiş'e eklenir ve ayrıntılı raporu Türkçe ve İngilizce, HTML ve PDF olarak kaydedilir (PDF'ler web arayüzü sandbox'ının başsız Chromium'uyla üretilir). Üst çubuktaki gösterge her sekmede ilerlemeyi gösterir; iş bitince bir şerit özeti verir (tamamlanan, tümü geçen, başarısız, süre) ve izin verildiyse masaüstü bildirimi çıkar. Sonuç tablosunda her raporun bağlantısı vardır; Özet genel bir sayfa açar, Tümünü indir (zip) hepsini tarihli bir zip olarak verir. Dosya ekle… (ya da sürükle-bırak) kendi kodunuzu Kendi dosyalarım altında listeye ekler: tek dosya ya da proje zip'i; her kaynak dosya ayrı bir örnek olur, aynı yüklemedeki diğer dosyalar yanına yardımcı olarak konur; eklenenler sonraki otomasyonlar için saklanır. Model seçimi Tek model ya da Rastgele olabilir: rastgele kipte her örneğe işaretlediğiniz havuzdan (yerel ve bulut) tohumlu, dengeli bir rastgele atamayla model verilir; model her örnekte görünür ve özet sayfasına Model bazında tablosu eklenir. Atama varsayılan olarak güçlü modellere ağırlık verir (güç model adından tahmin edilir: sürüm, opus/sonnet/haiku ya da mini/nano gibi kademe, parametre sayısı; en güçlü model en zayıfın yaklaşık 4 katı örnek alır). Otomasyon başlamadan kullanılacak her model kısa bir istekle sınanır; hata verenler (kullanımdan kalkmış, erişim yok, yüklü değil) havuza alınmaz; Modelleri sına düğmesi sonucu önceden gösterir. Bir model çalışırken model düzeyinde hata verirse çıkarılır, kalan örnekleri diğer modellere aktarılır ve düşen örnek başka bir modelle bir kez yeniden denenir. Duraklat / Sürdür / Durdur vardır; durum her örnekten sonra kaydedilir ve yarıda kalan otomasyon uygulama yeniden açılınca kendiliğinden sürer.

Otomasyon

Kod geçmişi

Kod geçmişi, Çalışma alanı, Otomasyon, Değerlendirme ve Deneyler'deki tüm koşuları test edilen koda göre (dil + kod içeriği) gruplar. Hazır örnekler ve eklenen dosyalar adıyla tanınır; yapıştırılan kod dosya adıyla ya da analistin özetiyle adlandırılır; kod değiştirilirse yeni bir kayıt olarak izlenir. Her kod için koşu sayısı ve tüm testlerin geçtiği koşular, en iyi kapsama ve mutasyon skoru, koşular boyunca kapsama ve mutasyon grafiği (üzerine gelince model ve ayrıntılar), Model bazında tablo ve her koşu (Çalışma alanında açma, HTML/PDF rapor bağlantılarıyla) gösterilir. CSV indir koşuları makale tabloları için dışa aktarır.

Kod geçmişi

Model sağlayıcıları ve hesaplama cihazı

Üst çubuktaki fiş düğmesi Bağlantılar penceresini açar:

  • Ollama (yerel) – durum ve varsayılan hesaplama cihazı: Otomatik (Ollama karar verir; önerilen), GPU (tüm katmanlar ekran kartında; bellek yetmezse model yüklenemez) ya da CPU (yalnızca işlemci). Çalışma alanında tek bir koşu için cihaz ayrıca seçilebilir. Varsayılan CPU ise GPU göstergesinde "CPU kipi" etiketi görünür.
  • OpenAI ve Claude (Anthropic) – API anahtarını yapıştırıp Bağlan ve modelleri eşitle'ye basın. Anahtar önce denenir, yalnızca sağlayıcı kabul ederse kaydedilir; ardından model listesi çekilir ve her açılışta tazelenir (Modelleri eşitle ile istendiğinde de). OpenAI için OpenAI uyumlu sunucu adresi de girilebilir.

Bağlı modeller, sağlayıcıya göre gruplanmış olarak tüm model seçicilerde (Çalışma alanı, Değerlendirme, Deneyler) görünür. Model kimlikleri sağlayıcı önekiyle tutulur – openai:gpt-4o, anthropic:claude-sonnet-4-5 – böylece geçmiş, değerlendirme ve karşılaştırmalar her koşuyu hangi sağlayıcının ürettiğini kaydeder (scripts/run_benchmark.py --model openai:gpt-4o da çalışır). Bulut modeli seçildiğinde kod ve testler o sağlayıcıya gönderilir ve kullanım hesabınızdan ücretlendirilir; enerji yalnızca yerel modellerde ölçülür. Anahtarlar ayar dosyasında (aşağıda) ya da ortam değişkenlerinde tutulur, tarayıcıya hiçbir zaman tam hâliyle gönderilmez; API yalnızca bu bilgisayardaki sayfalardan gelen istekleri kabul eder.

Ayar dosyası (taşınabilir)

Tüm ayarlar uygulama klasöründeki tek dosyadadır: ayarlar/testajani-ayarlar.json – API anahtarları ve sunucu adresleri, varsayılan hesaplama cihazı, dil, tema, seçili model ile Çalışma alanı, Değerlendirme ve Deneyler seçenekleri. Dosyayı başka bir bilgisayardaki uygulamanın ayarlar klasörüne kopyalayıp uygulamayı başlatın: tüm ayarlar gelir (uygulama çalışırken bırakılan dosya bir sonraki sayfa yenilemesinde okunur). Bağlantılar → Ayar dosyası bölümündeki İndir / Yükle düğmeleri aynı işi yapar. Veri klasöründe bir yedek tutulur: aynı bilgisayarda yeni sürüm başka bir klasöre açılıp dosya kopyalanmasa da ayarlar geri gelir. Dosyada API anahtarları açık metin olarak durur: git, sürüm zip'leri ve Docker imajı dosyayı içermez – kimseyle paylaşmayın.

Bağlantılar

Sağ üstteki TR · EN anahtarı tüm arayüzün dilini değiştirir: ajan akışı, durma nedenleri ve indirilen raporlar da (?lang=en) seçilen dile geçer; yeni koşularda analist açıklamasını da bu dilde yazar. Koşudan sonra dil değiştirilirse kod yorumu model tarafından bir kez çevrilir ve koşuyla birlikte saklanır. Güneş/ay düğmesi aydınlık ve karanlık mod arasında geçiş yapar (varsayılan olarak sistem ayarı izlenir). İki seçim de tarayıcıda hatırlanır. 2026.10.10 sürümünden önce oluşturulmuş koşuların akış başlıkları Türkçe kalır.

Kapsama ve mutant haritası Toplu değerlendirme
Kapsama haritası Değerlendirme
Deneyler (karanlık mod) Karşılaştır Mutant turu
Deneyler Karşılaştır Mutant turu

Değerlendirme

Veri seti üç bölümde 42 program ve 76 hatadan oluşur (benchmarks/manifest.json içindeki "split" alanı):

Bölüm Program Hata Yazan
dev – geliştirme 15 (Python, JS/TS, Java, web UI) 35 yerleştirilmiş proje yazarları; ajan geliştirilirken kullanıldı
test – ayrılmış test 7 (Python, JS/TS, Java) 21 yerleştirilmiş proje yazarları; geliştirme sırasında ajana hiç gösterilmedi
bagimsiz – bağımsız 20 (10 Python, 10 Java, farklı algoritmalar) 20 özgün tek satırlık hata üçüncü kişiler: QuixBugs (MIT), scripts/import_quixbugs.py ile alındı

Kendi kodunuzu Dosya aç düğmesiyle ya da düzenleyiciye sürükleyerek yükleyebilirsiniz (.py, .js, .ts, .java, .html; HTML + JS birlikte bırakılırsa Web UI testine geçer).

Ölçüt Tanım
Derlenme oranı Test dosyası derlenip yüklenen öğelerin oranı
Geçen test oranı Orijinal kodda geçen testler / tüm testler
Satır kapsama Çalıştırılan / çalıştırılabilir satırlar
Mutasyon skoru (öldürülen + zaman aşımı) / (öldürülen + hayatta kalan + zaman aşımı) mutant
Yerleştirilmiş hata yakalama En az bir testin yeni başarısız olmasına yol açan yerleştirilmiş hatalar
İlk → son Geri beslemesiz ilk tur ile döngü sonrası en iyi paketin karşılaştırması
python scripts/run_benchmark.py --reference                                   # insan yazımı referans testler (BDM gerekmez)
python scripts/run_benchmark.py --model qwen2.5-coder:7b                      # tam döngü → reports/LLM_SONUCLARI.md
python scripts/run_benchmark.py --model qwen2.5-coder:7b --max-iterations 1 --out reports/tek_atis.md
python scripts/run_benchmark.py --model qwen2.5-coder:7b --report-lang en --out reports/llm_results_en.md  # İngilizce rapor
python scripts/run_benchmark.py --model qwen2.5-coder:7b --model llama3.1:8b  # model karşılaştırması
python scripts/run_benchmark.py --model qwen2.5-coder:14b --split test --repeats 3   # ayrılmış test bölümü, 3 tekrar
python scripts/run_benchmark.py --model qwen2.5-coder:14b --ablate judge prune       # ablasyon
python scripts/judge_accuracy.py --model qwen2.5-coder:14b --rule-mode veto           # hakem kesinlik/duyarlılık
PYNGUIN=pynguin python scripts/pynguin_baseline.py --seeds 1 2 3                      # arama tabanlı taban çizgisi
python scripts/mutation_sensitivity.py                                                # mutant örneklem duyarlılığı

Makale deneyleri tek tıkla: Deneyler sekmesini açın, Tam (makale) profilini ve modelleri seçip Deneyi başlat'a basın. İki modeli 1 ve 4 turla (her biri 3 tekrar), tüm ablasyonları (mutasyon turu mutfix dahil) ve hakem doğruluğu çalışmasını sırayla koşar; ilerlemeyi ve kalan süreyi gösterir, her öğeden sonra durumu kaydeder: bilgisayar uyur ya da yeniden başlarsa, uygulama açıldığında aynı öğeden devam eder. Deneme (~5 dk) profili (ilk seçili model, iki küçük program, tam döngü) kurulumu hızlıca sınar; Model karşılaştırma profili seçili en çok 8 modeli (yerel ve bulut karışık olabilir) aynı programlarda, aynı ayarlarla (en çok 4 tur, 3 tekrar) koşar ve öğe başına token sayılarını raporlar. Tam ve karşılaştırma profillerinde ajanın son test paketleri ayrıca yerleşik araçlarla yeniden ölçülür (Python: mutmut 2.5, JavaScript/TypeScript: StrykerJS 8; Java/PIT dahil değil): rapordaki Harici mutasyon araçlarıyla çapraz doğrulama bölümü kendi skorumuzu, araç skorunu, ortalama farkı ve Spearman ρ / Pearson r değerlerini verir, ham değerler zip'te harici_mutasyon.csv dosyasındadır. Raporlardaki PDF düğmeleri artık tarayıcının yazdırma penceresi yerine uygulamanın kendi ürettiği A4 PDF'i açar (tablolar sayfaya sığar, kapalı bölümler açılır, alt bilgide sayfa numarası vardır); deney zip'inde raporların PDF'leri de bulunur. Bilgisayar yeniden başlar ya da Ollama/Docker kapanırsa düşen öğeler artık başarısız sayılmaz: uygulama altyapı geri gelene kadar bekleyip yeniden dener; bitmiş bir deneyde kalan bu tür öğeler ve araç hatalı harici mutasyon ölçümleri Eksikleri tamamla düğmesiyle yeniden koşulur (modelin kendi başarısızlıkları korunur). Otomasyon sekmesindeki Raporları yeniden oluştur düğmesi eski koşuların HTML ve PDF raporlarını güncel şablonla yeniden üretir (testler yeniden koşulmaz, model çağrılmaz). İlk açılışta Python ve Node test ortamı imajları bu araçlar için bir kez yeniden kurulur; Durdur deneyi kalıcı olarak bitirir (biten adımlar korunur). Deney panelinde ayrıca Rapor ve PDF düğmeleri ayrıntılı, renkli raporu (öne çıkanlar, yapılandırma grafiği, eşleştirilmiş istatistikler, bölümler, hakem doğruluğu, öğe ayrıntıları) TR/EN rapor dili seçimiyle açar; zip adı profil ve tarih içerir, içinde iki dildeki raporlar bulunur. Sonuçları indir tüm değerlendirmeleri, ANALIZ.md dosyasını (ortalama ± SS, Wilcoxon işaretli sıra testi, Vargha–Delaney A12) ve hakem sonuçlarını içeren zip'i verir. Komut satırı başlatıcıları (Deney-Calistir-Windows.bat, ./deney-calistir-linux.sh, kısa profil -Profil hizli) da kullanılabilir.

BDM gerektirmeden ölçülenler (reports/):

Çalışma Sonuç
İnsan yazımı referans paketler, 12 program (geliştirme + ayrılmış test) 140 test, tamamı yeşil; %100 satır kapsama (kapsama ölçülen 8 program), %87,1 havuzlanmış mutasyon skoru (276/317), 34/34 yerleştirilmiş hata
Mutant örneklem büyüklüğü (11 program, tüm mutantlar) 30 mutant tüm mutantlara göre ortalama 1,8 puan sapar (20 mutant: 3,8)
Pynguin 0.47, 6 Python programı × 3 tohum, 120 sn %97,6 satır kapsama, %68,6 mutasyon skoru, yerleştirilmiş hataların yalnızca %43,1'i (22/51)
Hakem kural aşaması, 72 etiketli iddia kasıtlı doğrulamaya dayanan yanlış iddiaların 19/19'unu, ama gerçek hataların da 5/32'sini reddeder

Bu sayılar BDM'ye değil, referans test paketlerine aittir; model sonuçları yukarıdaki komutlarla üretilir. Yöntem: reports/BASARIM_RAPORU.md

Proje yapısı

backend/
  app/
    agents/       orkestratör, istemler, araç şemaları
    llm/          Ollama istemcisi (araç çağırma + kurtarma), testler için betik model
    sandbox/      yerel/Docker çalıştırıcı; Python, JS/TS, Java ve UI koşucuları
    mutation/     mutasyon motoru
    eval/         benchmark koşucusu, rapor üretici
    main.py       FastAPI (REST + SSE)
  tests/          uçtan uca testler
frontend/         React + Vite + Monaco arayüzü
benchmarks/       22 program (geliştirme + ayrılmış test), yerleştirilmiş hatalar, referans testler, hakem iddiaları
sandbox/          sandbox Dockerfile'ları, Node araç zinciri
scripts/          başlatıcılar, kurulum, benchmark komutu
docs/             mimari dokümanı, ekran görüntüleri
reports/          başarım raporu

Ayarlar

Değişken Varsayılan Açıklama
OLLAMA_URL http://localhost:11434 Ollama adresi
OLLAMA_MODEL qwen2.5-coder:7b Varsayılan model
OLLAMA_NUM_CTX 16384 Bağlam penceresi
OPENAI_API_KEY / ANTHROPIC_API_KEY — İsteğe bağlı bulut sağlayıcı anahtarları (Bağlantılar penceresinden de girilebilir)
OPENAI_BASE_URL — OpenAI uyumlu sunucu adresi (ör. LM Studio için http://host.docker.internal:1234/v1)
ANTHROPIC_MAX_TOKENS 16000 Claude çıktı belirteci sınırı (model daha azına izin veriyorsa kendiliğinden düşürülür)
SETTINGS_DIR <uygulama>/ayarlar Taşınabilir ayar dosyasının klasörü (Docker'da ./ayarlar klasöründen bağlanan /config)
ALLOWED_HOSTS localhost,127.0.0.1,… Uygulamanın yanıt verdiği ana makine adları (DNS rebinding'e karşı); * = hepsi
OLLAMA_DEVICE auto Başlangıçtaki varsayılan hesaplama cihazı (auto, gpu, cpu); Bağlantılar'dan değiştirilebilir
OLLAMA_NUM_GPU boş GPU'ya yüklenecek katman sayısı; boş = Ollama karar verir (önerilen), 999 = tüm katmanları GPU'ya zorla
LLM_TIMEOUT 600 Model akışında iki parça arası en uzun bekleme (sn); ilk parça model yüklemeyi de kapsar
LLM_TOTAL_TIMEOUT 1800 Tek bir model yanıtının toplam üst sınırı (sn)
SANDBOX_MODE local docker (yalıtılmış) veya local
MAX_ITERATIONS 4 Doğrulama/düzeltme tur sınırı
COVERAGE_TARGET 85 Kapsama hedefi (%)
MAX_MUTANTS 30 İş başına en fazla mutant
RUN_TIMEOUT 90 Tek test koşusu zaman aşımı (sn)
MAX_PARALLEL_JOBS 2 Eşzamanlı iş sayısı
AUTO_RESUME 1 Uygulama açılınca yarıda kalan deneyi sürdür (0 = kapalı)
LTA_CHROMIUM — Yerel modda Playwright için Chromium yolu

Geliştirme

cd backend && python -m pytest -q     # ajan döngüsü, koşucular, mutasyon, raporlar, Ollama istemcisi, SSE
cd frontend && npm run build

Etkileşimli API dokümantasyonu http://localhost:8000/docs adresindedir.

Sınırlamalar

  • Mutasyon operatörleri sözdizimseldir ve eşdeğer mutantlar ayıklanmaz; skorlar gerçek değerin alt sınırıdır.
  • Girdiler dış bağımlılığı olmayan tek dosyalardır (Mockito gibi sahte nesne çatıları desteklenmez).
  • Web arayüzü testlerinde satır kapsaması ölçülmez.
  • Küçük yerel modeller rastgeleliğe duyarlıdır; sonuç çıkarmadan önce değerlendirmeleri tekrarlayın.

Atıf

TestAjanı'nı akademik bir çalışmada kullanırsanız lütfen şöyle atıf yapın:

@misc{testajani2026,
  title  = {Yerel B{\"u}y{\"u}k Dil Modeli Ajanlar{\i}yla {\c{C}}ok Dilli Kod Yorumlama ve
            Kendini D{\"u}zelten Otomatik Test {\"U}retimi},
  author = {Soyad, Ad and Soyad, Ad},
  year   = {2026},
  howpublished = {\url{https://github.com/<kullanici>/<depo>}}
}

Lisans

Henüz bir lisans seçilmedi. Depoyu herkese açık yapmadan önce bir LICENSE dosyası ekleyin (örneğin MIT veya Apache-2.0).