|
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
28.6 kB
| <div align="center"> | |
| # TestAjanı | |
| **Yerel BDM ajanlarıyla çok dilli kod yorumlama ve kendini düzelten otomatik test üretimi** | |
| [English](README.md) · [Türkçe](README.tr.md) | |
|  | |
|  | |
|  | |
|  | |
|  | |
| </div> | |
| 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](https://ollama.com) üzerinde çalışır, testlerin | |
| çalıştırıldığı ortamın ağ erişimi kapalıdır. | |
|  | |
| ## İçindekiler | |
| - [Özellikler](#özellikler) | |
| - [Nasıl çalışır?](#nasıl-çalışır) | |
| - [Hızlı başlangıç](#hızlı-başlangıç) | |
| - [Kullanım](#kullanım) | |
| - [Değerlendirme](#değerlendirme) | |
| - [Proje yapısı](#proje-yapısı) | |
| - [Ayarlar](#ayarlar) | |
| - [Geliştirme](#geliştirme) | |
| - [Sınırlamalar](#sınırlamalar) | |
| - [Atıf](#atıf) | |
| - [Lisans](#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? | |
| ```mermaid | |
| 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](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. | |
|  | |
| 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. | |
| <details> | |
| <summary>Docker Compose ile elle başlatma</summary> | |
| ```bash | |
| ./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 | |
| ``` | |
| </details> | |
| <details> | |
| <summary>Docker'sız çalıştırma (geliştirme)</summary> | |
| ```bash | |
| ./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. | |
| </details> | |
| ## 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. | |
|  | |
| ### 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. | |
| | Kapsama ve mutant haritası | Toplu değerlendirme | | |
| |---|---| | |
| |  |  | | |
| | Deneyler (karanlık mod) | 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](https://github.com/jkoppel/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ı | | |
| ```bash | |
| 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](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 | |
| ```bash | |
| 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: | |
| ```bibtex | |
| @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). | |