Download README.tr.md from SevdanurGenc/LLM-Automated-Test-Generation-Agent: direct link, hf CLI and curl.
- Browser
- Download file 28.6 kB
-
https://huggingface.co/SevdanurGenc/LLM-Automated-Test-Generation-Agent/resolve/main/README.tr.md
- Command line
-
hf download hf://SevdanurGenc/LLM-Automated-Test-Generation-Agent/README.tr.md
-
curl -L -o README.tr.md https://huggingface.co/SevdanurGenc/LLM-Automated-Test-Generation-Agent/resolve/main/README.tr.md
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.
İçindekiler
- Özellikler
- Nasıl çalışır?
- Hızlı başlangıç
- Kullanım
- Değerlendirme
- Proje yapısı
- Ayarlar
- Geliştirme
- Sınırlamalar
- Atıf
- Lisans
Ö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
mutfixablasyonudur. - 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.batdosyasını çalıştırın: eski uygulama konteynerlerini kaldırır, uygulamayı önbelleksiz yeniden derler ve çalışan sürümü doğrular.
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-distributionkomutunu ç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
- 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).
- 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.
- Testleri üret düğmesine basıp ajan akışını izleyin.
- 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.
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.
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.
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.
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).









