---
title: Test etme ve hata ayıklama
description: Verdent ile test etme ve hata ayıklama iş akışları
---

Verdent for VS Code, çok geçişli oluştur-test-onar döngüleri, hata analizi ve otomatik test kapsamı iyileştirmeleri aracılığıyla kapsamlı testler yazmanıza ve sorunları ayıklamanıza yardımcı olur. Projenizin test çerçevesine ve tarzına uyan birim, entegrasyon ve uçtan uca testler oluşturun.

### Neler öğreneceksiniz

- Uç durumları ve beklenen davranışı kapsayan birim testleri oluşturma
- Tüm büyük test çerçeveleriyle çalışma (Jest, Pytest, JUnit vb.)
- Çoklu bileşen iş akışlarını doğrulayan entegrasyon testleri oluşturma
- Test edilmeyen kod yollarını belirleyip test ederek test kapsamını iyileştirme
- Hata mesajı analizi ve yürütme izleme kullanarak sorunları ayıklama
- Yığın izlerinden, hata günlüklerinden ve beklenmeyen davranışlardan hataları teşhis etme

### Ön koşullar

Verdent ile test etmeden ve hata ayıklamadan önce:

- Verdent uzantısı yüklü Visual Studio Code
- VS Code'da açık bir kod tabanı veya proje çalışma alanı
- Kullanılabilir kredileri olan etkin bir Verdent aboneliği
- Projenizde yapılandırılmış bir test çerçevesi (test oluşturma için isteğe bağlı)

---

## Birim testleri yazma

Verdent, projenizin test çerçevesine ve tarzına uyan birim testleri oluşturur. Mevcut testleri analiz ederek kalıplarınızı anlar, ardından uygun kurulum, doğrulama ve mock'lama ile testler üretir.

**Örnek:**

```
Write unit tests for the calculateDiscount function
```

Verdent şunları yapar:
- `calculateDiscount` fonksiyon uygulamasını inceler
- Giriş parametrelerini ve dönüş değerlerini belirler
- Kurallarınıza uymak için mevcut testleri analiz eder (test yapısı, doğrulama stili, adlandırma kalıpları)
- Şunları kapsayan testler oluşturur:
  - **Mutlu yol**: Beklenen çıktılarla geçerli girişler
  - **Uç durumlar**: Sınır değerler, sıfır, negatif sayılar, maksimum değerler
  - **Geçersiz girişler**: null, undefined, yanlış türler
  - **Beklenen davranış**: İş mantığı doğrulaması

**Oluşturulan test yapısı:**

Verdent, projenizin kalıplarını izleyen testler oluşturur:

- **Test paketi organizasyonu**: Describe blokları, test sınıfları veya modül yapısı
- **Kurulum ve sonlandırma**: Mevcut testlerinize uyan before/after kancaları
- **Doğrulamalar**: Projenizin doğrulama kütüphanesini kullanarak (expect, assert, should vb.)
- **Mock'lama**: Mock'lama kalıplarınıza uyarak (jest.mock, sinon, unittest.mock)
- **Adlandırma kuralları**: Yerleşik tarzınızı izleyen test adları

**Çok geçişli oluştur-test-onar döngüleri:**

Kapsamlı test için Verdent çok geçişli döngüler kullanır:

1. **Oluştur**: İlk test paketini oluştur
2. **Çalıştır**: Çalıştıklarını doğrulamak için testleri yürüt
3. **Onar**: Başarısız testleri düzelt veya kapsamı iyileştir
4. **Yinele**: Testler geçene ve kapsam yeterli olana kadar tekrarla

Bu, testlerin yalnızca yazılmasını değil, kod tabanınızla gerçekten doğru çalışmasını sağlar.

<Tip>
  Verdent, kurallarınıza uymak için mevcut testlerinizi analiz eder. Mevcut test kalıplarınız ne kadar tutarlı olursa, Verdent'in oluşturduğu testler projenizin tarzıyla o kadar iyi uyum sağlar.
</Tip>

---

## Desteklenen test çerçeveleri

Verdent, ek yapılandırma gerektirmeden farklı programlama dilleri ve teknoloji yığınlarında tüm büyük test çerçevelerini destekler.

<Tabs>
  <Tab title="JavaScript/TypeScript">
    **Birim test çerçeveleri:**

    <CodeGroup>
    ```javascript Jest
    test('sum returns correct result', () => {
      expect(sum(2, 3)).toBe(5);
    });
    ```

    ```javascript Mocha
    const assert = require('assert');

    describe('sum', () => {
      it('returns correct result', () => {
        assert.strictEqual(sum(2, 3), 5);
      });
    });
    ```

    ```javascript Vitest
    import { describe, it, expect } from 'vitest';

    it('sum returns correct result', () => {
      expect(sum(2, 3)).toBe(5);
    });
    ```

    ```javascript Jasmine
    describe('sum', () => {
      it('returns correct result', () => {
        expect(sum(2, 3)).toEqual(5);
      });
    });
    ```
    </CodeGroup>

    **Çerçeveye özel test:**
    - **React Testing Library** - Kullanıcı odaklı React bileşeni testi
    - **Vue Test Utils** - Resmi Vue.js test kütüphanesi

    **Uçtan uca test:**
    - **Cypress** - Uçtan uca ve bileşen testi
    - **Playwright** - Tarayıcılar arası uçtan uca test
    - **Puppeteer** - Başsız Chrome testi
  </Tab>

  <Tab title="Python">
    - **Pytest** - En popüler Python test çerçevesi
    - **unittest** - Yerleşik Python test çerçevesi
    - **nose2** - unittest'i eklentilerle genişletir
    - **doctest** - Docstring'lere gömülü testler

    Verdent, Python test tarzınıza uyan uygun fixture'lar, parametreleştirme ve doğrulama kalıplarıyla testler oluşturur.
  </Tab>

  <Tab title="Java & JVM">
    - **JUnit** - Standart Java test çerçevesi (JUnit 4, JUnit 5)
    - **TestNG** - Gelişmiş özelliklere sahip test çerçevesi
    - **Mockito** - Java için mock'lama çerçevesi
    - **AssertJ** - Akıcı doğrulama kütüphanesi

    Verdent, Java test kurallarını izleyen ek açıklamalar, yaşam döngüsü yöntemleri ve doğrulamalarla testler oluşturur.
  </Tab>

  <Tab title="Other Languages">
    - **RSpec** (Ruby) - Davranış odaklı geliştirme çerçevesi
    - **PHPUnit** (PHP) - PHP için birim test çerçevesi
    - **Go testing** (Go) - Yerleşik Go test paketi
    - **xUnit** (C#/.NET) - .NET için test çerçevesi
    - **Catch2** (C++) - Modern C++ test çerçevesi

    Verdent, dilinizin test deyimlerine uyum sağlar ve projenizin kurallarına uyan testler oluşturur.
  </Tab>
</Tabs>

Verdent, test çerçevenizi proje yapılandırmanızdan ve mevcut testlerinizden tanır ve kurulumunuza uyan testleri otomatik olarak oluşturur.

---

## Entegrasyon testleri oluşturma

Verdent, birden fazla bileşenin, hizmetin veya modülün birlikte nasıl çalıştığını doğrulayan entegrasyon testleri oluşturur. API etkileşimleri, veritabanı işlemleri, kimlik doğrulama akışları ve çok adımlı kullanıcı yolculukları dahil olmak üzere gerçek iş akışlarını simüle eden testler oluşturur.

**Örnek:**

```
Write integration tests for the user registration flow
```

Verdent, tam akışı doğrulayan testler oluşturur:

1. **Form gönderimi**: Kullanıcı kayıt formunu geçerli verilerle gönderir
2. **Doğrulama**: Arka uç, e-posta formatını, parola gücünü ve veri eksiksizliğini doğrular
3. **Veritabanı ekleme**: Veritabanında bir kullanıcı kaydı oluşturulur
4. **E-posta gönderme**: Onay e-postası gönderilir (mock'lanmış veya gerçek)
5. **Başarılı oturum açma**: Yeni kullanıcı kimlik bilgileriyle hemen oturum açabilir

**Entegrasyon testi yapısı:**

Verdent, entegrasyon testlerini şunlarla oluşturur:

- **Test kurulumu**: Veritabanı tohumlama, hizmet başlatma, test verisi oluşturma
- **İş akışı simülasyonu**: Sırayla çok adımlı işlemler
- **Durum doğrulaması**: Veritabanı durumunu, API yanıtlarını, yan etkileri kontrol etme
- **Dış hizmetleri mock'lama**: E-posta hizmetleri, ödeme API'leri, üçüncü taraf entegrasyonları
- **Test sonlandırması**: Test verisinin temizlenmesi, veritabanı geri alma, hizmet kapatma

**Örnek test senaryoları:**

```
Write integration tests for the checkout and payment process
```

Verdent şunları test eder:
- Sepete öğe ekleme
- İndirim kodlarını uygulama
- Vergi ve kargo ile toplamları hesaplama
- Ödemeyi işleme (mock'lanmış ödeme ağ geçidiyle)
- Veritabanında sipariş kaydı oluşturma
- Onay e-postası gönderme
- Envanteri güncelleme

**Test izolasyonu:**

Verdent, entegrasyon testlerinin düzgün şekilde izole edilmesini sağlar:
- Her test temiz bir veritabanı durumuyla başlar
- Yan etkileri önlemek için dış hizmet çağrıları mock'lanır
- Testler bağımlılıklar olmadan herhangi bir sırada çalışabilir
- Testler başarısız olsa bile temizlik gerçekleşir

<Tip>
Entegrasyon testleri izole test ortamlarından yararlanır; Verdent, veritabanı fixture'larını ayarlamaya ve dış hizmetleri mock'lamaya yardımcı olabilir.
</Tip>

<Note>
  Entegrasyon testleri, bileşenlerin birlikte doğru çalıştığını doğrular. Birim testlerinden daha karmaşıktırlar ancak gerçek dünya iş akışlarının beklendiği gibi çalıştığına dair daha yüksek güven sağlarlar.
</Note>

---

## Test kapsamını iyileştirme

Verdent, test edilmeyen fonksiyonları, dalları ve uç durumları belirlemek için kod tabanınızı analiz eder, ardından kapsamı iyileştirmek için testler oluşturur. Mevcut test paketinizi inceler ve kod yollarının kullanılmadığı boşlukları belirler.

**Örnek:**

```
Analyze test coverage and write tests for uncovered code paths in the payment module
```

Verdent şunları yapar:

1. **Mevcut testleri analiz et**: Şu anda neyin test edildiğini incele
2. **Kapsam boşluklarını belirle**: Test eksik olan belirli fonksiyonları, koşullu dalları, hata işleme yollarını ve uç durumları bul
3. **Eksik testleri oluştur**: Test edilmeyen kodu hedefleyen testler oluştur
4. **Kapsam iyileştirmesini doğrula**: Kapsamın arttığını onaylamak için testleri çalıştır

**Verdent'in belirledikleri:**

- **Test edilmemiş fonksiyonlar**: Hiç test kapsamı olmayan fonksiyonlar
- **Koşullu dallar**: Bir dalın test edilmediği if/else ifadeleri
- **Hata işleme yolları**: Başarısızlık testi olmayan try/catch blokları veya hata geri çağrıları
- **Uç durumlar**: Sınır değerler, null/undefined işleme, tür dönüştürme
- **Entegrasyon noktaları**: API çağrıları, veritabanı işlemleri, dış hizmet etkileşimleri

**Örnek kapsam iyileştirmesi:**

```
Improve test coverage for the UserService class
```

Verdent şunları belirler:
- `getUserById` geçerli ID'ler için testleri var ancak geçersiz ID'ler için yok
- `updateUser` doğrulama başarısızlıkları için testleri eksik
- `deleteUser` yetkilendirme kontrolleri için testleri eksik
- `createUser` içindeki hata işleme yolları test edilmemiş

Ardından özellikle bu boşlukları hedefleyen testler oluşturarak kapsamı %65'ten %95'e çıkarır.

**Kapsam metrikleri:**

Verdent, daha yüksek kapsam yüzdelerine ulaşmanıza ve daha önce test edilmemiş kodlardaki olası hataları yakalamanıza yardımcı olur:

- **Satır kapsamı**: Testler tarafından yürütülen kod satırlarının yüzdesi
- **Dal kapsamı**: Test edilen koşullu dalların yüzdesi
- **Fonksiyon kapsamı**: En az bir teste sahip fonksiyonların yüzdesi
- **İfade kapsamı**: Yürütülen ifadelerin yüzdesi

---

## Verdent ile hata ayıklama

Verdent, hata mesajlarını analiz ederek, yürütme akışını izleyerek, kök nedenleri belirleyerek ve düzeltmeler önererek hata ayıklamaya yardımcı olur. Hata günlüklerini yapıştırın, beklenmeyen davranışı tanımlayın veya Verdent'ten belirli sorunları araştırmasını isteyin.

<Tabs>
  <Tab title="Unexpected Behavior">
    Neyin yanlış olduğunu ve ne beklediğinizi tanımlayın:

    ```
    This function returns undefined instead of the user object. Debug it.
    ```

    Verdent şunları yapar:
    - Fonksiyon uygulamasını okur
    - Yürütme akışını izler
    - Kod yolunun nerede yanlış gittiğini belirler (eksik return ifadesi, hatalı koşul, async/await sorunu)
    - Açıklamalı bir düzeltme önerir
    - Regresyonu önlemek için test senaryoları önerir

    **Örnek:**

    ```
    The login form redirects to the home page even when credentials are invalid
    ```

    Verdent şunları yapar:
    - Oturum açma formu gönderim mantığını inceler
    - Kimlik doğrulama akışını izler
    - Hatayı belirler (yönlendirme, async doğrulama tamamlanmadan önce gerçekleşir)
    - Bir düzeltme önerir (yönlendirmeden önce doğrulamayı bekle)
  </Tab>

  <Tab title="Performance Issues">
    Performans analizi isteyin:

    ```
    The product search is slow when the database has 10,000+ products
    ```

    Verdent şunları yapar:
    - Arama sorgusu uygulamasını analiz eder
    - Verimsizliği belirler (N+1 sorguları, eksik veritabanı dizini, verimsiz algoritma)
    - Optimizasyon önerir (veritabanı dizini ekle, sorguları topla, sonuçları önbelleğe al)

    Performans hata ayıklama, uygulamanızı yavaşlatan algoritmalardaki, veritabanı sorgularındaki veya API yanıtlarındaki darboğazları belirlemeye yardımcı olur.
  </Tab>

  <Tab title="Execution Flow">
    Kodun nasıl yürütüldüğünü anlayın:

    ```
    Why does this API endpoint return a 500 error when the email parameter is missing?
    ```

    Verdent şunları yapar:
    - İstek işlemeyi uç noktadan doğrulamaya, oradan veritabanına izler
    - Hatanın nerede oluştuğunu belirler (tanımsız bir özelliğe erişim)
    - Hatanın neden oluştuğunu açıklar (özellik erişiminden önce eksik null kontrolü)
    - Savunmacı bir düzeltme önerir (kullanmadan önce parametreleri doğrula)

    Yürütme akışı izleme, kodunuzun izlediği yolu ve beklenen davranıştan nerede saptığını anlamanıza yardımcı olur.
  </Tab>
</Tabs>

<Tip>
  Hata mesajlarını veya yığın izlerini doğrudan sohbete yapıştırın. Verdent hatayı analiz eder, sorunlu kodu bulur ve neyin yanlış gittiğini belirli dosya yolları ve satır numaralarıyla açıklar.
</Tip>

---

## Hata mesajlarından ve günlüklerden teşhis

Hata mesajlarını, yığın izlerini veya günlük dosyalarını doğrudan sohbete yapıştırın. Verdent hatayı analiz eder, kaynak dosyayı ve satır numarasını belirler, nedeni açıklar ve bir düzeltme önerir.

<Tabs>
  <Tab title="Stack Traces">
    Hata mesajlarını ve yığın izlerini yapıştırın:

    ```
    TypeError: Cannot read property 'name' of undefined
        at UserProfile.render (UserProfile.jsx:45)
        at processComponent (react-dom.js:2103)
    ```

    Bunu Verdent'e yapıştırın:

    ```
    I'm getting this error: [paste stack trace]
    ```

    Verdent şunları yapar:
    - Hata türünü belirler (null/undefined erişiminden kaynaklanan TypeError)
    - Tam satırı bulur (`UserProfile.jsx:45`)
    - O konumdaki kodu okur
    - Neden olduğunu açıklar (veriler yüklenmeden önce user nesnesi tanımsız)
    - Düzeltmeler önerir:
      - Null kontrolü ekle: `if (!user) return <Loading />`
      - İsteğe bağlı zincirleme kullan: `user?.name`
      - Bileşeni render etmeden önce verilerin yüklendiğinden emin ol
  </Tab>

  <Tab title="Log Analysis">
    Analiz için günlük dosyalarını veya konsol çıktısını yapıştırın:

    ```
    Analyze these logs and tell me why the API requests are failing:
    [paste 50 lines of log output]
    ```

    Verdent şunları yapar:
    - Günlükleri hata kalıpları için tarar
    - Kimlik doğrulama başarısızlıklarını, ağ zaman aşımlarını veya veritabanı hatalarını belirler
    - Başarısızlığa yol açan olay dizisini izler
    - Hata kalıbına göre düzeltmeler önerir

    Günlük analizi, birden fazla başarısızlık arasındaki kalıpları belirlemeye ve hatalara yol açan olay dizisini anlamaya yardımcı olur.
  </Tab>

  <Tab title="Multi-Step Debugging">
    Karmaşık sorunlar için Verdent çok adımlı hata ayıklama kullanır:

    1. **Hata günlüklerini analiz et** ve başarısızlık noktasını belirle
    2. **İlgili kodu oku** ve uygulamayı anla
    3. **Yürütme akışını izle** ve sorunların nerede oluştuğunu bul
    4. Kod örnekleriyle **düzeltmeler öner**
    5. Regresyonu önlemek için **testler oluştur**

    **Örnek:**

    ```
    The shopping cart total is sometimes incorrect. Here are the error logs: [paste logs]
    ```

    Verdent şunları yapar:
    1. Günlükleri analiz eder ve hatanın ne zaman oluştuğunu belirler (indirim kodları uygulandığında)
    2. İndirim hesaplama mantığını okur
    3. Hatayı belirler (indirim, vergiden sonra değil önce hesaplanıyor)
    4. Bir düzeltme önerir (hesaplama adımlarını yeniden sırala)
    5. Test senaryoları önerir (indirimli sepet, vergili sepet, her ikisiyle sepet)
  </Tab>
</Tabs>

---

## En iyi uygulamalar

<Accordion title="Testleri erken oluşturun">
  Özellikleri geliştirirken testleri yazın, tamamlandıktan sonra değil. Verdent, yeni fonksiyonlar veya bileşenler oluşturduktan hemen sonra testler oluşturabilir.
</Accordion>

<Accordion title="Mevcut testleri stil rehberi olarak kullanın">
  Verdent, projenizin test kalıplarına uyar. Verdent'in kurallarınıza uyan testler oluşturması için tutarlı test yapısı koruyun.
</Accordion>

<Accordion title="Uç durumlar için testleri açıkça isteyin">
  Verdent'ten sınır koşullarını, hata senaryolarını ve olağandışı girişleri test etmesini isteyin: "Geçersiz girişler ve sınır değerler için uç durumlar dahil testler yaz."
</Accordion>

<Accordion title="Hata mesajlarını doğrudan yapıştırın">
  Hataları başka sözcüklerle ifade etmeyin. Doğru teşhis ve daha hızlı çözüm için tam yığın izini yapıştırın.
</Accordion>

<Accordion title="Beklenen ile gerçek davranışı tanımlayın">
  Hata ayıklarken, ne olmasını beklediğinizi ve gerçekte ne olduğunu açıkça belirtin. Bu bağlam, Verdent'in kök nedeni belirlemesine yardımcı olur.
</Accordion>

<Accordion title="Karmaşık özellikler için çok geçişli test kullanın">
  Kritik özellikler için çok geçişli döngülerle kapsamlı test oluşturma isteyin: "Ödeme modülü için kapsamlı testler oluştur ve hepsinin geçtiğini doğrula."
</Accordion>

<Accordion title="Yeniden düzenlemeden sonra test edin">
  Kodu yeniden düzenledikten sonra, işlevselliğin korunduğunu doğrulamak için testler isteyin: "Yeniden düzenlenen kimlik doğrulama modülünün doğru çalıştığını doğrulamak için testler oluştur."
</Accordion>

<Accordion title="Hata ayıklamayı test oluşturmayla birleştirin">
  Bir hatayı düzelttikten sonra, regresyonu önlemek için bir test isteyin: "Bu hatanın bir daha olmamasını sağlayan bir test yaz."
</Accordion>

---

## Ayrıca bkz.

<CardGroup cols={2}>
  <Card title="Yeni kod yazma" icon="code" href="/docs/verdent-for-vscode/task-based-guides/writing-code">
    Verdent'in yapay zeka yardımıyla yeni özelliklerin nasıl yazılacağını öğrenin
  </Card>

  <Card title="Kodu yeniden düzenleme" icon="wrench" href="/docs/verdent-for-vscode/task-based-guides/refactoring">
    Güvenli yeniden düzenleme iş akışlarıyla kod kalitesini iyileştirin
  </Card>
</CardGroup>
