Modül 6 · Domain 6 — Testing with Copilot (%10-15) · ⏱ 13 dakika

Unit test üretimi ve validasyon

Unit test generation and validation

Bu derste neler öğreneceksin

  • Copilot ile unit test üretiminin farklı yollarını öğrenmek
  • AI üretimi testlerin güvenilirliğini nasıl değerlendireceğini anlamak
  • Test iskeleti (scaffolding) ile tamamlama arasındaki farkı kavramak
  • Trivial test anti-pattern'ini tanımak ve önlemek

Copilot ile test üretimi yaklaşımları

Yaklaşım 1: /tests slash komutu

// Fonksiyonu seç, Chat'te yaz:
// /tests for this function

function add(a: number, b: number): number {
  return a + b;
}

// Copilot üretir:
describe('add', () => {
  it('should return sum of two positive numbers', () => {
    expect(add(2, 3)).toBe(5);
  });
  it('should handle negative numbers', () => {
    expect(add(-1, 1)).toBe(0);
  });
  // ...
});

Yaklaşım 2: Test dosyasını açık tut

Test dosyasını aç ve implementation’ı neighboring tab olarak bırak. Copilot mevcut test pattern’ini taklit ederek yeni testler önerir.

Yaklaşım 3: Chat ile kapsamlı test seti

"#file:src/services/PaymentService.ts
Write comprehensive Jest tests for PaymentService.processPayment().
Include: happy path, payment failure, network timeout, invalid input.
Mock Stripe API using jest.mock."

AI üretimi testleri değerlendirme

Copilot’un ürettiği testi körü körüne kabul etme. Kontrol et:

Kontrolİyi testKötü test
Assertion anlamlı mı?expect(result).toBe(expected)expect(fn).toBeDefined()
Edge case var mı?null, undefined, boş listeSadece happy path
Mock doğru mu?Gerçek davranışı simüle ederHer zaman doğru döndürür
Test bağımsız mı?Sıraya bağlı değilÖnceki testten durum alıyor

Sınav için kritik ayrım: test scaffolding vs test tamamlama

DurumNe kullan
Yeni servis için test iskeleti lazım@workspace /tests + Chat ile kapsam tanımla
Mevcut test dosyasını genişletNeighboring tab aç, inline completion
Özel mock pattern gerekliChat + #file: ile mevcut mock örneği ver

Copilot test üretiminin sınırlamaları

  • Business logic bilmez: Copilot fonksiyon imzasına bakarak test üretir; iş kurallarını bilmez. “Bu değer %18 KDV içerir” gibi domain bilgisi yoktur.
  • Regression test üretemez: Geçmiş bug’ları bilmez; sadece mevcut kodu görür.
  • Integration test zordur: Servisler arası akış testi için güçlü context gerekir.

Sırada ne var?

Bir sonraki derste test coverage ve quality gates — coverage metrikleri, CI/CD entegrasyonu ve AI üretimi kod için kalite güvencesi.