← Blog'a Dön
TEKNIK

Yazilim Testi Nedir? Test Turleri Rehberi

F. Cagri Bilgehan20 Şubat 20269 dk okuma
yazilim testiunit testTDDtest otomasyonkalite

Yazilim Testi Nedir? Test Turleri Rehberi

"Calisiyor" ile "dogru calisiyor" arasinda buyuk fark var. Test yazmak sikicinir — ama test yazmamak cok daha pahalidir. Bir bug'in production'da duzeltilmesi, gelistirme asamasinda duzeltmenin 30 kati daha pahali.

Neden Test Yazmaliyiz?

  • Hatalari erken yakalar
  • Refactoring'i guvenli kilar
  • Dokumantasyon goreviggorur
  • Regression onler
  • Kod kalitesini arttirir
  • Deploy guvenini arttirir

Test Piramidi

Test piramidi, testlerin katmanlarini ve oranlarini gosterir:

Unit Test (Temel — en cok): Tek bir fonksiyon veya component'i test eder.

Integration Test (Orta): Birlestirme birden fazla birimi birlikte test eder.

E2E Test (Ust — en az): Tum uygulamayi kullanici perspektifinden test eder.

Test Turleri

1. Unit Test

Tek bir fonksiyonu veya component'i izole olarak test eder.

// toplam.js
function toplam(a, b) {
  return a + b;
}

// toplam.test.js
test('iki sayiyi toplar', () => {
  expect(toplam(2, 3)).toBe(5);
});

test('negatif sayilarla calisir', () => {
  expect(toplam(-1, -2)).toBe(-3);
});

Araclar: Jest, Vitest, Mocha

2. Integration Test

Birden fazla birimin birlikte calismasini test eder.

test('kullanici kaydi ve giris', async () => {
  await request(app)
    .post('/api/register')
    .send({ email: 'test@test.com', password: '12345678' })
    .expect(201);

  const res = await request(app)
    .post('/api/login')
    .send({ email: 'test@test.com', password: '12345678' })
    .expect(200);

  expect(res.body.token).toBeDefined();
});

Araclar: Supertest, Testing Library

3. E2E (End-to-End) Test

Tum uygulamayi basdan sona test eder.

test('kullanici giris yapar ve dashboard gorur', async ({ page }) => {
  await page.goto('/login');
  await page.fill('#email', 'test@test.com');
  await page.fill('#password', '12345678');
  await page.click('button[type="submit"]');
  await expect(page).toHaveURL('/dashboard');
  await expect(page.locator('h1')).toContainText('Hosgeldiniz');
});

Araclar: Playwright, Cypress, Selenium

4. Snapshot Test

Component'in gorunumunun degisip degismedigini kontrol eder.

5. Performance Test

Uygulamanin yuk altindaki davranisini test eder.

6. Security Test

Guvenlik aciklari ve zaafiyetleri tarar.

TDD (Test-Driven Development)

Test oncelikli gelistirme dongusu:

  1. Red — Once test yaz (baarisiz olur)
  2. Green — Testi geciren minimum kodu yaz
  3. Refactor — Kodu iyilestir (test hala gecmeli)

Test Kapsamı (Coverage) Hedefleri

| Katman | Hedef | |--------|-------| | Unit test | yuzde 80+ | | Integration test | Kritik akislar | | E2E test | Temel kullanici senaryolari | | Genel | yuzde 70-80 |

Test Araclari

| Arac | Tur | Dil | |------|-----|-----| | Jest | Unit/Integration | JavaScript | | Vitest | Unit/Integration | JavaScript (hizli) | | Playwright | E2E | Coklu dil | | Cypress | E2E | JavaScript | | Testing Library | Component | React/Vue/Angular | | SonarQube | Kod kalitesi | Coklu dil | | k6 | Performans | JavaScript |

Test Best Practices

  1. AAA paterni — Arrange, Act, Assert
  2. Bagimsiz testler — Her test izole calismalı
  3. Anlamli isimler — "test1" degil, "kullanici giris yapar"
  4. Mock ve stub — Dis bagimliliklari izole edin
  5. CI/CD'de otomatik calistirin
  6. Edge case'leri test edin — Sinir degerleri, bos veri

Sonuc

Yazilim testi yatirimdir — dogrudan gelir getirmez ama hata maliyetini dramatik sekilde dusurur. Unit testlerle baslayip, kritik akislari integration testlerle kapatin. Test yazan ekipler daha hizli ve guvenli release yapar.

Yazilim testi stratejisi ve otomasyon danismanligi icin benimle iletisime gecin: info@cagribilgehan.com. Projelerime goz atin: cagribilgehan.com

İlgili Yazılar

Acik Kaynak Yazilim Rehberi: Nedir, Nasil Katki Yapilir?

Acik kaynak yazilim nedir, lisans turleri nelerdir ve acik kaynak projelere nasil katki yapilir? GitHub, open source ve topluluk rehberi.

CI/CD Nedir? Surekli Entegrasyon ve Dagitim Rehberi

CI/CD nedir, neden onemlidir ve nasil kurulur? GitHub Actions, Jenkins ve otomatik test-deploy pipeline rehberi.