Verdent Docs
Görev tabanlı kılavuzlar

Test etme ve hata ayıklama

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.

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.


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.

Birim test çerçeveleri:

test('sum returns correct result', () => {
  expect(sum(2, 3)).toBe(5);
});
const assert = require('assert');

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

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

Ç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
  • 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.

  • 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.

  • 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.

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

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

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.


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.

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)

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.

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.

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.


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.

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

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.

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)

En iyi uygulamalar

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.

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.

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."

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.

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.

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."

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."

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."


Ayrıca bkz.